环境信息
代码语言:javascript复制[ansible-server]
主机名 = ansible-server
系统 = centos-7.3
地址 = 192.168.56.105
软件 =
ansible-2.4.2.0
[zabbix-agent]
主机名 = ansible-agent1
系统 = centos-7.3
地址 = 192.168.56.108
软件 =
[zabbix-agent]
主机名 = ansible-agent2
系统 = centos-7.3
地址 = 192.168.56.109
软件 =
清单配置
1.ansible有多种部署方法,但一般使用yum安装即可
yum -y install ansible
2.安装后的版本可能略微不同,但功能差异不大
ansible --version
3.ansibled的配置文件很简单,只有2个。ansible.cfg来管理ansible的各项设置,hosts文件来管理主机清单
rpm -qc ansible
4.先来操控一台机器试试,在hosts文件中添加如下,告诉ansible被控制机器的相关信息
代码语言:javascript复制agent-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root ansible_ssh_pass='123456'
5.agent-1是别名,后续几个参数都很明显,IP 用户名 密码。别名在整个文件中,是不能重复的,不然后续的配置,将会不生效,只取第一次配置,下面是示例,不用跟着做。
代码语言:javascript复制#这种是可以的,用于控制多个用户
agent-root-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root ansible_ssh_pass='123456'
agent-admin-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=admin ansible_ssh_pass='123456'
#这种是不行的,虽然用户不一样,但主机名一样,第二个配置会不生效
agent-root-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root ansible_ssh_pass='123456'
agent-root-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=admin ansible_ssh_pass='123456'
#主机名不一样,但后续配置一样,这样也是可以的。多用于不同分组,这个后续会体现
agent-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root ansible_ssh_pass='123456'
test-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=admin ansible_ssh_pass='123456'
模块测试
1.执行ping模块,来测试机器是否可以连通
ansible agent-1 -m ping
2.翻译为如下,这里说因为启用了主机秘钥检查,而sshpass不支持此功能
代码语言:javascript复制3.这里有2种解决方法,可以尝试ssh对方主机一次,将对方的公钥记录下来
ssh root@192.168.56.108
cat /root/.ssh/known_hosts
也可以修改ansible.cfg文件,打开注释,这样就不检查主机公钥了。推荐这种方式,比较简单易用
代码语言:javascript复制host_key_checking = False
4.再次执行,可以看到返回SUCCESS,是连接成功的。-m是指定模块的意思,这里是对agent-1这个主机使用ping模块
ansible agent-1 -m ping
再往下看有2个参数,change的值为false,表示没有修改任何东西。ping的值为pong,表示连接成功。ansible的ping命令和普通ping并不一样,走的是SSH协议
秘钥认证
上述例子是用的账号密码连接,这样有一些安全隐患,毕竟密码是直接写到配置文件里的,可以直接看到。另外当密码变动时,还要修改配置文件,比较繁琐。
1.先一路回车生成私钥与公钥,再将私钥发送到对端机器,就可以进行免密登陆或者操作了。
ssh-keygen
ssh-copy-id root@192.168.56.108
2.测试能否直接ssh登陆
ssh root@192.168.56.108
3.修改hosts文件,去掉密码选项就可以用秘钥操作了
vim hosts
agent-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root
ansible agent-1 -m ping