Ansible 最关键的就是:先告诉它要操作哪些机器,这就是通过 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
。- hosts: all
become: yes
tasks:
- name: 创建用户 devuser
user:
name: devuser
shell: /bin/bash
state: present
这里的 hosts: all
就是告诉 Ansible → 在 inventory 文件里所有机器 上执行。
如果你只想在 Web 服务器执行,就写:
- hosts: webservers
如果只在数据库服务器执行,就写:
- hosts: dbservers
你也可以直接在命令里指定组或主机:
ansible webservers -m ping
意思是:对 [webservers]
组里的所有机器执行 ping
模块。
或者只针对单台机器:
ansible 192.168.1.10 -m shell -a "uptime"
在 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
→ 指定私钥把这几个点串起来: