配置管理工具--Ansible入门

开发 开发工具
Ansible是一种配置管理工具,和Salt、Chef、Puppet功用一样。对于系统管理员,平时有不少工作内容是给服务器安装软件,更改配置等。

Ansible是平时工作中经常使用的一款软件,特别有些命令需要同时在众多服务器运行时,Ansible就显得不可或缺。准备写几篇文章,做成一个系列介绍Ansible,主要覆盖工作中常用的场景,力求简洁实用。本篇是开篇。

Ansible是一种配置管理工具,和Salt、Chef、Puppet功用一样。对于系统管理员,平时有不少工作内容是给服务器安装软件,更改配置等,服务器两三台的话,单个登录,执行安装配置命令还可以应付,几十上百台的话,可能就力不从心了,这时就需要配置管理工作如Ansible的帮助,你可以像管理一台服务器那样管理成百上千台服务器,想想就舒服。

一、工作原理

Ansible基于Python的paramiko模块开发(paramiko模块是纯Python的SSH协议实现),Ansible通过SSH协议推送自身模块到被管理服务器,执行完成后自动删除并退出。这些模块就是实现特定功能的代码(不限于Python代码实现),实际上只要可以返回要求格式的json格式就可以,对实现模块的语言没有要求。

一句话概括,Ansible依赖paramiko实现的SSH协议推送实现特定功能的模块到目标服务器执行,完成后删除并退出。

二、相关概念

  • 模块:实现特定功能的代码,安装ansible会自带,也可以自己实现。
  • 插件:模块功能的补充,有连接插件、邮件插件等。
  • Playbook:即编排脚本,一些复杂的安装维护工作,比如有很多依赖的安装配置,可以使用Playbook脚本。
  • Inventory:定义Ansible管理的主机,配置到Inventory文件的服务器Ansible才可以感知到。

三、安装配置

(1)安装

很多Linux发行版的包管理工具中都内置Ansible,笔者使用的系统是CentOS 7.9(Python版本为3.6.8),可以使用“yum install ansible”来安装,但是包管理工具安装的版本一般比较老,这里使用pip命令来安装,有一点要注意,因为Python 2.7已经不再维护,这里使用Python3来安装Ansible。

python3 -m pip install ansible

这样就完成了管理主机的Ansible安装。被管理主机虽然不需要像Salt那样安装agent,但是SSH和Python还是需要的,如果没有,记得安装。

(2)配置

  • ansible.cfg:Ansible的配置文件,可以将一些默认选项写到里面。
  • inventory:包含需要管理的服务器信息,比如下面。
[db]
192.168.52.128

[web]
192.168.52.131
192.168.52.132

四、命令使用

Ansible主要有两种使用场景,简单的命令执行可以直接运行“ansible”命令,不需要“playbook.yaml”文件,比如查找服务器的当前负载。执行命令之前,配置被管理主机的SSH免密登录,这样可以减少很多工作。使用上面的inventory文件。

[aneirin@a ansible]$ ansible -i inventory web -m command -a uptime
192.168.52.131 | CHANGED | rc=0 >>
15:52:36 up 8:38, 2 users, load average: 0.46, 0.83, 0.66
192.168.52.132 | CHANGED | rc=0 >>
15:52:37 up 8:40, 2 users, load average: 0.14, 0.43, 0.35

ansible命令参数包含两个部分:“-i inventory web”指明要操作的对象为inventory文件中的web主机组;“-m command -a uptime”,使用command模块,模块参数为“uptime”。

工作中一般这样使用,创建一个工作目录:ansible-tasks,目录中创建如下文件。

[aneirin@host ansible-tasks]$ tree 
.
├── ansible.cfg
└── hosts
0 directories, 2 files

ansible.cfg:

[aneirin@host ansible-tasks]$ cat ansible.cfg 
[defaults]
host_key_checking = False
inventory = hosts

上面的命令便可以这样运行:“ansible web -a uptime”,因为command模块是ansible的默认模块,可以不用写,仅写参数就行了。

最后,将Ansible的工作目录“ansible-tasks”用类似git的版本管理工具管理起来,方便回退。

责任编辑:姜华 来源: 今日头条
相关推荐

2022-09-08 09:00:38

Ansible开源

2017-05-10 15:48:59

云平台云计算工具

2009-07-20 18:16:11

软件配置管理

2010-11-08 09:15:46

Puppet入门教程自动化

2021-11-10 09:00:00

工具Chef开发

2012-10-29 16:45:07

CentOS 6.2Puppet

2012-04-09 09:43:49

云计算云管理

2020-04-02 08:00:36

管理工具配置

2011-09-29 09:52:59

配置管理服务器Puppet

2011-10-09 13:49:51

2019-08-30 10:28:18

网络配置管理工具

2012-02-23 09:39:33

虚拟化桌面虚拟化V-Commander

2011-08-12 10:38:09

MongoDB

2020-10-30 11:18:47

网络技术工具

2020-09-30 14:05:22

网络管理

2009-04-24 21:13:45

服务器虚拟化Vmware

2012-12-06 11:31:40

虚拟化

2013-08-30 14:30:59

系统自动化自动化配置SaltStack

2012-03-12 09:31:23

虚拟化windows虚拟桌面虚拟化桌面
点赞
收藏

51CTO技术栈公众号