只有非常努力选泻,才能看起來毫不費力
本文是原創(chuàng)持續(xù)連載發(fā)布苇本,這篇主要講解Ansible的搭建及其一些基本的使用命,親手搭建Ansible環(huán)境摧冀,因為并沒有實戰(zhàn)經(jīng)驗倍踪,所以本文對于Jenkins+Ansible自動化持續(xù)部署沒有做講解(不敢誤人子弟),但偶爾會對Ansible在自動化持續(xù)部署中所起的作用可講解一二索昂。如有文中有書寫或部署問題建车,請留言指導(dǎo)修正,互相交流椒惨,共同進步缤至,本人QQ:417213902。
一康谆、Ansible 環(huán)境搭建
1领斥、Ansible介紹及作用
1.1介紹
Ansible是一種集成IT系統(tǒng)的配置管理, 應(yīng)用部署, 執(zhí)行特定任務(wù)的開源平臺,它基于Python語言實現(xiàn)沃暗,部署只需在主控端部署環(huán)境, 被控端無需安裝代理工具戒突,只需打開SSH,讓主控端通過SSH秘鑰認(rèn)證對其進行所有的管理監(jiān)控操作描睦,相對適合部署到數(shù)量比較大且對系統(tǒng)軟件安裝要求比較嚴(yán)格的集群中。
1.2主要作用
- 配置管理 -playbook
將大量命令行配置集成到一起形成一個可定制的多主機配置管理部署工具导而,它通過YAML格式定義, 可以實現(xiàn)向多臺主機的分發(fā)應(yīng)用部署忱叭; - 應(yīng)用部署
一般都是結(jié)合Jenkins配套使用
2、Ansible搭建
- 第一步今艺,安裝第三方y(tǒng)um源(也可不執(zhí)行)
# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
說明: 這一步只是為了提供更多韵丑、便捷的yum源的軟件。
- 第二步虚缎,安裝Ansible
# yum install ansible -y
說明:需要python環(huán)境撵彻,初次安裝需要一點時間钓株,默認(rèn)安裝目錄在/etc/ansible 下 - 第三步,在ansible中配置組
# cd /etc/ansible
# cp hosts hosts.bak
# cat /dev/null > ansible
#vi hosts
[deployServer] #組名稱陌僵,可根據(jù)需求定義
192.168.1.110
192.168.1.112
- 第四步轴合, 配置服務(wù)器間的秘鑰認(rèn)證
目的是Ansible宿主服務(wù)和應(yīng)用服務(wù)器間通信時不需要再次輸入密碼
⑴ 在Ansible服務(wù)器上生成密鑰對,使用ssh-keygen -t rsa命令
# cd ~
# ssh-keygen -t rsa 直接回車
# cd ~/.ssh/
# ll
image.png
出現(xiàn)id_rsa 和 id_rsa.pub 這兩個文件表示成功
image.png
⑵把生成的 id_rsa.pub 文件復(fù)制到應(yīng)用服務(wù)器上
# scp id_rsa.pub root@192.168.1.110:~/.ssh/
需要輸入110服務(wù)器的root密碼
文件復(fù)制成功
把公鑰復(fù)制到authorized_keys里
⑶驗證是否成功
# ssh root@192.168.1.110
應(yīng)該是無秘自動登錄碗短,表示成功受葛,否則請重新檢查配置步驟
到目前配置為止,已經(jīng)Ansible基本配置已經(jīng)完成
-
第五步偎谁,測試
重啟deployServer組所有SSH服務(wù)
# ansible deployServer -m service -a "name=sshd state=restarted"
image.png
出現(xiàn)以上表示成功总滩,若失敗,請檢查
1巡雨、防火墻是否已經(jīng)關(guān)閉
2闰渔、sshd服務(wù)是否已經(jīng)打開
3、秘鑰認(rèn)證是否成功
3铐望、Ansible常用命令
-
遠程命令模塊
command: 執(zhí)行遠程主機SHELL命令:
# ansible deployServer -m command -a "free -m"
image.png -
遠程執(zhí)行本地SHELL腳本(類似scp+shell)
# echo "date" > ~/test.sh
# ansible deployServer -m script -a "~/test.sh"
image.png copy模塊
實現(xiàn)主控端向目標(biāo)主機拷貝文件, 類似scp功能
# ansible deployServer -m copy -a "src=~/test.sh dest=/tmp/ owner=root group=root mode=0755"stat模塊
獲取遠程文件狀態(tài)信息, 包括atime, ctime, mtime, md5, uid, gid等信息
# ansible deployServer -m stat -a "path=/etc/sysctl.conf"get_url模塊
實現(xiàn)在遠程主機下載指定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模塊
遠程主機系統(tǒng)服務(wù)管理
# 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服務(wù)模塊
遠程主機系統(tǒng)用戶管理
添加用戶:
# ansible deployServer -m user -a "name=deploy comment='test'"
刪除用戶:
# ansible deployServer -m user -a "name=deploy state=absent remove=yes"
沒有具體的實踐冈涧,不做任何評價,從現(xiàn)在自己的了解程度上來看蝌以,還是比較簡單的炕舵,知識夠用就好,需要深入的小伙伴們跟畅,可以自行查詢官方學(xué)習(xí)手冊咽筋,內(nèi)容還是比較全的署恍。通過這幾天的學(xué)習(xí)弓熏,在自動化持續(xù)發(fā)布中倒庵,Ansible其實就是充當(dāng)著腳本執(zhí)行的功能剧包,其實感覺如果采用上一篇文章中的插件也是可以實現(xiàn)旅赢,好吧域仇!YY結(jié)束糊探,有什么問題括享,留言板部翘、留言板硝训,大家一起學(xué)習(xí),討論新思,進步=蚜骸!夹囚!
下一篇終于可以開始解決單點問題纵刘,自動化部署目前就這樣了,后期有什么新的想法再補充荸哟。
2017-11-14 23:42:00
參考文檔 :
國內(nèi)最專業(yè)的Ansible中文官方學(xué)習(xí)手冊
http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
一路向北的博客
http://www.showerlee.com/archives/1649