Ansible 最关键的就是:先告诉它要操作哪些机器,这就是通过 inventory(主机清单) 来指定的。
1. inventory 文件(主机清单)
默认位置是 /etc/ansible/hosts
,也可以自己写一个,比如 inventory.ini
。
最简单的写法:
[webservers]
192.168.1.10
192.168.1.11
[dbservers]
192.168.1.20
这里 [webservers]
、[dbservers]
是 主机组名字,随便起。
192.168.1.10
就是目标机器的 IP 地址。- 也可以写域名,比如
web01.example.com
。
2. 在 Playbook 里指定主机
- hosts: all
become: yes
tasks:
- name: 创建用户 devuser
user:
name: devuser
shell: /bin/bash
state: present
这里的 hosts: all
就是告诉 Ansible → 在 inventory 文件里所有机器 上执行。
如果你只想在 Web 服务器执行,就写:
- hosts: webservers
如果只在数据库服务器执行,就写:
- hosts: dbservers
3. 临时指定(不用写 playbook)
你也可以直接在命令里指定组或主机:
ansible webservers -m ping
意思是:对 [webservers]
组里的所有机器执行 ping
模块。
或者只针对单台机器:
ansible 192.168.1.10 -m shell -a "uptime"
4. 主机参数
在 inventory
里,还能给机器加参数:
[webservers]
192.168.1.10 ansible_user=root ansible_port=22
192.168.1.11 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_user
→ SSH 登录用户名ansible_port
→ SSH 端口ansible_ssh_private_key_file
→ 指定私钥
5. 逻辑关系
把这几个点串起来:
- inventory 里写:有哪些机器,怎么登录
- playbook 里写:在哪些组(hosts)上执行任务
- tasks 里写:具体要干啥(用模块)