搭建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方便好用啊。

相關文章
相關標籤/搜索