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 → 指定私钥把这几个点串起来: