Centos 7.6 下利用ansible自動化安裝httpd
參考資料:
Ansible中文權威指南:
http://www.ansible.com.cn/docs/intro.html
一、ansible簡介
ansible是一款由python語言編寫的一款自動化運維工具,它集合了眾多運維工具(puppet、cfengine、chef、func、fabric)優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。它的創始人,Michael DeHaan(cobbler與Func軟體的作者),他在2012年3月9日釋出了ansible 0.01版。2015年10月17日被RedHat宣佈收購。
二、ansible的特點
1、無客戶端,只需安裝SSH、python
2、基於openssh通訊,底層基於ssh協議(Windows基於powershell)
3、支援密碼和SSH認證,因可以通過系統帳戶密碼認證或公鑰私鑰認證,所以整個過程簡單、方便、安全。
4、支援Windows,但僅支援被管理端是Windows,管理端必須是Linux系統
5、模組化:呼叫特定的模組,完成特定任務
6、支援playbook編排任務(類似shell中的指令碼)
7、冪等性:一個任務執行一遍和執行N遍的效果一樣,不因重複執行帶來意外情況
8、可以使用任何程式語言編寫模組(python可以呼叫其他語言的庫)
9、YAML格式,編排任務,支援豐富的資料結構
三、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-7View Code
2.安裝ansible服務
1 yum -y install ansible
3.配置清單
/etc/ansible/ #目錄
/etc/ansible/hosts #主機清單
/etc/ansible/ansible.cfg #主配置檔案
4.實現遠端主機的連線
ansible支援密碼和SSH認證,因可以通過系統帳戶密碼認證或公鑰私鑰認證,所以整個過程簡單、方便、安全,因此這裡可以通過基於ssh的Key認證來實現遠端連線
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埠已開