温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用Ansible管服务器

发布时间:2026-09-01 20:12:39 来源:亿速云 阅读:94 作者:小樊 栏目:系统运维

下面用「从零到可用」的思路,带你用 Ansible 管理服务器。内容偏实战,不堆概念。


一、Ansible 是什么(一句话)

Ansible 是 SSH + YAML,你写“剧本(playbook)”,它帮你批量在服务器上执行命令、装软件、改配置。

优点

  • 无 agent(客户端不用装东西)
  • 用 SSH 就行
  • YAML 易读

二、基础环境准备

1. 控制机(你自己的电脑 / 跳板机)

# Linux / macOS
pip install ansible

# 或
apt install ansible

# 验证
ansible --version

Windows 不推荐做控制机,用 WSL 最省事


2. 被管服务器

  • 开启 SSH
  • 控制机可免密登录(推荐)
ssh-copy-id user@server_ip

三、核心概念(必须懂)

概念 说明
Inventory 服务器清单
Module 执行单元(apt/yum/copy/service…)
Playbook YAML 自动化脚本
Task 一个操作
Role 可复用的 playbook 包

四、第一个 Inventory(主机清单)

# hosts.ini
[web]
192.168.1.10
192.168.1.11

[db]
192.168.1.20

[all:vars]
ansible_user=ubuntu
ansible_python_interpreter=/usr/bin/python3

测试连通性:

ansible all -i hosts.ini -m ping

五、Ad-hoc(临时命令,最常用)

# 查看 uptime
ansible web -i hosts.ini -a "uptime"

# 安装 nginx
ansible web -i hosts.ini -m apt -a "name=nginx state=present" -b

# 重启服务
ansible web -i hosts.ini -m service -a "name=nginx state=restarted" -b

-b = sudo


六、Playbook(正式管理方式)

示例:装 nginx + 启动

# deploy_nginx.yml
- hosts: web
  become: yes
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present
        update_cache: yes

    - name: Start nginx
      service:
        name: nginx
        state: started
        enabled: true

执行:

ansible-playbook -i hosts.ini deploy_nginx.yml

七、文件分发 & 配置管理

- name: Copy config
  copy:
    src: ./nginx.conf
    dest: /etc/nginx/nginx.conf
    owner: root
    mode: '0644'
  notify: Restart nginx

handlers:
  - name: Restart nginx
    service:
      name: nginx
      state: restarted

八、变量(非常重要)

group_vars/web.yml

nginx_port: 80

playbook 使用

- name: Print port
  debug:
    msg: "Port is {{ nginx_port }}"

九、Role(项目化必备)

ansible-galaxy init nginx

结构:

roles/nginx/
├── tasks/main.yml
├── handlers/main.yml
├── templates/nginx.conf.j2
└── vars/main.yml

调用:

- hosts: web
  roles:
    - nginx

十、生产常用模块速查

模块 用途
apt/yum 装软件
copy 传文件
template 模板渲染
lineinfile 改某一行
service 服务管理
user 用户管理
cron 定时任务
git 拉代码

十一、常见坑

  • Python 版本不对 → 指定 ansible_python_interpreter
  • sudo 没权限 → become: yes
  • SSH 超时 → 改 ansible.cfg

十二、下一步你可以学

  • Ansible Vault(密码管理)
  • AWX / Tower(Web 界面)
  • CI/CD 集成(GitLab + Ansible)

如果你愿意,我可以:

  • 给你一套 真实服务器初始化 playbook
  • 或按 Linux / 云服务器 / K8s 场景细讲

你主要管什么服务器?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI