ansible简单实用

2021-08-02 17:49:59 浏览数 (1)

环境信息

代码语言: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

代码语言:javascript复制
ssh-copy-id root@192.168.56.108

2.测试能否直接ssh登陆

ssh root@192.168.56.108

3.修改hosts文件,去掉密码选项就可以用秘钥操作了 vim hosts

代码语言:javascript复制
agent-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root

ansible agent-1 -m ping

0 人点赞