只有非常努力,才能看起來毫不費力
本文是原創持續連載發布,這篇主要講解Ansible的搭建及其一些基本的使用命,親手搭建Ansible環境,因為并沒有實戰經驗,所以本文對于Jenkins+Ansible自動化持續部署沒有做講解(不敢誤人子弟),但偶爾會對Ansible在自動化持續部署中所起的作用可講解一二。如有文中有書寫或部署問題,請留言指導修正,互相交流,共同進步,本人QQ:417213902。
一、Ansible 環境搭建
1、Ansible介紹及作用
1.1介紹
Ansible是一種集成IT系統的配置管理, 應用部署, 執行特定任務的開源平臺,它基于Python語言實現,部署只需在主控端部署環境, 被控端無需安裝代理工具,只需打開SSH,讓主控端通過SSH秘鑰認證對其進行所有的管理監控操作,相對適合部署到數量比較大且對系統軟件安裝要求比較嚴格的集群中。
1.2主要作用
- 配置管理 -playbook
將大量命令行配置集成到一起形成一個可定制的多主機配置管理部署工具,它通過YAML格式定義, 可以實現向多臺主機的分發應用部署; - 應用部署
一般都是結合Jenkins配套使用
2、Ansible搭建
- 第一步,安裝第三方yum源(也可不執行)
# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
說明: 這一步只是為了提供更多、便捷的yum源的軟件。
- 第二步,安裝Ansible
# yum install ansible -y
說明:需要python環境,初次安裝需要一點時間,默認安裝目錄在/etc/ansible 下 - 第三步,在ansible中配置組
# cd /etc/ansible
# cp hosts hosts.bak
# cat /dev/null > ansible
#vi hosts
[deployServer] #組名稱,可根據需求定義
192.168.1.110
192.168.1.112
- 第四步, 配置服務器間的秘鑰認證
目的是Ansible宿主服務和應用服務器間通信時不需要再次輸入密碼
⑴ 在Ansible服務器上生成密鑰對,使用ssh-keygen -t rsa命令
# cd ~
# ssh-keygen -t rsa 直接回車
# cd ~/.ssh/
# ll
image.png
出現id_rsa 和 id_rsa.pub 這兩個文件表示成功
image.png
⑵把生成的 id_rsa.pub 文件復制到應用服務器上
# scp id_rsa.pub root@192.168.1.110:~/.ssh/
需要輸入110服務器的root密碼
文件復制成功
把公鑰復制到authorized_keys里
⑶驗證是否成功
# ssh root@192.168.1.110
應該是無秘自動登錄,表示成功,否則請重新檢查配置步驟
到目前配置為止,已經Ansible基本配置已經完成
-
第五步,測試
重啟deployServer組所有SSH服務
# ansible deployServer -m service -a "name=sshd state=restarted"
image.png
出現以上表示成功,若失敗,請檢查
1、防火墻是否已經關閉
2、sshd服務是否已經打開
3、秘鑰認證是否成功
3、Ansible常用命令
-
遠程命令模塊
command: 執行遠程主機SHELL命令:
# ansible deployServer -m command -a "free -m"
image.png -
遠程執行本地SHELL腳本(類似scp+shell)
# echo "date" > ~/test.sh
# ansible deployServer -m script -a "~/test.sh"
image.png copy模塊
實現主控端向目標主機拷貝文件, 類似scp功能
# ansible deployServer -m copy -a "src=~/test.sh dest=/tmp/ owner=root group=root mode=0755"stat模塊
獲取遠程文件狀態信息, 包括atime, ctime, mtime, md5, uid, gid等信息
# ansible deployServer -m stat -a "path=/etc/sysctl.conf"get_url模塊
實現在遠程主機下載指定URL到本地
# ansible deployServer -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0400 force=yes"cron模塊
遠程主機crontab配置
# ansible deployServer -m cron -a "name='check dir' hour='5,2' job='ls -alh > /dev/null'"service模塊
遠程主機系統服務管理
# ansible deployServer -m service -a "name=crond state=stopped"
# ansible deployServer -m service -a "name=crond state=restarted"
# ansible deployServer -m service -a "name=crond state=reloaded"user服務模塊
遠程主機系統用戶管理
添加用戶:
# ansible deployServer -m user -a "name=deploy comment='test'"
刪除用戶:
# ansible deployServer -m user -a "name=deploy state=absent remove=yes"
沒有具體的實踐,不做任何評價,從現在自己的了解程度上來看,還是比較簡單的,知識夠用就好,需要深入的小伙伴們,可以自行查詢官方學習手冊,內容還是比較全的。通過這幾天的學習,在自動化持續發布中,Ansible其實就是充當著腳本執行的功能,其實感覺如果采用上一篇文章中的插件也是可以實現,好吧!YY結束,有什么問題,留言板、留言板,大家一起學習,討論,進步!!!
下一篇終于可以開始解決單點問題,自動化部署目前就這樣了,后期有什么新的想法再補充。
2017-11-14 23:42:00
參考文檔 :
國內最專業的Ansible中文官方學習手冊
http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
一路向北的博客
http://www.showerlee.com/archives/1649