二、Ansible自动化运维实战-inventory主机清单
1.增加主机组
vim /etc/ansible/hosts
————————
[webserver]
host1
host2
—————————
ansible webserver -m ping -o 可以发现webserver组下的host1和host2同时被调用了
2.增加用户名和密码
vim /etc/ansible/hosts
————————
[webserver]
host[1:4] ansible_ssh_user='root' ansible_ssh_pass='123456' # 方便缺不安全
————————
ansible webserver -m ping -o
3.增加端口
请将host1的sshd程序端口修改成2222 一般用1024-65535之间的端口号,1024之前都被常见软件征用了
vim /etc/ssh/sshd_config
——————————
Port 2222
——————————
systemctl restart sshd # 这样别的主机用ssh远程登录需要输入正确的端口号才能连上
ssh root@192.169.56.139 -p 2222
vim /etc/ansible/hosts # ansible的hosts里添加端口号
——————————
192.168.56.139 ansible_ssh_user='root' ansible_ssh_pass='123456' ansible_ssh_port='2222'
——————————
4.组:变量
ansible内部变量可以帮助我们简化主机清单的设置
vim /etc/ansible/hosts
——————————————
[webserver]
host[1:4]
[webserver:vars] # 这样就不用在每个服务器后都写重复的密码
ansible_ssh_user='root'
ansible_ssh_pass='123456'
——————————————
这里的[webserver:vars]就是组:变量
常用变量
ansible_ssh_host 定义hsots ssh地址 ansible_ssh_host='192.168.1.100'
ansible_ssh_port 定义hosts ssh端口 ansible_ssh_port='3000'
ansible_ssh_user 定义hosts ssh认证用户 ansible_ssh_user='root'
ansible_ssh_pass 定义hosts ssh认证密码 ansible_ssh_pass='123456'
ansible_sudo 定义hosts sudo用户 ansible_sudo='www'
ansible_sudo_pass 定义hosts sudo密码 ansible_sudo_pass='pass'
ansible_sudo_exe 定义hosts sudo路径 ansible_sudo_exe='/usr/bin/sudo'
ansible_connection 定义hosts连接方式 ansible_connection='local'
ansible_ssh_private_key_file 定义hosts私钥 ansible_ssh_private_key_file='/root/key'
ansible_ssh_shell_type 定义hosts shell类型 ansible_ssh_shell_type='bash'
ansible_python_interpreter 定义hosts任务执行python路径 ansible_python_interpreter='/usr/bin/python2.6'
ansible_*_interpreter 定义hosts其他语言解析路径 ansible_*_interpreter='/usr/bin/ruby'
5.子分组
将不同的分组进行组合
vim /etc/ansible/hosts
————————————————
[apache]
host[1:2]
[nginx]
host[3:4]
[webserver:children] # 子分组
apache
nginx
[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='123456'
————————————————
ansible webserver -m ping -o
6.自定义主机列表
vim hostlist
————————————
[dockers]
host1
host2
[dockers:vars]
ansible_ssh_user='root'
ansible_ssh_pass='123456'
————————————
ansible -i hostlist dockers -m ping -o 这里-i是调用文件hostlist,dockers才是主机的组