博客园  :: 首页  :: 管理

环境:被控主机都是linux主机,不过好几种发行版本,但是笔者都还是设计了统一的标准

1、主控和被控端都是Linux操作系统,都是有ansible用户的

2、主控通过ssh-key的私钥登录到被控制端linux

3、被控制端linux上的ansible 有着一系列sudo命令,无密码sudo权限

 

每当有新的主机加入后,笔者都会进行ansible连接测试,主要基于Ad-hoc及playbook的方式进行测试两种方式

1、基于Ad-hoc方式,这里可以使用ping模块,能正常连接/连通,就会返回pong:

## 指定hosts文件,第一条不执行任何操作,只是列出匹配到的主机,第二条是使用ping模块进行连接测试
ansible all -i hostlist.txt --list-hosts
ansible all -i hostlist.txt -m ping

## 无hosts文件的方式,同样也是使用ping模块
ansible all -i 1.1.1.1, -m ping 
ansible all -i 1.1.1.1,2.2.2.2 -m ping
ansible -i 1.1.1.1, all  -m ping
ansible -i 1.1.1.1,2.2.2.2  -m ping 

2、基于playbook的方式,按理说除了测试连通性,还要测试是否有免密码sudo的功能,当然这里笔者只简单测试一下命令即可,个人建议的是使用ls或者pwd等非常通用的命令,如果同时要测试sudo免密码,只需要修改下方命令为sudo xxxxxx 即可

[ansible@qq-5201351 LinuxTest]$ cat linuxtest.yaml
---
- hosts: "{{hostid}}"
  tasks:
    - name: 1.connection test for linux
      #shell: command sudo systemctl status sshd
      shell: command ls

笔者测试了下,shell后面,去掉command也是可以的,最后就可以通过ansible-playbook命令进行测试了:

ansible-playbook -i  hosts   linuxtest.yaml  -e   "hostid=webservers,1.2.3.4"  -v

额外记录一下,对于像上面的ls命令执行后,最后的状态都是会changed,笔者这里显示changed=1,也就是连接并执行命令成功了

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/16793164.html