Ansible 有三个重要的组件:
- Control Node: 安装了 Ansible 的节点. 可以在这个节点执行
ansible
或ansible-playbook
等命令. - Inventory: 按逻辑组织起来的被管理的节点列表. 在 Control Node 上创建 Inventory 清单来描述主机.
- Managed Node: 被管理的节点.
# pip 安装
$ pip install --no-index --ignore-installed --find-links=ansible_soft ansible
# yum(或者其他操作系统) 安装
$ yum -y install ansible
安装完成后查看版本
$ ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Nov 14 2023, 16:14:06) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
如果不是用 pip 安装, 那么在 /etc/ansible
目录下有如下内容:
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
修改 /etc/ansible/hosts
文件
$ /etc/ansible/hosts
[custom1]
172.18.207.67
172.18.207.68
172.18.207.69
[custom2]
172.18.207.51
172.18.207.52
172.18.207.53
...
也可以不用 /etc/ansible/hosts
文件, 直接创建新的
# yaml 格式
$ vim inventory1
custom1:
hosts:
172.18.207.67
172.18.207.68
172.18.207.69
custom2:
hosts:
172.18.207.51
172.18.207.52
172.18.207.53
...
# INI 格式
[custom]
172.18.207.67
172.18.207.68
172.18.207.69
[custom2]
172.18.207.51
172.18.207.52
172.18.207.53
...
ungrouped:
hosts:
mail.example.com:
webservers:
hosts:
foo.example.com:
bar.example.com:
dbservers:
hosts:
one.example.com:
two.example.com:
three.example.com:
east:
hosts:
foo.example.com:
one.example.com:
two.example.com:
west:
hosts:
bar.example.com:
three.example.com:
prod:
children:
east:
test:
children:
west:
# INI 格式
[webservers]
www[01:50:2].example.com # :2 是步长, 比如 01,03,05..., 不会出现 02,04,06
# yaml 格式
# ...
webservers:
hosts:
www[01:50].example.com: