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

5分钟熟悉Ansible集群运维工具【写在最前】我们在平时的编程学习中,或多或少,或早或晚,都要接触到linux服务器;当你工作中接触的服务器比较多(或者你致力于成为一名合格的li

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

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

【正文开始】

为什么要用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: group1
become: yes
become_user: root
tasks:
– name: “安装nginx”
yum:
pkg: nginx
state: installed
when: success
notify:
– Start Nginx

handlers:
– name: Start Nginx
service:
name: nginx
state: started

运行剧本:

$ ansible-playbook nginx.yml

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

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

今天的文章5分钟熟悉Ansible集群运维工具分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/7859.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注