搭建Ansible

Ansible 是一个自动化配置管理工具, 其服务器端和客户端使用SSH 方式通讯,只需在服务器端安装Ansible程序,而客户端无需安装应用程序就能实现快速部署,简化了批量化部署的准备工做,采用22号端口通讯也提升了安全性,避免额外开放端口形成一些安全隐患,简化了安全策略。python

实验环境linux

系统版本:CentOS Linux release 7.4.1708 (Core)
Ansible版本:ansible-2.6.1-1.el7
关闭iptables, selinux
服务端名称:test1
客户端名称:test2安全

安装Ansible
wget下载Ansible安装包到路径 /root
wget https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.6.1-1.el7.ans.src.rpm服务器

安装
yum -y install ansible-2.6.1-1.el7.ans.noarch.rpmbabel

yum安装会关联python的相关包网络

=======================================================================================================
 Package                                               Arch                     Version                             Repository                                         Size
========================================================
Installing:
 ansible                                               noarch                   2.6.1-1.el7.ans                     /ansible-2.6.1-1.el7.ans.noarch                    52 M
Installing for dependencies:
 PyYAML                                                x86_64                   3.10-11.el7                         base                                              153 k
 libyaml                                               x86_64                   0.1.4-11.el7_0                      base                                               55 k
 python-babel                                          noarch                   0.9.6-8.el7                         base                                              1.4 M
 python-backports                                      x86_64                   1.0-8.el7                           base                                              5.8 k
 python-backports-ssl_match_hostname                   noarch                   3.5.0.1-1.el7                       base                                               13 k
 python-cffi                                           x86_64                   1.6.0-5.el7                         base                                              218 k
 python-enum34                                         noarch                   1.0.4-1.el7                         base                                               52 k
 python-idna                                           noarch                   2.4-1.el7                           base                                               94 k
 python-ipaddress                                      noarch                   1.0.16-2.el7                        base                                               34 k
 python-jinja2                                         noarch                   2.7.2-2.el7                         base                                              515 k
 python-markupsafe                                     x86_64                   0.11-10.el7                         base                                               25 k
 python-paramiko                                       noarch                   2.1.1-4.el7                         extras                                            268 k
 python-ply                                            noarch                   3.4-11.el7                          base                                              123 k
 python-pycparser                                      noarch                   2.14-1.el7                          base                                              104 k
 python-setuptools                                     noarch                   0.9.8-7.el7                         base                                              397 k
 python2-cryptography                                  x86_64                   1.7.2-2.el7                         base                                              502 k
 python2-pyasn1                                        noarch                   0.1.9-7.el7                         base                                              100 k
 sshpass                                               x86_64                   1.06-2.el7                          extras                                             21 k

Transaction Summary
========================================================

安装完成后,Ansible的配置目录在/etc/ansible,运维

/etc/ansible/
├── ansible.cfg          ansible的配置文件
├── hosts                  存放客户端文件列表
└── roles                   ansible的角色目录

须要将被管理节点的服务器名称添加到hosts文件里,不然ansible将不认识客户端,前提是这台主机名和IP必须先要加入到系统/etc/hosts文件里,才能被认识
例如直接将主机名test2添加到hosts文件内容末尾,不须要指定IP地址
也能够将其按组分类添加,组名称以中括号括起来,例如: ssh

[testservers]
test2

添加完成后,测试ping, 运行命令ansible -m ping all, 表示对全部hosts文件里的主机进行ping测试,-m ping 表示使用ping模块,或者能够对单机或组进行ping 操做, ansible -m ping test2 或 ansible -m ping testservers。Ansible各模块的使用方法能够经过ansible-doc来查阅,例如ansible-doc -l 能够列出全部的模块及其描述,ansible-doc yum 能够指定模块具体查看其使用方法。
返回SUCCESS表示ping 通ide

test2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

如未添加主机解析或主机不可达,则返回错误工具

test3 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname test-rs2: Name or service not known\r\n", 
    "unreachable": true
}

Ansible分2种方式对客户端进行管理,一种是ad-hoc命令行方式,如上例的ping测试,另外一种是更为强大灵活的playbook方式,playbooks采用yaml格式的配置文件来管理,具体的yaml配置文件语法可参考网络文档

好比利用copy模块将test1主机上的文件拷贝到test2 的/tmp目录下, 利用命令行的方式实现:
ansible -m copy -a "src=/etc/hosts dest=/tmp" test2, 实现相似于scp的功能

若是采用playbooks的方式,例如编写一个名为copy_file.yml的playbook

---
- hosts: test2                                       # 执行的对象为test2主机
  remote_user: root                             # 执行的用户为root帐号
  tasks:                                                # 要执行的任务
    - name: copy file to test2                 # 任务的描述信息
      copy: src=/etc/hosts dest=/tmp    # 调用copy模块,指定源文件和目标地址

运行方法为使用ansible-playbook命令,如: ansible-playbook copy_file.yml

若是对test2主机yum 安装一个telnet程序yum_install.yml,playbook内容以下,执行的命令为 ansible-playbook yum_install.yml

---
- hosts: testservers                                        # 对testserver组进行安装
  remote_user: root                                        
  tasks:            
    - name: install telnet
      yum: name=telnet state=installed            # 调用yum模块,指定安装程序名和状态

采用playbook的配置方式能够更加方便地对管理主机进行部署,能够对任务进行分类,包括像新装主机的初始化配置、安装应用程序、拷贝文件,修改权限等等。一路配置下了感受很是方便快捷,上手很容易,确实是运维的一大利器,比puppet什么的不知道高明到哪里去了, 虽然咱们公司用的仍然是puppet,但感受仍是Ansible方便好用啊。

相关文章
相关标签/搜索