Ansible自动化运维详解

发布时间:2025-05-22 点击:10
系统运维
ansible作为今年来越来越火的一款开源运维自动化工具,通过ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事。
.
ansible自2012年发布以来,很快在全球流行,其特点如下:
1、ansible基于python开发,运维工程师对其二次开发相对比较容易
2、ansible丰富的内置模块,几乎可以满足一切要求
3、管理模式非常简单,一条命令可以影响上千台主机
4、无客户端模式,底层通过ssh通信
我们可以通过四种方式和ansible交互,我这里只研究了其中两种方式,应付日常工作足够了。分别如下:
1、ad-hoc命令集:user直接通过ad-hoc命令集调用ansible工具集来完成任务。
2、playbooks:user预先编写好ansible playbooks,通过执行playbooks中预先编排好的任务集,按序执行任务。
1、ansible工作集:
.
ansible工作集包含inventory、modules、plugins和api,其中,inventory(清单)用来管理设备列表,可以通过分组实现,对组的调用直接影响组内的所有主机;modules是各种执行模块,几乎所有的管理任务都是通过模块执行的;plugins提供了各种附加功能;api为编程人员提供一个接口,可以基于此做ansible的二次开发。
.
ansible可以通过单条命令或者配置文件来对多台主机进行控制及更改,下面将从安装及配置依次写出来。
2、playbook配置文件
.
playbook配置文件使用yaml语法,具有简洁明了、结构清晰等特点。playbook配置文件类似于shell脚本,是一个yaml格式的文件,用于保存针对特定需求的任务列表。上面介绍的ansible命令虽然可以完成各种任务,但是当配置一些复杂任务时,逐条输入就显得效率非常低下了。更有效的方案是在playbook配置文件中放置所有的任务代码,利用ansible-playbook命令执行该文件,可以实现自动化运维。yaml文件的扩展名通常为.yaml或.yml。
.
ansible的安装及配置
.
环境如下:
一、准备工作:
1、本地yum仓库:https://pan.baidu.com/s/1-ercvm6qaua4xqd_x5kwow 提取码: exnp 版本为:ansible 2.3.1.0
2、若本机联网,可指向互联网yum仓库
3、默认采用tcp 22进行与客户机进行通信,若有更改,需自行设置防火墙放行
二、安装ansible:
[root@ansible /]# mount /dev/sr0 /media/ # 挂载yum仓库[root@ansible /]# rm -rf /etc/yum.repos.d/* # 删除或移走yum目录中的其他配置文件[root@ansible /]# vim /etc/yum.repos.d/a.repo [aaa]baseurl=file:///mediagpgcheck=0[root@ansible yum.repos.d]# yum clean all #清除yum缓存[root@ansibleyum.repos.d]# yum -y install ansible #安装ansible[root@ansible yum.repos.d]# ansible --version #可以查看到此信息,说明安装成功ansible 2.3.1.0 config file = /etc/ansible/ansible.cfg ...................我这里采用了互联网yum仓库进行安装,即ansible 2.4.2.0。
.
安装已经完成,但是若要正常的使用ansible,还需要解决一个问题,就是在控制多台主机时,若要每执行一次命令或脚本都要输入一次对端密码的话,显得就很鸡肋,所以还需要创建ssh免交互登录,如下:
.
以下操作都在ansible服务器进行:
[root@ansible ~]# ssh-keygen -t rsa #在ansible服务器生成密钥对,执行后默认一直按回车即可generating public/private rsa key pair.enter file in which to save the key (/root/.ssh/id_rsa): #默认按回车enter passphrase (empty for no passphrase): #默认按回车enter same passphrase again: #默认按回车your identification has been saved in /root/.ssh/id_rsa.your public key has been saved in /root/.ssh/id_rsa.pub.the key fingerprint is: #默认按回车sha256:zhd2 kvbyxfpe4zkmddmthp6cjsuiez5m26qrkbfes root@ansiblethe key\\\'s randomart image is: #默认按回车 ---[rsa 2048]---- | o. .o*.o || . .. =o* || . ...= . ||. . . .o o || . o.. osooo. || o. o .ooo. || . = oo .... || o e .... ... || .o... .o=o | ----[sha256]----- #至此密钥对已经生成了,隐藏存在当前用户的宿主目录下。[root@ansible ~]# ls -a | grep ssh #查看.ssh[root@ansible ~]# cd .ssh[root@ansible .ssh]# ls #查看.ssh目录下的文件,有公钥和私钥id_rsa id_rsa.pub known_hosts[root@ansible ~]# ssh-copy-id root@192.168.1.20 #复制公钥到主机192.168.1.20root@192.168.1.20\\\'s #输入主机1.20的root用户密码[root@ansible ~]# ssh-copy-id root@192.168.1.30 #复制公钥到主机192.168.1.30root@192.168.1.30\\\'s #输入主机1.30的root用户密码#在实际生产环境中,不会使用root身份,更改一下复制公钥时指定的用户即可。[root@ansible ~]# ssh 192.168.1.20 #测试是否可以免密码登录last login: tue jul 23 08:11:39 2019 from 192.168.1.88[root@server1 ~]# exit #退出192.168.1.2的shell环境[root@ansible ~]# ssh 192.168.1.30 #测试是否可以免密码登录last login: tue jul 23 08:43:16 2019 from 192.168.1.88[root@server 2 ~]# exit #退出192.168.1.3的shell环境三、ansible配置:
inventory是ansible管理主机信息的配置文件,相当于系统的hosts文件功能,默认存放在/etc/ansible/hosts,在hosts文件中,通过分组来组织设备,ansible通过inventory来定义主机和分组,若不使用默认的/etc/ansible/hosts,可以通过ansible -i 新的inventory路径 来指定inventory,我这里直接采用默认的路径。
.
1、以分组的方式添加需要管理的主机:
.
正是管理之前,首先要编写hosts文件,因为ansible通过将设备列表以分组的方式添加hosts文件来实现对设备的管理。hosts文件中,[ ]包含的是组名,设备列表支持域名及ip地址,默认情况下,通过访问22端口(ssh)来管理设备,若目标主机使用了非默认的ssh端口,还可以在主机名称之后使用冒号加端口号标明,以行为分隔单位,也支持通配符。
.
[root@a

icu是哪的域名?icu域名值得投资吗?
市值一天蒸发近700亿,原来官网域名早有玄机?
微软通过pDOOH活动推广其云计算软件
音质最好的音乐播放器合集推荐大全
无法上传登录掉线十分着急望尽快处理
从域名保护出发,说说多个域名和seo该怎么权衡
合力泰现金流业绩双堪忧 转让三家子公司能否挽救?
红酒拼团小程序商城怎么玩?