什么是 Inventory?
Ansible 可同时操作属于一个组的多台主机,组合主机之间的关系通过 Inventory 文件配置,默认的路径为 /etc/ansible/hosts
案例:
192.168.116.101
[webservers]
192.168.116.102
tianci.com
192.168.116.101 表示不属于任何组,就是一台服务器
[ ] 内的为组名,一个主机可以属于不同的组,一台服务器可以同时A 和 B两个组
主机可以是 IP地址 也可以是 域名
Ansible Inventory 如何指定连接端口库
- 如果连接的端口不是 22 ,需要指定对应的端口
1)修改Hosts 文件
- 在 Hosts 文件中,在域名或者IP地址,加上冒号端口号
例子:
[webservers]
192.168.116.102:8868
tianci.com:9963
Ansible Inventory 为主机起别名
- ip或域名太长,起个别名
name ansible_ssh_port=port ansible_ssh_host=ip
web ansible_ssh_port=22 ansible_ssh_host=192.168.116.102 ansible_ssh_host=web
参数:
name 别名
ansible_ssh_port= ssh连接的端口号
ansible_ssh_host= ssh连接的主机
ansible_ssh_user= ssh连接的用户
ansible_ssh_pass= ssh登录的密码
ansible_sudo_pass= sudo密码,普通用户,但是可以使用sudo获取权限
ansible_sudo_exe sudo执行的命令路径
ansible_connection 与主机的连接类型,例 local、ssh
ansible_ssh_private_key_file
ansible_shell_type 目标系统的shell 系统
name ansible_ssh_port=port ansible_ssh_host=ip ansible_ssh_user=user-name
web ansible_ssh_port=22 ansible_ssh_host=192.168.116.102 ansible_ssh_host=web
Ansible Inventory 分组内机器太多
[web servers]
192.168.116.[101:150]
[web servers]
www[a-e].tianci.com
Ansible——Inventory 分文件管理
- 当组特别多时,不好进行管理,所以需要份文件管理
- 一个文件就是一个组
- 在 /etc/ansible 目录下建立目录
- group_vars 存放分组信息,一个文件就是一个组,文件名就是组名
- host_vars 存放不分组的信息,散台
/etc/ansible/group_vars/webservers
/etc/ansible/group_vars/dbservers
Ansible Patterns
- 在 Ansible 中 Patterns 是指我们通过类正则表达式的方式,决定于那台主机进行交互
1) 指定Host机器
- 指定单个Host
ansible 192.168.116.103 -m ping
- all 或者星号(*)
ansible all -m ping
- 指定一组连续的机器
ansible 192.168.116.* -m ping
- 指定不连续的机器
ansible 192.168.116.103:192.168.116.105 -m ping
2) 指定组
- 指定单个组
ansible webserves -m ping
- 指定多个组
ansible webserves:dbservers -m ping
- 指定在 webservers组但是不在 dbservers组的
ansible webserves:!dbservers -m ping
- 指定同时在 webservers 组 和 dbservers组的
ansible webserves:&dbservers -m ping