ansible初体验

ansible,使用ssh通信,不需要安装agent,只要在控制端安装服务,配置相关主机清单inventory,就可以对被控主机进行操作,执行相关命令。
和saltstack相比,功能基本类似,都是python语言开发,saltstack需要专门的agent,在minion上配置master信息,才能进行识别,master和minion之间通信,是通过key来实现,使用TCP 4506和4506端口。而ansible是通过ssh进行通信,不需要安装agent,只需要在控制端进行配置即可。

ansible是redhat产品,需要使用epel进行安装

sshpass是可以直接输入密码,不需要进行交互式操作的
sshpass -p *** ssh-copy-id ****,直接将主机密钥复制到被控端

[root@Server129 yum.repos.d]# ansible --version
ansible 2.6.20
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

在升级ssh之前,都是使用dsa进行密钥认证,发现升级之后,即使把公钥拷贝过去之后,也还是不行,所以需要进行查看原因,使用ssh -vvv root@192.168.64.134,可以打印出debug信息日志,通过分析debug日志信息,就能发现,报错是因为需要rsa认证密钥
debug1: Will attempt key: /root/.ssh/id_rsa
debug1: Will attempt key: /root/.ssh/id_ecdsa
debug1: Will attempt key: /root/.ssh/id_ecdsa_sk
debug1: Will attempt key: /root/.ssh/id_ed25519
debug1: Will attempt key: /root/.ssh/id_ed25519_sk
debug1: Will attempt key: /root/.ssh/id_xmss

需要这些类型的,才能进行免密钥认证

ansible安装完成后,开始创建主机清单,inventory,通过对主机进行分组,不同的主机执行不同的操作。
[root@Server129 testabsible]# cat inventory
[minion]
salt-minion

就只写了一个主机,使用的是主机名,这个地方主机名一定要能够解析到,如果解析不到,无法执行模块命令,这个地方和saltstatck不一样,saltstack如果写主机名,只是一个minion_id标识,不需要进行域名解析,这个地方是需要的。
其中[minion]代表的是一个主机组,是一群有相同特征的主机的集合,在该主机组下面,可以编写不同的主机信息,正常的格式是:
主机/IP地址 ansible_ssh_port= ansible_ssh_user= ansible_ssh_password=

一般不建议直接写密码,所以还是使用ssh密钥对来实现比较好,也就出现了上面的密钥登录问题

写好之后,在使用ansible对被控端进行操作的时候,需要制定主机配置文件,也就是刚才做的主机清单,-i 就是指定主机配置文件,-m 是使用模块module,这里我们使用ping模块测试一下,然后后面就是可以写主机清单里面的主机,只要能根据标识找到主机,就能执行,可以写主机组的名称,就会对该主机组下面的所有机器进行操作,可以写单个主机的名称,主机名称需要能解析,也可以写all,对整个清单里面的所有主机和主机组做操作。

[root@Server129 testabsible]# ansible -i inventory -m ping minion
salt-minion | SUCCESS => {
"changed": false,
"ping": "pong"
}
[root@Server129 testabsible]# ansible -i inventory -m ping salt-minion
salt-minion | SUCCESS => {
"changed": false,
"ping": "pong"
}
[root@Server129 testabsible]# ansible -i inventory -m ping all
salt-minion | SUCCESS => {
"changed": false,
"ping": "pong"
}

对python有点了解的,就能看出来,返回的是一个字典,后续可以通过python接口解析,返回执行情况

 

posted @ 2020-08-04 14:14  波波波波波  阅读(178)  评论(0编辑  收藏  举报