02Ansible入门

Ansible入门

定义主机清单

[ ~]# vim /etc/ansible/hosts
[test]
172.22.69.216 ansible_ssh_user=‘root‘ ansible_ssh_pass=‘‘
[web]
172.22.69.97 ansible_ssh_user=‘root‘ ansible_ssh_pass=‘‘

在主机清单中未定义的主机,无法使用ansible进行管理。

测试连通性

[ ~]# ansible test -m ping
172.22.69.216 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

test 是 /etc/ansible/hosts 中定义的主机

-m 指定模块

ping 是指定的模块,用于测试客户端是否能够连接,除此之外还有很多模块,比如shell,yum等

如果在/etc/ansible/hosts中没有指定主机的用户名和密码,就需要:

[ ~]# ansible test -m ping -u root -k -o 
# 手动输入密码

取消安全主机提示:

[ ~]# vim /etc/ssh/ssh_config
StrictHostKeyChecking no

不然每个客户机的第一次连接会提示

简洁输出

[ ~]# ansible test -m ping -o
172.22.69.216 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

-o 选项可以将输出结果放在同一行

思考:ping模块的原理

关闭web主机的sshd进程

[ ~]# systemctl stop sshd

进行ping连通性测试,结果是连接失败

[ tmp]# ansible web -m ping -o
172.22.69.97 | UNREACHABLE!: Failed to connect to the host via ssh: ssh: connect to host 172.22.69.97 port 22: Connection refused

结论:Ansible的ping模块并不是通过ICMP的ping,而是探测ssh程序是否连接。

相关推荐