前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible简单实用

ansible简单实用

原创
作者头像
陈不成i
修改2021-08-02 17:49:59
5770
修改2021-08-02 17:49:59
举报
文章被收录于专栏:ops技术分享

环境信息

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境信息
  • 清单配置
  • 模块测试
  • 秘钥认证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档