【Liunx进阶操作】搭建和使用Ansible自动化运维工具

提示:为保证文章的正确性和实用性,文章内容可能会不定时优化改进,若您有建议或者文章存在错误请私信留言或评论指正💖😊💖。下面以CentOS7.9操作系统为例,介绍具体的操作步骤,如果本文对你有帮助,记得关注加收藏🤞。


1、文章前言

Ansible是基于Python开发的一款模块化工作的开源自动化配置管理平台,基于其拥有的各种功能模块,实现了批量系统配置、批量程序部署、批量运行命令等功能,大大简化了集群模式主机的重复配置动作。
Ansible批量化管理的操作实际都是基于ssh完成的,因此它不需要在被管理的主机上安装Agent等插件,仅需要选择一台主机安装Ansible软件,创建密钥对并将公钥复制到被管理的主机上,并和被管理的主机配置免交互登录即可。
如果离线环境安装Ansible可先在本地安装一个同操作系统版本联网的虚拟机,参考下面步骤,将Ansible及其依赖包保存至本地后拷出放到离线环境中安装。

2、操作步骤

2.1、配置epel仓库

Ansible软件包存放在epel仓库,默认不在yum仓库中,因此需要先部署epel-release连接epel仓库后再安装Ansible。
步骤一: 执行以下命令,查看系统当前是否有“Base.repo”的yum源配置,因为“epel-release”软件包默认存放在“Base.repo”yum源中。如果有,则执行步骤三,如果没有则参考步骤二获取相应系统版本的“.repo”文件。

ll /etc/yum.repos.d/

1
步骤二: 点此跳转阿里开源镜像站,根据自己实际的系统版本号下载对应的“.repo”文件到系统“/etc/yum.repos.d/”目录下。
2
步骤三: 执行以下命令,清理并重新建立元数据缓存。

yum clean all
yum makecache

3
步骤三: 执行以下命令,安装epel-release软件。

yum install -y epel-release.noarch

4
步骤四: 执行以下命令,查看“/etc/yum.repos.d/”目录下是否已经有epel仓库的配置文件,如果有,则说明epel-release软件安装完成并成功配置epel仓库。

ll /etc/yum.repos.d/

5

2.2、获取&安装Ansible软件包

步骤一: 若只是安装Ansible软件,则执行以下本步骤命令安装即可。若需要将Ansible及其依赖包保存到节点目录下,则执行步骤二及以后步骤 。

yum install -y ansible

678910
步骤二: 执行以下命令,创建软件包保存目录。

mkdir -p /home/Ansible_pkg

11
步骤三: 执行以下命令,检查Ansible及其依赖包并下载保存到“/home/Ansible_pkg”目录中。(downloadonly是yum的插件,若无法使用downloadonly参数请先执行yum -y install yum-download安装downloadonly插件)

yum install --downloadonly --downloaddir=/home/Ansible_pkg/ ansible

121314
步骤四: 执行以下命令,进入home目录,打包压缩所有软件包并赋予完全权限后,通过WinSCP等FTP工具拷出即可。

cd /home/
tar -cvf Ansible_pkg.tar Ansible_pkg/
chmod 777  Ansible_pkg.tar

15
步骤五: 软件包拷入离线环境解压后,进入Ansible及其依赖包所在目录,执行以下命令,在离线环境操作系统中安装Ansible。

rpm -ivh *.rpm

1617

2.3、配置Ansible服务端

步骤一: 执行以下命令,编辑“/etc/ansible/hosts”文件,输入“i”进入编辑模式,如下图添加被管理主机IP,然后按“Esc”键退出编辑模式,按“Shift”+“:”键进入末行模式,输入”wq!“保存并退出。(在配置文件中加入需要被Ansible管理的主机,主机支持分组管理,后续对主机组的配置会生效在主机组内所有主机上)

vim /etc/ansible/hosts

18
步骤二: 执行以下命令,在Ansible主机上创建自己的SSH密钥对。

ssh-keygen -t rsa -C "Ansible-key"

19
步骤三: 执行以下命令,将Ansible主机的公钥,上传到被管理的主机上。

ssh-copy-id root@被管理主机IP

20
步骤四: 执行以下命令,启动SSH密钥管理器,并托管私钥,实现免密码短语登录被管理的主机。(Ansible主机重启后失效,需重新启动)

