目 录CONTENT

文章目录

ansible简单管理其它主机

ZOUNAN
2022-03-13 / 0 评论 / 0 点赞 / 358 阅读 / 1,627 字
温馨提示:
本文最后更新于 2022-03-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

好久没玩ansible了,再来回顾一下使用过程。ansible只需要在ansible controller节点(操作机)安装即可,其它节点可以直接通过SSH协议进行连接操作。

1.安装

安装epel-release yum源

yum -y install epel-release 

安装ansible

yum -y install ansible

验证安装是否成功安装

rpm -qa | grep ansible

2.主机清单

ansible controller在对主机进行操作时,仅认为主机清单中定义的主机列表,即从主机清单中读取到主机列表时才可进行配置。主机清单用于ansible读取配置主机列表,实现主机分组功能。

主机清单存储位置:

vim /etc/ansible/hosts

比如常见分组(主机名需要能够解析),把web的服务器地址放在一个分组里,涉及特殊端口和主机名的形式:

[web]
192.168.31.220 
192.168.31.221:5222
web01

3.应用案例

案例1:ping

首先要对多主机之前实现免密登录:

ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''

传递公钥

ssh-copy-id 远程主机名称

比如我这里对192.168.31.220这台主机进行ping测试,-m后接模块名称:

ansible 192.168.31.220 -m ping

如果返回结果为pong,表明通了。注意:这里的ping其实是一种“假”ping,实际是使用ssh功能连接到客户端中,表明此服务器正常,并不是使用icmp返回数据包的形式。
image

案例2:cron时间同步

用法:

ansible 主机清单中IP或分组名称 -m 模块 -a "参数"

定义主机每小时与时钟源同步一次

ansible 192.168.31.220 -m cron -a 'name="test cron1" job="ntpdate ntp.aliyun.com" minute=0 hour=*/1'

请到远程查看主机结果,我这里在同一台机器上:

crontab -l

可以看到已经添加好定时任务。

案例3:copy同步文件

比如我有一个需求,需要把本地主机的/etc/hosts文件拷贝到目标主机的/tmp目录下,使用copy模块。用法:

ansible 主机清单中IP或分组名称 -m 模块 -a "参数"

copy模块应用(我这里已经事先定义好ansible hosts文件):

ansible blog.aoarasi.com -m copy -a "src=/etc/hosts dest=/tmp"
# 通过content直接提供文件内容,\n表示回车
ansible blog.aoarasi.com -m copy -a "content='hello world\n' dest=/tmp/a.txt"

image
执行成功后,到目标主机下确认一下结果,发现文件已经拷贝过去了。
image
内容拷贝也已经正常过去了
image

案例4:fetch模块

与copy类似,但是作用相反,可以将其它主机的文件拷贝到本地

ansible blog.aoarasi.com -m fetch -a "src=/etc/hostname dest=/tmp"

ansible会自己创建一个目标主机的目录,防止同名冲突。

案例5:yum 模块

# 安装zip软件包
ansible blog.aoarasi.com -m yum -a "name=unzip state=present"
# 升级zip软件包,软件名称可以是*,代表升级所有软件包
ansible blog.aoarasi.com -m yum -a "name=unzip state=latest"
# 卸载unzip软件包
ansible blog.aoarasi.com -m yum -a "name=unzip state=absent"
0

评论区