Ansible自动化运维的安装及常用模块解释

(一)前言:

Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事。
Ansible自动化运维的安装及常用模块解释
我们可以通过四种方式和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的安装及配置

通过一个简单的环境把Ansible的配置及安装写下来,环境如下:
Ansible自动化运维的安装及常用模块解释
最终效果:可以通过Ansible server来控制server 1和server 2。
一、部署前工作:

1、若采用本地yum仓库安装,请下载我提供的本地yum仓库,提取码:buqy ,我提供的是Ansible 2.3.1.0版本。
2、若本机可上网,也可以直接将yum仓库指向互联网,可以安装Ansible 2.4.x.x版本。
3、默认采用TCP 22进行与客户机进行通信,若有更改,需自行设置防火墙,我这里为了方便,直接关闭了防火墙。
二、安装Ansible(二选一即可):

1、采用互联网yum仓库的安装方式:
Ansible自动化运维的安装及常用模块解释
2、采用我提供的本地yum仓库安装方式:
Ansible自动化运维的安装及常用模块解释
我这里采用了互联网yum仓库进行安装,即ansible 2.4.2.0。

安装已经完成,但是若要正常的使用Ansible,还需要解决一个问题,就是在控制多台主机时,若要每执行一次命令或脚本都要输入一次对端密码的话,显得就很鸡肋,所以还需要创建SSH免交互登录,如下:
以下操作都在Ansible服务器进行:
Ansible自动化运维的安装及常用模块解释
三、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端口,还可以在主机名称之后使用冒号加端口号标明,以行为分隔单位,也支持通配符。
Ansible自动化运维的安装及常用模块解释
配置完成后,可以针对hosts定义的组进行远程操作,也可以针对组中所指定的某一个或者多个主机操作,如下:
Ansible自动化运维的安装及常用模块解释
四、Ansible命令:
Ansible自动化运维的安装及常用模块解释
命令1、ansible:

ansible是生产环境中使用非常频繁的命令之一,主要应用在以下场景:

1.临时性的维护,没有规律,临时需要做的任务,也称为非固化需求。
2.临时一次性操作。
3.二次开发接口调用。
Ansible自动化运维的安装及常用模块解释
用法示例1(需要提前在/etc/ansible/hosts文件中定义web组):
Ansible自动化运维的安装及常用模块解释
用法示例2:
Ansible自动化运维的安装及常用模块解释
用法示例3:
Ansible自动化运维的安装及常用模块解释
ansible的返回结果非常友好,一般会用三种颜色来表示执行结果:红色、绿色和橘yellow(那个颜色被和谐了)。其中红色代表执行过程中有异常;橘yellow表示命令执行后目标有状态变化;绿色表示执行成功且没有对目标主机做修改。

命令2、ansible-doc:

ansible-doc用来查询ansible模块文档的说明,类似于man命令,针对每个模块都有详细的用法说明及应用案例介绍。
Ansible自动化运维的安装及常用模块解释
命令3、ansible-playbook:
ansible-playbook是日常应用中使用率最高的命令,类似于Linux中的sh或source命令,用来执行系列任务。其工作机制是:通过读取预先编写好的playbook文件实现集中处理任务。ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下(playbook.yml文件需要提前编写好,最好指定playbook.yml的绝对路径):
Ansible自动化运维的安装及常用模块解释
命令4、ansible-console:
ansible-console是ansible为我们提供的一款交互式工具,类似于Windows中的cmd及Linux中的shell。可以在ansible-console虚拟出来的终端上像shell一样使用ansible内置的各种命令,这为习惯于shell交互方式的用户提供了良好的使用体验,所有的操作与shell类似,而且支持tab键补全。具体操作如下:
Ansible自动化运维的安装及常用模块解释
五、Ansible中自带的模块介绍:

1、command模块:
Ansible自动化运维的安装及常用模块解释
Ansible自动化运维的安装及常用模块解释
2、shell模块(相当于万能模块,可以执行大多数命令):

shell模块在远程主机执行命令,相当于调用远程主机的shell进程,然后在shell下打开一个子shell运行命令。和command模块的区别是它支持shell特性,如管道符、重定向等。
Ansible自动化运维的安装及常用模块解释
3、copy模块:

Ansible自动化运维的安装及常用模块解释Ansible自动化运维的安装及常用模块解释
4、hostname模块:

Ansible自动化运维的安装及常用模块解释Ansible自动化运维的安装及常用模块解释
5、yum模块:
Ansible自动化运维的安装及常用模块解释
Ansible自动化运维的安装及常用模块解释
6、Service模块:
Ansible自动化运维的安装及常用模块解释
Ansible自动化运维的安装及常用模块解释
7、user模块:
Ansible自动化运维的安装及常用模块解释
[[email protected] ~]# ansible web -m user -a ‘name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment=“test user”’
#创建一个名为user1的用户
[[email protected] ~]# ansible web -m user -a “name=user1 remove=yes state=absent”
#删除刚才创建的user1用户
8、group模块:
Ansible自动化运维的安装及常用模块解释
Ansible自动化运维的安装及常用模块解释
9、mount模块:

Ansible自动化运维的安装及常用模块解释
Ansible自动化运维的安装及常用模块解释
10、cron模块:
Ansible自动化运维的安装及常用模块解释
[[email protected] ~]# ansible web -m cron -a ‘name=test user=root minute=*/2 job=“echo test >> /tmp/warrent.txt” state=present’
#添加一个计划任务测试一下
Ansible自动化运维的安装及常用模块解释
11、 script模块:

功能:在远程主机上执行主控端的脚本,相当于scp+shell组合。
用法如下:
Ansible自动化运维的安装及常用模块解释