前言
????????本篇博客主要解釋Ansible主機清單的相關配置知識
一、inventory 主機清單
????????Inventory支持對主機進行分組,每個組內可以定義多個主機,每個主機都可以定義在任何一個或多個主機組內。
????????如果是名稱類似的主機,可以使用列表的方式表示各個主機。
vim /etc/ansible/hosts
[dbservers]
192.168.166.12:2222 #冒號后定義遠程連接端口,默認是ssh的22端口
192.168.166.1[1:3] #范圍是:192.168.109.131到192.168.109.133[root@localhost ansible]# ansible all -a 'date'
192.168.166.13 | CHANGED | rc=0 >>
2025年 05月 09日 星期五 15:22:44 CST
192.168.166.12 | CHANGED | rc=0 >>
2025年 05月 09日 星期五 15:22:44 CST[dbservers]
db-[a:f].example.org #支持主機名匹配 a~f
二、inventory中的變量
Inventory變量名 | 含義 |
ansible_host | ansible連接節點時的IP地址 |
ansible_port | 連接對方的端口號,ssh連 接時默認為22 |
ansible_user? | 連接對方主機時使用的主機名。 不指定時,使用執行ansible或ansible-playbook命令的用戶 |
ansible_passwd | 連接時的用戶的ssh密碼,僅在未使用密鑰對驗證的情況下有效 |
ansible_ssh_private_key_file | 指定密鑰認證ssh連接時的私鑰文件 |
ansible_ssh_common_args | 提供給ssh、sftp、 scp命 令的額外參數 |
ansible_become?? ? | 允許進行權限提升 |
ansible_become_method | 指定提升權限的方式,例如可使用sudo/su/runas等方式 |
ansible_become_user | 提升為哪個用戶的權限,默認提升為root |
ansible_become_password | 提升為指定用戶權限時的密碼 |
三、主機變量
#修改被管理客戶端192.168.166.14 ssh配置文件17行修改端口號
systemctl stop firewalld.service
setenforce 0
vim /etc/ssh/sshd_config
Port 2222
systemctl restart sshd
#這臺客戶端我沒有配置免密登錄
#修改Ansible管理服務器主機清單配置文件
vim /etc/ansible/hosts
[zyz]
192.168.166.14 ansible_port=2222 ansible_user=root ansible_password=123
#不建立將密碼直接寫入配置,不安全
ansible zyz -a 'date'
四、組變量
#刪除客戶端已有的免密登錄密鑰文件
#客戶端配置
cd
cd .ssh/
rm -rf authorized_keys
#ansible控制端配置
vim /etc/ansible/hosts
[webservers]
192.168.166.12
192.168.109.13
192.168.109.14
[webservers:vars]
#表示為 webservers 組內所有主機定義變量
ansible_user=root
ansible_port=22
ansible_password=123[root@localhost .ssh]# ansible webservers -a 'date'
192.168.166.14 | CHANGED | rc=0 >>
2025年 05月 12日 星期一 16:11:30 CST
192.168.166.12 | CHANGED | rc=0 >>
2025年 05月 12日 星期一 16:11:30 CST
192.168.166.13 | CHANGED | rc=0 >>
2025年 05月 12日 星期一 16:11:30 CST
[root@localhost .ssh]#

五、組嵌套
vim /etc/ansible/hosts
[webservers]
192.168.166.11
192.168.166.12
192.168.166.13
[dbservers]
192.168.166.14 ansible_user=root ansible_password=123
[webservers:vars]
ansible_port=22
ansible_user=root
ansible_password=123
[groups:children]
webservers
dbservers#表示為 webservers1 主機組中包含了webservers組和dbservers組內的所有主機