Ansible(3):ansible资源清单管理
Ansible(3):ansible资源清单管理
https://www.cnblogs.com/lmx1002/p/8339993.html
Inventory
文件通常用于定义要管理的主机的认证信息,例如ssh
登录用户名、密码以及key
相关信息。可以同时操作一个组的多台主机,组与主机组之间的关系都是通过inventory
文件配置。配置文件路径为:/etc/ansible/hosts
实际使用的时候可以编写多个Inventory文件,使用的时候用-i
参数临时指定就行。
这个文件不仅可以自己编写、编写多个。配置的时候不光可以使用本地的资源,也可以使用云端的资源。
inventory常用参数配置:
ansible_ssh_host # 目标主机地址
ansible_ssh_port # 目标主机端口,默认22
ansible_ssh_user # 目标主机用户
ansible_ssh_pass # 目标主机ssh密码
ansible_sudo_pass # sudo密码
ansible_sudo_exe #定义sudo路径
ansible_connection # 与主机的连接类型,比如:local,ssh或者paramiko
ansible_ssh_private_key_file # 私钥地址
ansible_shell_type # 目标系统的shell类型
ansible_python_interpreter # python版本
主机:
1、支持主机名通配以及正则表达式,例如web[1-3].wangxu.com
2、支持基于非标准的ssh端口,例如web.wangxu.com:6666
3、支持指定变量,对于个别主机的特殊配置,如登陆用户,密码等。
基于密码
#方式一、主机+端口+密码 [webservers] 172.16.1.7 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=‘123456' 172.16.1.8 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=‘123456' #方式二、主机+端口+密码[webservers] web[1:2].wangxu.com ansible_ssh_pass=‘123456' #方式三、主机+端口+密码 [webservers] web[1:2].wangxu.com [webservers:vars] ansible_ssh_pass='123456'
基于密钥连接,需要先创建公钥和私钥,并下发公钥至被控端
[root@blog ~]# #ssh-keygen [root@blog ~]# # ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7 [root@m01 ~]# cat hosts #方式一、主机+端口+密钥 [webservers] 172.16.1.7 172.16.1.8
#列出所有主机 [admin@pe-jira ~]$ ansible all --list-hosts hosts (8): 10.6.76.23 10.6.76.24 10.6.76.25 10.6.76.26 10.6.75.171 10.6.75.172 10.6.75.175 10.6.75.176 [admin@pe-jira ~]$ ansible all -m shell -a 'hostname' 10.6.75.171 | CHANGED | rc=0 >> ris-1 10.6.76.26 | CHANGED | rc=0 >> k8s-master 10.6.76.23 | CHANGED | rc=0 >> k8s-node-1 10.6.76.24 | CHANGED | rc=0 >> k8s-node-2 10.6.76.25 | CHANGED | rc=0 >> k8s-node-3 10.6.75.172 | CHANGED | rc=0 >> ris-2 10.6.75.175 | CHANGED | rc=0 >> mall-1 10.6.75.176 | CHANGED | rc=0 >> mall-2 [admin@pe-jira ~]$
主机组:
1、支持嵌套组,例如[wangxu:test],那么在wangxu模块下的组,都会被test包含
2、支持指定变量,例如[wangxu:vars]在下面指定变量
[wangxu] 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 [wangxu:vars] #相当于为所有成员做一个变量 ansible_ssh_pass=’123456’ [lbservers] 172.16.1.5 172.16.1.6 [webservers] 172.16.1.7 172.16.1.8 [servers:children] [lbservers] [webserver]
[admin@pe-jira ~]$ sudo tail -20 /etc/ansible/hosts ## db-[99:101]-node.example.com [test] 10.6.76.23 10.6.76.24 10.6.76.25 10.6.76.26 [ris] 10.6.75.171 10.6.75.172 [mall] 10.6.75.175 10.6.75.176 [wangxu:children] test ris mall [admin@pe-jira ~]$ ansible ris -m shell -a 'uptime' 10.6.75.172 | CHANGED | rc=0 >> 21:52:56 up 678 days, 23:41, 1 user, load average: 0.00, 0.01, 0.05 10.6.75.171 | CHANGED | rc=0 >> 21:52:56 up 678 days, 23:42, 1 user, load average: 0.00, 0.01, 0.05 [admin@pe-jira ~]$ ansible wangxu -m shell -a 'uptime' 10.6.75.171 | CHANGED | rc=0 >> 21:53:02 up 678 days, 23:42, 1 user, load average: 0.00, 0.01, 0.05 10.6.76.23 | CHANGED | rc=0 >> 21:53:02 up 36 days, 1:12, 1 user, load average: 5.60, 5.23, 5.24 10.6.76.26 | CHANGED | rc=0 >> 21:53:02 up 103 days, 6:03, 1 user, load average: 1.60, 1.70, 1.81 10.6.76.24 | CHANGED | rc=0 >> 21:53:02 up 36 days, 1:41, 1 user, load average: 3.33, 3.77, 3.31 10.6.76.25 | CHANGED | rc=0 >> 21:53:02 up 36 days, 1:10, 1 user, load average: 0.30, 0.21, 0.21 10.6.75.172 | CHANGED | rc=0 >> 21:53:03 up 678 days, 23:42, 1 user, load average: 0.00, 0.01, 0.05 10.6.75.175 | CHANGED | rc=0 >> 21:53:03 up 678 days, 23:41, 1 user, load average: 0.12, 0.06, 0.06 10.6.75.176 | CHANGED | rc=0 >> 21:53:03 up 678 days, 23:41, 1 user, load average: 0.00, 0.04, 0.05 [admin@pe-jira ~]$