自动化运维工具Ansible的搭建

一、什么是Ansible?

当下有许多的运维自动化工具(配置管理 ),例如:Chef、Ansible、SaltStack、Puppet、Fabric 等。

Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。

Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。

Ansible 特点:

部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台

Ansible 与 SaltStack的区别:

最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持

二、实验环境(rhel7.3版本)

  • firewalld和selinux均为disabled
  • Ansible(服务端) 172.25.70.1
  • Ansible(客户端) 172.25.70.2
  • Ansible(客户端) 172.25.70.3
    三、Ansible部署
    1、下载ansible的相关rpm包及其依赖包,并进行安装
[root@ansible1 ~]# ls
ansible-2.7.8-1.el7.noarch.rpm
libtomcrypt-1.17-25.el7.x86_64.rpm
libtommath-0.42.0-5.el7.x86_64.rpm
python2-crypto-2.6.1-13.el7.x86_64.rpm
python2-jmespath-0.9.0-1.el7.noarch.rpm
python-httplib2-0.9.2-0.1.el7.noarch.rpm
python-keyczar-0.71c-2.el7.noarch.rpm
python-paramiko-2.1.1-0.9.el7.noarch.rpm
sshpass-1.06-1.el7.x86_64.rpm
[root@ansible1 ~]# yum install -y *

自动化运维工具Ansible的搭建_第1张图片
2、编辑/etc/hosts解析文件

[root@ansible1 ~]# vim /etc/hosts
============================================
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.70.250 vits
172.25.70.1 ansible1
172.25.70.2 ansible2
172.25.70.3 ansible3

3、添加普通用户使用ansible

[root@ansible1 ~]# useradd devops
[root@ansible1 ansible]# echo redhat | passwd --stdin devops
[root@ansible1 ~]# su -
Last login: Sat Jun 22 02:28:00 CST 2019 from foundation13.ilt.example.com on pts/0
[root@ansible1 ~]# mkdir ansible
[root@ansible1 ~]# cd ansible/

4、编辑ansible.cfg文件

[root@ansible1 ansible]# vim ansible.cfg
[root@ansible1 ansible]# cat ansible.cfg 
[defaults]

inventory      = inventory

5、设置ansible主机

[root@ansible1 ansible]# vim inventory
[root@ansible1 ansible]# cat inventory 
[test]
ansible2

[db]
ansible3

[webservers:children]
test
db
文件的编写是很灵活的,又很多中写法。
这里列举4种方法:
<1>一个web组,组中有两个主机,分别的ansible1和ansible2
[web]
ansible1
ansible2
<2>一个web组,组中有很多主机,主机名只要是以ansible开头的即可
[web]
server*
<3>一个web组,组中有100个主机,主机名是ansible1-ansible100
[web]
ansible[1:100]
<4>两个组,一个web组,一个db组。web组中的主机为ansible1,db组中的主机为ansible2。
[web]
ansible1
[db]
ansible2

6、给ansible的客户端添加同样的devops用户,均设定密码为redhat

[root@ansible2 ~]# useradd devops && echo redhat | passwd --stdin devops
=========================================================
[root@ansible3 ~]# useradd devops && echo redhat | passwd --stdin devops

7、用户devops设置ssh免密登录

[devops@ansible1 ansible]$ ssh-keygen
[devops@ansible1 ansible]$ ssh-copy-id ansible2
[devops@ansible1 ansible]$ ssh-copy-id ansible3

自动化运维工具Ansible的搭建_第2张图片
自动化运维工具Ansible的搭建_第3张图片
8、测试ansible

查看所有ansible客户端
[devops@ansible1 ansible]$ ansible all --list-hosts
[devops@ansible1 ansible]$ ansible all -m ping

自动化运维工具Ansible的搭建_第4张图片

你可能感兴趣的:(Linux企业部分)