1. 程式人生 > 實用技巧 >Centos 7.6 下利用ansible自動化安裝httpd

Centos 7.6 下利用ansible自動化安裝httpd

參考資料:

Ansible中文權威指南:

http://www.ansible.com.cn/docs/intro.html

一、ansible簡介

ansible是一款由python語言編寫的一款自動化運維工具,它集合了眾多運維工具(puppetcfenginecheffuncfabric)優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。它的創始人,Michael DeHaancobblerFunc軟體的作者),他在201239日釋出了ansible 0.01版。20151017日被RedHat宣佈收購。

  二、ansible的特點

  1、無客戶端,只需安裝SSHpython

即可,其中python建議版本2.6.6以上

  2、基於openssh通訊,底層基於ssh協議(Windows基於powershell

  3、支援密碼和SSH認證,因可以通過系統帳戶密碼認證或公鑰私鑰認證,所以整個過程簡單、方便、安全。

  4、支援Windows,但僅支援被管理端是Windows,管理端必須是Linux系統 

  5、模組化:呼叫特定的模組,完成特定任務

  6、支援playbook編排任務(類似shell中的指令碼)

  7、冪等性:一個任務執行一遍和執行N遍的效果一樣,不因重複執行帶來意外情況

  8、可以使用任何程式語言編寫模組(python可以呼叫其他語言的庫)

  9YAML格式,編排任務,支援豐富的資料結構

  三、ansible是如何工作的?

  Ansible沒有客戶端,因此底層通訊依賴系統軟體,在Linux系統下基於openssh通訊,在Windows下基於powershell,管理端必須是Linux系統,使用者認證通過後在管理節點通過ansible工具呼叫各應用模組指令推送至被管理端執行,並在執行完畢後自動刪除產生的臨時檔案。

實驗準備:

兩臺主機:

一臺管理機(192.168.6.129)一臺客戶機(192.168.6.130)

一:管理機(192.168.6.129)

安裝ansible服務(這裡需要用到光碟的映象檔案) 啟動autofs服務

1.yum倉庫配置 (此處的可以加多一個阿里雲epel)

1 [base]                     
2 name=cdrom repo            
3 baseurl=file:///mnt/cdrom  
4 enabled=1                  
5 gpgcheck=1                 
6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7 
View Code

2.安裝ansible服務

1 yum -y install ansible 

3.配置清單

/etc/ansible/ #目錄

/etc/ansible/hosts #主機清單

/etc/ansible/ansible.cfg #主配置檔案

4.實現遠端主機的連線

ansible支援密碼和SSH認證,因可以通過系統帳戶密碼認證或公鑰私鑰認證,所以整個過程簡單、方便、安全,因此這裡可以通過基於sshKey認證來實現遠端連線

ssh-genkey 
ssh-copy-id 192.168.6.129(主機端)
scp -r .ssh 192.168.6.130:~/ 
View Code

5.配置主機清單

1 Vim /etc/ansible/ansible/hosts
2 
3 [websrvs]  #組名
4 192.168.6.130 #遠端主機IP

測試:

1 [root@Centos7 ansible]# ansible websrvs -m ping

6.配置自動化部署指令碼 install_httpd.yml (對格式敏感)

 1 ---
 2   - hosts: websrvs    # /etc/ansible/hosts 檔案配置中的websrvs
 3     remote_user: root # 用那個使用者執行操作
 4 
 5     tasks:
 6       - name: copy epel file    # 簡介
 7         copy: src=/etc/yum.repos.d/test.repo dest=/etc/yum.repos.d/test.repo #模組操作
 8       - name: clean yum    # 簡介
 9         shell: yum clean all  #模組操作
10       - name: flush yum     # 簡介
11         shell: yum repolist   #模組操作  
12       - name: install httpd    # 簡介
13         yum: name=httpd    #模組操作
14       - name: start httpd     # 簡介
15         service: name=httpd state=started enabled=yes  #模組操作
View Code

測試:

1 [root@Centos7 ansible]# ansible-playbook -C install_httpd.yml 

7.自動化安裝ansible 服務

檢視ss-ntl 狀態

80埠沒開 httpd 服務是80埠的

80埠沒開 httpd 服務是80埠的

1 [root@Centos7 ansible]#ansible-playbook install_httpd.yml

檢視客戶機(192.168.6.130)80埠已開