ansible 基於ssh 快速上手(python)沒有限制語言(bash,python,perl,ruby)Fedora ,rackspace,evernote在用
saltstack (c/s)架構 python
puppet (c/s)架構 Google在用 ruby語言 (master ,node)
chef (c/s)架構 ruby (workstation開發,server,node ) 須要git,有web uinode
若是你是新手,就不要猶豫了,ansible是你最好的選擇,本人菜鳥一個。廢話少說,開始安裝!python
實驗環境:git
192.168.3.190 web
192.168.3.191apache
192.168.3.192vim
192.168.3.193ruby
1)配置ssh免密碼登錄bash
root@debian:~# ssh localhost架構
root@debian:~# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsassh
root@debian:~# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
root@debian:~# scp -r /root/.ssh 其餘機器:/root
root@debian:~# chmod 600 /root/.ssh/authorized_keys
接下來:
2)root@debian:~# apt-get install ansible
root@debian:~# ansible --version
ansible 1.7.2
3)Ansible配置
a) 主機定義:
root@debian:~# vim /etc/ansible/hosts
[local]
192.168.3.190 能夠是IP或主機名;
[other]
192.168.3.191
192.168.3.192
192.168.3.193
在這裏,我定義了兩個組,簡單說一下,一個主機能夠有多個組,建議組名好記一些,由於測試要用。固然你也能夠看文件裏面的註釋。
b)測試
語法ansible <host-pattern> [options]
ansible <pattern_goes_here> -m<module_name> -a <arguments>
root@debian:~# ansible other -m ping
192.168.3.192 | success >> {
"changed": false,
"ping": "pong"
}
192.168.3.191 | success >> {
"changed": false,
"ping": "pong"
使用ping測試,以上顯示成功,能夠繼續其餘操做(若是你不懂ping,神仙也救不了你啦)
常見命令選項:
-m 模塊名
-a 參數
-s是此用戶sudo無需輸入密碼
注意:命令有挺多的,只列舉了幾個經常使用的。
我用ansible的須要是,老大有的時候讓我去改配置文件或者上傳點東西太浪費時間啦,我不能一臺臺機器去ssh吧,如今不流行devops嘛!若是你不懂什麼意思,仍是去多看看書吧,雖然我也不懂!
3)安裝服務(能夠用playbook):
root@debian:~# ansible local -a 'apt-get -y install softname'
root@debian:~# ansible all -m command -a "apt-get -y install softname"
命令執行的結果是同樣,目前看,單引號和雙引號沒什麼區別,但沒有是不行的。
4)文件管理模塊-file
主要用來設置文件、連接、目錄的屬性,或者移除文件、連接、目錄,不少其餘的模塊也會包含這種做用(簡單演示怎麼用,上手快,其餘的細節還需本身去領悟)
##遠程拷貝文件----COPY
ansible other -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ owner=root group=root mode=0644"
##刪除遠程的文件
ansible other -m file -a "dest=/tmp/ansible.cfg state=absent mode=0644" 刪除遠程的目錄
說明:(1)State:如果是目錄不存在,那麼會建立目錄;若是是文件不存在,那麼不會建立文件;若是是link,那麼軟連接會被建立或者修改;若是是absent,那麼目錄下的全部文件都會被刪除,若是是touch,會建立不存在的目錄和文件
(2)copy:
backup:在覆蓋以前,將源文件備份,備份文件包含時間信息。有兩個選項:yes|no
content:用於替代「src」,能夠直接設定指定文件的值
dest:必選項。要將源文件複製到的遠程主機的絕對路徑,若是源文件是一個目錄,那麼該路徑也必須是個目錄
directory_mode:遞歸設定目錄的權限,默認爲系統默認權限
force:若是目標主機包含該文件,但內容不一樣,若是設置爲yes,則強制覆蓋,若是爲no,則只有當目標主機的目標位置不存在該文件時,才複製。默認爲yes
others:全部的file模塊裏的選項均可以在這裏使用
src:被複制到遠程主機的本地文件,能夠是絕對路徑,也能夠是相對路徑。若是路徑是一個目錄,它將遞歸複製。在這種狀況下,若是路徑使用「/」來結尾,則只複製目錄裏的內容,若是沒有使用「/」來結尾,則包含目錄在內的整個內容所有複製,相似於rsync。
5)用playbook安裝服務:
root@debian:~# cat apache2.yml
---
- hosts: other
tasks:
- name: Install apache2 web server
apt: pkg=apache2 state=installed update_cache=true
接下來執行playbook
root@debian:~# ansible-playbook apache2.yml
注意事項:YAML 還有一個小的怪癖. ansible的 YAML 文件通常開始行都應該是 --- 這是 YAML 格式的一部分, 代表一個文件的開始.(本人試驗過,能夠去掉不寫的!)
列表中的全部成員都開始於相同的縮進級別, 而且使用一個 "- " 做爲開頭(一個橫槓和一個空格):
一個字典是由一個簡單的 鍵: 值 的形式組成(這個冒號後面必須是一個空格):
總結:第一天學習ansible,把學習的過程記錄下來!稍後會繼續學習其餘模塊。
有沒有以爲自動化很爽!!!