由於公司沒有運維人員,每次發佈項目都須要手動編譯,手工發佈,特別浪費時間,發佈幾回之後就煩了,就想着全換成自動化方式打包發佈,通過幾個篩選終於選定用ansible來作自動化打包發佈。今後節約大把的時間來聽聽歌看看書喝喝茶了。。。通過實踐表面,在沒有運維崗的時候,ansible絕對是中小創業公司項目發佈的最佳選擇!python
ansible其實就是一個能夠經過SSH與遠程服務器進行鏈接交互的工具,它內置了不少模塊可讓你輕鬆的經過 命令或者編寫playbook劇本操做遠程服務器,linux
安裝ansible很簡單,個人系統是centsos7.2,直接敲,yum install ansible -y
便可
windows系統能夠考慮安裝個cygwin,來模擬進行linux操做,在cygwin的虛擬linux上安裝ansible與遠程服務器進行交互。
安裝好之後ansible --version
進行查看
以下: [root@localhost ~]# ansible --version
git
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
安裝好ansible之後,建議配置ssh免密碼登陸遠程服務器,不會操做的能夠自行百度github
ansible有個host配置,yum安裝之後,在/etc/ansible/hosts裏能夠能夠添加遠程服務器主機的ip地址,或者一組ip服務器地址,例如咱們的服務是分佈式部署,有三臺服務,配置以下web
#[]裏是服務器組的name,後續每行跟着的是服務器的ip地址
[yrServer]
192.168.9.50
192.168.9.51
192.168.9.52
命令行測試 ansible yrServer -m ping
服務器返回
[root@localhost ~]# ansible all -m ping
192.168.9.50 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.9.51 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.9.52 | SUCCESS => {
"changed": false,
"ping": "pong"
}
表示三臺服務器都已經ping通,其中參數裏的changed的false表明,主機沒有任何改動
ping後面pong標識已經ping通shell
ansible能夠經過相似上面的命令行與主機進行交互,其實經過ansible進行遠程主機操做,就是把ansible腳本轉換層shell腳本與命令在遠程主機上進行操做,可是自動化運維是一組命令跟腳本的組合,因此就須要學習一下ansible的殺手鐗playbook了apache
playbook是一組ansible命令的組合,咱們能夠稱他爲劇本,你徹底能夠理解成playbook就是拍戲的那個劇本,演員只要照着劇本演戲,就能完成拍戲任務,咱們把咱們想作的操做編排成劇本,ansible就能夠編排有序的執行任務,並給與咱們反饋。Playbooks 可用於聲明配置,更強大的地方在於,在 playbooks 中能夠編排有序的執行過程,甚至於作到在多組機器間,來回有序的執行特別指定的步驟.而且能夠同步或異步的發起任務.windows
playbook的格式是YAML,語法比較簡單,
playbook 由一個或多個 ‘plays’ 組成.它的內容是一個以 ‘plays’ 爲元素的列表.
「plays」 算是一個體育方面的類比,你能夠經過多個 plays 告訴你的系統作不一樣的事情,不只是定義一種特定的狀態或模型.你能夠在不一樣時間運行不一樣的 plays.
這裏有一個從github源碼demo裏找到的playbook示例,其中僅包含一個 play: 仔細看注視服務器
---#必須---開頭
- hosts: webservers#hosts裏定義的組名或者直接服務器ip
vars:#參數
http_port: 80
max_clients: 200
remote_user: root #執行的帳戶名
tasks:#執行的任務
- name: ensure apache is at the latest version#任務名稱是安裝最新版本的apache
yum: pkg=httpd state=latest#執行的命令是ansible yum模塊安裝httpd
- name: write the apache config file#任務名稱是修改apache的config配置文件
template: src=/srv/httpd.j2 dest=/etc/httpd.conf #採用模版文件,從從src複製到dest,名字最終爲httpd.conf
notify:#事件通知,一有修改配置文件,就通知的名字爲restart apache,會執行handlers相同名字的service進行執行重啓
- restart apache
- name: ensure apache is running #任務名稱
service: name=httpd state=started #任務操做是:啓動httpd
handlers:
- name: restart apache #任務名稱
service: name=httpd state=restarted #任務操做是重啓httpd服務
執行ansible playbook ansible-playbook demo.yml
就能夠查看結果app