5分钟熟悉Ansible集群运维工具
【写在最前】
我们在平时的编程学习中,或多或少,或早或晚,都要接触到linux服务器;
当你工作中接触的服务器比较多(或者你致力于成为一名合格的linux集群运维人员),那么ansible就是你必须要掌握的维护工具!
本文致力于成为(或许已经是)全网最简介的ansible工具教程,让我们花5分钟时间搞懂ansible运维工具,相信聪明的你,看完一定会有收获!
【正文开始】
为什么要用Ansible?
假设你有100台服务器,需要先安装同样的业务软件,再进行相似的配置文件修改,如果靠人工每台挨个去操作,不仅效率低下,而且极易出错。
Ansible,就是为UnixLinux集群运维而生!
什么是Ansible?
Ansible是一个集群运维管理工具,这是一款入门非常简单但是功能却极其强大的软件,仅靠SSH就能正常运行各种定制化任务。
跟普通的bash脚本相比,Ansilble有一个非常重要的特点,就是能保证任务操作的幂等性(可以重复执行任务,并且执行结果保持不变)
准备工作(制作SSH免密登录环境)
假设:想通过192。168。1。2登录1。3,那么在1。2上执行如下两条命令:
sshkeygen
sshcopyidxxx192。168。1。3
注1:第1条命令一路回车即可在本地生成密钥对(在本地homexxx。ssh下生成两个文件:idisa。pub和idrsa)
注2:第2条命令是将本地公钥发送到1。3上(需要输入2遍xxx用户的密码)
安装ansible
sudoyumyinstallansible
注:安装后会自动生成etcansible目录(内含ansible。cfg配置文件)
配置(管理)服务器节点
ansible。cfg中第一行配置内容为:
inventoryetcansiblehosts
这个inventory表示是服务器节点配置文件地址(默认为etcansiblehosts)
当然,你也可以在具体的ansible命令中通过i参数显式指定其他配置文件
hosts配置文件内容举例:〔group1〕
192。168。1。3
192。168。1。4
192。168。1。5
注:这里的group1表示服务器群组的名字,你可以随便定义
ansible基本用法:
需求举例:在远端N台服务器上同时安装nginx软件
实现命令:
ansibleietcansiblehostsgroup1bbecomeuserrootmshellayumyinstallnginx
参数释义:
i:指定host服务器配置清单文件的路径(默认是在etcansiblehosts,可选项)
b:become成为,即切换成root用户去执行命令
m:指定module模块名称,比如ping,copy等
a:用于将参数传递给定义的模块m
另一个例子:
ansiblegroup1mping
可借助ping模块实现group1群组所有服务器的网路连通性检测。
ansible进阶用法:
1)保持操作幂等
联想上面的基本语法:
ansiblegroup1mshellayumyinstallnginx
这种风格有一个缺点:不能保证操作幂等性。
我们来改进一下:
ansiblegroup1myumanamenginxstateinstalled
执行结果为:
127。0。0。1success{
changed:false
}
我们看到结果中有:changed:false表示远端服务器已经安装过nginx了,不会再重复安装
2)使用playbook剧本、task任务、handler处理程序
playbook剧本可以支持运行多个task任务,并提供一些更高级的功能。
handlers处理程序与task任务基本相同,但只有当另一个任务调用它时才会运行(例如在服务安装成功后,再启动该服务)
在ansible中,剧本相关的配置都使用Yaml文件定义(必须使用空格缩进,不允许使用tab键缩进,故建议将你的IDE工具的tab按键输出替换成4个空格)。
我们继续以安装nginx并启动nginx为例进行讲解:
定义剧本:
nginx。yml内容如下:
hosts:group1
become:yes
becomeuser:root
tasks:
name:安装nginx
yum:
pkg:nginx
state:installed
when:success
notify:
StartNginx
handlers:
name:StartNginx
service:
name:nginx
state:started
运行剧本:
ansibleplaybooknginx。yml
此时,hosts集群配置文件中的group1群组下的3台服务器上的nginx软件,就已经全部装好啦。
【全文完】
十年技术沉淀,只做原创文章;
及时关注作者,成就大牛之路!
如果您对文章内容有不同意见或独到见解,欢迎大家在评论区留言讨论,作者也会第一时间进行互动回复。