Ansible自动化
ansible配置host文件
配置/etc/ansible/hosts文件 ansible的携带密码访问
ansible_ssh_host 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.
ansible_ssh_port ssh端口号.如果不是默认的端口号,通过此变量设置.这种可以使用 ip:端口 192.168.1.100:2222
ansible_ssh_user 默认的 ssh 用户名(后面ansible_su_pass 可以给root密码)
ansible_ssh_pass ssh 密码(这种方式并不安全,我们强烈建议使用 –ask-pass 或 SSH 密钥)
ansible_sudo_pass sudo 密码(这种方式并不安全,我们强烈建议使用 –ask-sudo-pass)
cat /etc/ansible/hosts
192.168.1.11 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='jack' ansible_su_pass='root_password'
不配做密码的话可以直接把key文件传输到另外一台服务器上进行ansible自动交互
生成公钥
.ssh/ 这个目录里面产生所需要的两把 Keys ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)
ssh-keygen -t rsa
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.42.163
配置自身也免密登入
ssh-copy-id localhost
查看服务器公钥
ssh-keyscan命令是一个收集大量主机公钥的使用工具。
ssh-keyscan 192.168.10.203
第一次ssh登入时key文件密钥会写到文件(进行公钥验证)里所以需要yes确认,这里也可以通过配置/etc/ssh/ssh_config文件
StrictHostKeyChecking no
也可以直接命令
ssh -o stricthostkeychecking=no
ansible测试
ansible all -m ping
考虑到ansible 的host文件里配置每台服务器密码的话太暴露,对host文件进行加密
cat /etc/ansible/hosts
[node1]
192.168.77.129 ansible_ssh_pass=123456
[node2]
192.168.77.130 ansible_ssh_pass=123456
[node3]
192.168.77.131 ansible_ssh_pass=123456
对文件加密这里需要输入加密密码
ansible-vault encrypt /etc/ansible/hosts
后续如要编辑ansible的host文件时
ansible-vault edit /etc/ansible/hosts2 --ask-vault-pass
执行ansible命令
ansible -i /etc/ansible/hosts node1 -m ping --ask-vault-pass