ansible运维工具(5分钟熟悉Ansible集群运维工具)

【写在最前】我们在平时的编程学习中,或多或少,或早或晚,都要接触到Linux服务器;当你工作中接触的服务器比较多(或者你致力于成为一名合格的linux集群运维人员),那么Ansible就是你必须要掌握的维护工具!本文致力于成为(或许已经是)全网最简介的ansible工具教程,让我们花5分钟时间搞懂ansible运维工具,相信聪明的你,看完一定会有收获!

ansible运维工具(5分钟熟悉Ansible集群运维工具)(1)

【正文开始】

为什么要用Ansible?

假设你有100台服务器,需要先安装同样的业务软件,再进行相似的配置文件修改,如果靠人工每台挨个去操作,不仅效率低下,而且极易出错。

Ansible,就是为Unix/Linux集群运维而生!

什么是Ansible?Ansible是一个集群运维管理工具,这是一款入门非常简单但是功能却极其强大的软件,仅靠SSH就能正常运行各种定制化任务。

跟普通的bash脚本相比,Ansilble有一个非常重要的特点,就是能保证任务操作的“幂等性”(可以重复执行任务,并且执行结果保持不变)

# 准备工作(制作SSH免密登录环境)

假设: 想通过192.168.1.2登录 1.3,那么在1.2上执行如下两条命令:ssh-keygen ssh-copy-id xxx@192.168.1.3注1:第1条命令一路回车即可在本地生成密钥对(在本地/home/xxx/.ssh/下生成两个文件:id_isa.pub 和 id_rsa)注2:第2条命令是将本地公钥发送到1.3上(需要输入2遍xxx用户的密码)

# 安装 ansible

sudo yum -y install ansible

注:安装后会自动生成 /etc/ansible 目录(内含 ansible.cfg配置文件)

# 配置(管理)服务器节点ansible.cfg中第一行配置内容为:#inventory = /etc/ansible/hosts这个 inventory 表示是服务器节点配置文件地址(默认为/etc/ansible/hosts)

当然,你也可以在具体的ansible命令中通过 -i 参数显式指定其他配置文件

hosts配置文件内容举例:

[group1]192.168.1.3

192.168.1.4

192.168.1.5

注:这里的group1表示服务器群组的名字,你可以随便定义

# ansible基本用法:

需求举例:在远端N台服务器上同时安装nginx软件实现命令:

ansible -i /etc/ansible/hosts group1 -b --become-user=root \ -m shell -a 'yum -y install nginx'

参数释义:-i: 指定host服务器配置清单文件的路径(默认是在/etc/ansible/hosts,可选项)-b: become“成为”,即切换成root用户去执行命令-m: 指定module模块名称,比如 ping ,copy 等-a: 用于将参数传递给定义的模块m

另一个例子:

ansible group1 -m ping

可借助ping模块实现group1群组所有服务器的网路连通性检测。

# ansible进阶用法:

1)保持操作幂等

联想上面的基本语法:

ansible group1 -m shell -a 'yum -y install nginx'

这种风格有一个缺点:不能保证操作幂等性。

我们来改进一下:

ansible group1 -m yum -a 'name=nginx state=installed'

执行结果为:

127.0.0.1 | success >> {"changed": false}

我们看到结果中有: changed:false 表示远端服务器已经安装过nginx了,不会再重复安装

2)使用 playbook剧本、task任务、handler处理程序

playbook剧本可以支持运行多个task任务,并提供一些更高级的功能。

handlers处理程序与task任务基本相同,但只有当另一个任务调用它时才会运行(例如在服务安装成功后,再启动该服务)

在ansible中,剧本相关的配置都使用Yaml文件定义(必须使用空格缩进,不允许使用tab键缩进,故建议将你的IDE工具的tab按键输出替换成4个空格)。 我们继续以安装nginx并启动nginx为例进行讲解: 定义剧本:

nginx.yml 内容如下:

- hosts: group1become: yesbecome_user: roottasks:- name: “安装nginx”yum:pkg: nginxstate: installedwhen: successnotify:- Start Nginx handlers:- name: Start Nginxservice:name: nginxstate: started

运行剧本:

$ ansible-playbook nginx.yml

此时,hosts集群配置文件中的group1群组下的3台服务器上的nginx软件,就已经全部装好啦。

【全文完】--------------------------------十年技术沉淀,只做原创文章;及时关注作者,成就大牛之路!如果您对文章内容有不同意见或独到见解,欢迎大家在评论区留言讨论,作者也会第一时间进行互动回复。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页