ssh-agent bash
ssh-add /root/.ssh/id_rsa

21

2.4、调用模块执行具体操作

如下介绍最常用到的几个模块的使用方法,若需了解所有模块和模块的使用方式,可参考下面两条命令,查看Ansible帮助文档。
列出ansible所有支持的模块:

ansible-doc -l

查看具体模块的详细帮助信息:

ansible-doc -s 模块名称

2.4.1、copy模块

功能: 从Ansible主机上复制文件到被管理的主机。

参数说明
src目录&文件Ansible主机上的源目录或者文件
dest目录&文件源目录或者文件在被管理主机上的存放位置
owner用户名复制到被管理主机上的目录&文件的所属用户
group用户组名复制到被管理主机上的目录&文件的所属用户组
mode644&755&777复制到被管理主机上的文件的权限
backupyes&no当被管理主机存放路径下存在数据不相同的同名文件时,是否备份该文件后再复制
content文本&字符串指定文本内容直接在受控主机中生成文件

使用方法: 如下:

ansible testservers -m copy -a 'src=/home/123.sh  dest=/home/123/ owner=test group=test mode=777 backup=yes'
ansible testservers -m copy -a 'dest=/home/123/321.sh content="你好 世界!!!" backup=yes'

2223

2.4.2、fetch模块

功能: 从被管理的主机上复制文件到Ansible主机。

参数说明
src文件被管理主机上的文件
dest目录文件在Ansible主机上的存放位置
fail_on_missingyes&no远程源文件缺失或因为某些原因导致不能读取时,是否将任务设置为失败状态
flatyes&no改变文件的存放行为,默认为no。“dest”以“/”结尾时,flat=yes会直接将文件复制到“dest”所设置的目录,但当操作多个主机时,如果文件相同的话,则每个主机都会覆盖这个文件。

使用方法: 如下:

ansible testservers -m fetch -a 'src=/root/helloworld.sh  dest=/root/ fail_on_missing=yes flat=yes'
ansible testservers -m fetch -a 'src=/root/helloworld.sh  dest=/root/ fail_on_missing=yes flat=no'

24

2.4.3、command模块

功能: 在被管理的主机上执行命令,此模块为默认模块,但是不能识别“|”、“>”、“*”等特殊字符。

参数说明
chdir具体目录执行命令前先进入到指定目录下
creates目录&文件如果存在指定目录或文件将不运行后面命令
removes目录&文件如果存在指定目录或文件将运行后面命令
free_form命令在远程主机中执行的命令,此参数可不加

使用方法: 如下:

ansible 172.22.30.14 -m command -a 'pwd'
ansible testservers -m command -a 'pwd'
ansible testservers -m command -a 'chdir=/home pwd'
ansible testservers -m command -a 'creates=/home hostname'
ansible testservers -m command -a 'removes=/home hostname'

25

2.4.4、shell模块

功能: 在被管理的主机上执行命令或远程主机上的shell脚本,能够识别“|”、“>”、“*”等特殊字符。

参数说明
chdir具体目录执行命令前先进入到指定目录下
creates目录&文件如果存在指定目录或文件将不运行后面命令
removes目录&文件如果存在指定目录或文件将运行后面命令
free_form命令在远程主机中执行的命令,此参数可不加
executablesh&可执行文件的绝对路径指定执行环境,默认为sh

使用方法: 如下:

ansible testservers -m shell -a 'ps -ef |grep -i ssh |grep -v grep'
ansible testservers -m shell -a 'chdir=/root sh helloworld.sh;ls /home'

2627

2.4.5、script模块

功能: 将Ansible主机中写好的脚本在受控主机中执行。
使用方法: 如下:

ansible testservers -m script -a '/root/helloworld.sh'

28

3、总结

Ansible是一个在大规模主机或者集群模式下很好用的自动化执行工具,利用不同的模块实现不同的需求,诸如配置服务,修改配置文件,管理虚拟机、配置OpenStack 、docker管理等等,结合Python、Shell脚本完成批量配置。其安装配置并不复杂,但是若想更高效的利用起来,建议使用者有一定的编程基础,利用脚本结合Ansible完成更多复杂操作。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JueShiYingJun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值