轉載請註明出處http://www.cnblogs.com/chenxianpao/p/7360349.htmlhtml
項目 | Puppet | Saltstack | Ansible |
開發語言 | Ruby | Python | Python |
是否有客戶端 | 是 | 是 | 否 |
是否支持二次開發 | 不支持 | 支持 | 支持 |
服務器與遠程機器是否相互驗證 | 是 | 是 | 是 |
服務器與遠程機器通訊是否加密 | 是,標準SSL協議 | 是,使用AES加密 | 是,使用OpenSSH |
是否提供WEB UI | 提供 | 提供 | 提供,可是商業版本 |
配置文件格式 | Ruby語法 | YAML | YAML |
命令行執行 | 不支持,但能夠經過配置模塊實現 | 支持 | 支持 |
參考 | 解釋 | 例子 |
ansible_ssh_host | 將要鏈接的遠程主機名.與你想要設定的主機的別名不一樣的話,可經過此變量設置. | ansible_ssh_host=192.169.1.123 |
ansible_ssh_port | ssh端口號.若是不是默認的端口號,經過此變量設置. | ansible_ssh_port=5000 |
ansible_ssh_user | 默認的 ssh 用戶名 | ansible_ssh_user=cxpadmin |
ansible_ssh_pass | ssh 密碼(這種方式並不安全,咱們強烈建議使用 --ask-pass 或 SSH 密鑰) | ansible_ssh_pass=’123456’ |
ansible_sudo_pass | sudo 密碼(這種方式並不安全,咱們強烈建議使用 --ask-sudo-pass) | ansible_sudo_pass=’123456’ |
ansible_sudo_exe | sudo 命令路徑(適用於1.8及以上版本) | ansible_sudo_exe=/usr/bin/sudo |
ansible_connection | 與主機的鏈接類型.好比:local, ssh 或者 paramiko. Ansible 1.2 之前默認使用 paramiko.1.2 之後默認使用 'smart','smart' 方式會根據是否支持 ControlPersist, 來判斷'ssh' 方式是否可行. | ansible_connection=local |
ansible_ssh_private_key_file | ssh 使用的私鑰文件.適用於有多個密鑰,而你不想使用 SSH 代理的狀況. | ansible_ssh_private_key_file=/root/key |
ansible_shell_type | 目標系統的shell類型.默認狀況下,命令的執行使用 'sh' 語法,可設置爲 'csh' 或 'fish'. | ansible_shell_type=zsh |
ansible_python_interpreter | 目標主機的 python 路徑.適用於的狀況: 系統中有多個 Python, 或者命令路徑不是"/usr/bin/python",好比 \*BSD, 或者 /usr/bin/python 不是 2.X 版本的 Python.咱們不使用 "/usr/bin/env" 機制,由於這要求遠程用戶的路徑設置正確,且要求 "python" 可執行程序名不可爲 python之外的名字(實際有可能名爲python26). |
ansible_python_interpreter=/usr/bin/python2.6 |
ansible_*_interpreter | 定義其餘語言解釋器 | ansible_*_interpreter=/usr/bin/ruby |
ansible_sudo | 定義sudo用戶 | ansible_sudo=cxpadmin |
參數名 | 是否必須 | 默認值 | 選項 | 說明 |
src | no | 用於定位ansible執行的機器上的文件,須要絕對路徑。若是拷貝的是文件夾,那麼文件夾會總體拷貝,若是結尾是」/」,那麼只有文件夾內的東西被考過去。一切的感受很像rsync | ||
content | no | 用來替代src,用於將指定文件的內容,拷貝到遠程文件內 | ||
dest | yes | 用於定位遠程節點上的文件,須要絕對路徑。若是src指向的是文件夾,這個參數也必須是指向文件夾 | ||
backup | no | no | yes/no | 備份遠程節點上的原始文件,在拷貝以前。若是發生什麼意外,原始文件還能使用。 |
directory_mode | no | 這個參數只能用於拷貝文件夾時候,這個設定後,文件夾內新建的文件會被拷貝。而老舊的不會被拷貝 | ||
follow | no | no | yes/no | 當拷貝的文件夾內有link存在的時候,那麼拷貝過去的也會有link |
force | no | yes | yes/no | 默認爲yes,會覆蓋遠程的內容不同的文件(可能文件名同樣)。若是是no,就不會拷貝文件,若是遠程有這個文件 |
group | no | 設定一個羣組擁有拷貝到遠程節點的文件權限 | ||
mode | no | 等同於chmod,參數能夠爲「u+rwx or u=rw,g=r,o=r」 | ||
owner | no | 設定一個用戶擁有拷貝到遠程節點的文件權限 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[root@node1 ansible]# ansible testservers -m copy -a 'src=/root/install.log dest=/tmp/install.log owner=testuser group=testgroup' 192.168.100.131 | success >> { "changed": true, "checksum": "7b3626c84bb02d12472c03d2ece878fdc4756c94", "dest": "/tmp/install.log", "gid": 1100, "group": "testgroup", "md5sum": "c7d8a01a077940859e773b7770d2e07e", "mode": "0644", "owner": "testuser", "size": 9458, "src": "/root/.ansible/tmp/ansible-tmp-1456387213.94-229503410500766/source", "state": "file", "uid": 1000 } 192.168.100.132 | success >> { "changed": true, "checksum": "7b3626c84bb02d12472c03d2ece878fdc4756c94", "dest": "/tmp/install.log", "gid": 1100, "group": "testgroup", "md5sum": "c7d8a01a077940859e773b7770d2e07e", "mode": "0644", "owner": "testuser", "size": 9458, "src": "/root/.ansible/tmp/ansible-tmp-1456387213.94-186055595812050/source", "state": "file", "uid": 1000 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[root@node1 ansible]# echo "test " >> /root/install.log [root@node1 ansible]# ansible testservers -m copy -a 'src=/root/install.log dest=/tmp/install.log owner=testuser group=testgroup backup=yes' 192.168.100.132 | success >> { "backup_file": "/tmp/install.log.2016-02-25@16:01:26~", "changed": true, "checksum": "b5da7af32ad02eb98f77395b28f281a965b4c1f5", "dest": "/tmp/install.log", "gid": 1100, "group": "testgroup", "md5sum": "d39956add30a18019cb5ad2381a0cd43", "mode": "0644", "owner": "testuser", "size": 9464, "src": "/root/.ansible/tmp/ansible-tmp-1456387285.87-128685659798967/source", "state": "file", "uid": 1000 } 192.168.100.131 | success >> { "backup_file": "/tmp/install.log.2016-02-25@16:01:26~", "changed": true, "checksum": "b5da7af32ad02eb98f77395b28f281a965b4c1f5", "dest": "/tmp/install.log", "gid": 1100, "group": "testgroup", "md5sum": "d39956add30a18019cb5ad2381a0cd43", "mode": "0644", "owner": "testuser", "size": 9464, "src": "/root/.ansible/tmp/ansible-tmp-1456387285.86-134452201968647/source", "state": "file", "uid": 1000 } [root@node1 ansible]# ansible testservers -m raw -a 'ls -lrth /tmp/install*' 192.168.100.131 | success | rc=0 >> -rw-r--r-- 1 root root 9.3K 2 25 16:00 /tmp/install.log.2016-02-25@16:01:26~ -rw-r--r-- 1 testuser testgroup 9.3K 2 25 16:01 /tmp/install.log 192.168.100.132 | success | rc=0 >> -rw-r--r-- 1 root root 9.3K 2 25 16:00 /tmp/install.log.2016-02-25@16:01:26~ -rw-r--r-- 1 testuser testgroup 9.3K 2 25 16:01 /tmp/install.log |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
[root@node1 ansible]# tree testdir testdir ├── a │ ├── e │ │ └── ansible.cfg │ ├── f │ └── g ├── b │ ├── e │ ├── f │ └── g └── c ├── ansible.cfg ├── e ├── f └── g [root@node1 ansible]# ansible testservers -m copy -a 'src=/etc/ansible/testdir dest=/tmp/ owner=testuser group=testgroup backup=yes' 192.168.100.131 | success >> { "changed": true, "dest": "/tmp/", "src": "/etc/ansible/testdir" } 192.168.100.132 | success >> { "changed": true, "dest": "/tmp/", "src": "/etc/ansible/testdir" } [root@node1 ansible]# ansible testservers -m command -a 'tree /tmp/testdir' 192.168.100.131 | success | rc=0 >> /tmp/testdir |-- a | `-- e | `-- ansible.cfg |-- b | `-- e | `-- hosts `-- c `-- ansible.cfg 5 directories, 3 files 192.168.100.132 | success | rc=0 >> /tmp/testdir |-- a | `-- e | `-- ansible.cfg |-- b | `-- e | `-- hosts `-- c `-- ansible.cfg 5 directories, 3 files |
參數名 | 參數說明 | 返回值 | 返回值類型 | 樣例 |
src | 位於ansible執行機上的位置 | changed | string | /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source |
backup_file | 將原文件備份 | changed and if backup=yes | string | /path/to/file.txt.2015-02-12@22:09~ |
uid | 在執行後,擁有者的ID | success | int | 100 |
dest | 遠程節點的目標目錄或文件 | success | string | /path/to/file.txt |
checksum | 拷貝文件後的checksum值 | success | string | 6e642bb8dd5c2e027bf21dd923337cbb4214f827 |
md5sum | 拷貝文件後的md5 checksum值 | when supported | string | 2a5aeecc61dc98c4d780b14b330e3282 |
state | 執行後的狀態 | success | string | file |
gid | 執行後擁有文件夾、文件的羣組ID | success | int | 100 |
mode | 執行後文件的權限 | success | string | 0644 |
owner | 執行後文件全部者的名字 | success | string | httpd |
group | 執行後文件全部羣組的名字 | success | string | httpd |
size | 執行後文件大小 | success | int | 1220 |
參數 | 是否必須 | 默認值 | 選項 | 說明 |
chdir | no | 跟command同樣的,運行shell以前cd到某個目錄 | ||
creates | no | 跟command同樣的,若是某個文件存在則不運行shell | ||
removes | no | 跟command同樣的,若是某個文件不存在則不運行shell |
參數 | 是否必須 | 默認值 | 選項 | 說明 |
chdir | no | 運行command命令前先cd到這個目錄 | ||
creates | no | 若是這個參數對應的文件存在,就不運行command | ||
executable | no | 將shell切換爲command執行,這裏的全部命令須要使用絕對路徑 | ||
removes | no | 若是這個參數對應的文件不存在,就不運行command |
參數 | 必填 | 默認值 | 選項 | 說明 |
Dest | Yes | 用來存放文件的目錄,例如存放目錄爲backup,源文件名稱爲/etc/profile在主機pythonserver中,那麼保存爲/backup/pythonserver/etc/profile | ||
Fail_on_missing | No | No | Yes/no | 當源文件不存在的時候,標識爲失敗 |
Flat | No | 容許覆蓋默認行爲從hostname/path到/file的,若是dest以/結尾,它將使用源文件的基礎名稱 | ||
Src | Yes | 在遠程拉取的文件,而且必須是一個file,不能是目錄 | ||
Validate_checksum | No | Yes | Yes/no | 當文件fetch以後進行md5檢查 |
參數 | 必填 | 默認 | 選項 | 說明 |
Follow | No | No | Yes/no | 這個標識說明這是系統連接文件,若是存在,應該遵循 |
Force | No | No | Yes/no | 強制建立連接在兩種狀況下:源文件不存在(過會會存在);目標存在可是是文件(建立連接文件替代) |
Group | No | 文件所屬用戶組 | ||
Mode | No | 文件所屬權限 | ||
Owner | No | 文件所屬用戶 | ||
Path | Yes | 要控制文件的路徑 | ||
Recurse | No | No | Yes/no | 當文件爲目錄時,是否進行遞歸設置權限 |
Src | No | 文件連接路徑,只有狀態爲link的時候,纔會設置,能夠是絕對相對不存在的路徑 | ||
State | No | File | File/link Directory Hard/touch Absent |
若是是目錄不存在,那麼會建立目錄;若是是文件不存在,那麼不會建立文件;若是是link,那麼軟連接會被建立或者修改;若是是absent,那麼目錄下的全部文件都會被刪除,若是是touch,會建立不存在的目錄和文件 |
參數名 | 是否必須 | 默認值 | 選項值 | 參數說明 |
conf_file | no | 設定遠程yum執行時所依賴的yum配置文件 | ||
disable_gpg_check | no | No | Yes/No | 在安裝包前檢查包,只會影響state參數爲present或者latest的時候 |
list | No | 只能由ansible調用,不支持playbook,這個幹啥的你們都懂 | ||
name | Yes | 你須要安裝的包的名字,也能如此使用name=python=2.7安裝python2.7 | ||
state | no | present | present/latest/absent | 用於描述安裝包最終狀態,present/latest用於安裝包,absent用於remove安裝包 |
update_cache | no | no | yes/no | 用於安裝包前執行更新list,只會影響state參數爲present/latest的時候 |
參數名 | 是否必須 | 默認值 | 選項 | 說明 |
enabled | no | yes/no | 啓動os後啓動對應service的選項。使用service模塊的時候,enabled和state至少要有一個被定義 | |
name | yes | 須要進行操做的service名字 | ||
state | no | stared/stoped/restarted/reloaded | service最終操做後的狀態。 |
參數名 | 是否必須 | 默認值 | 選項 | 說明 |
backup | 對遠程主機上的原任務計劃內容修改以前作備份 | |||
cron_file | 若是指定該選項,則用該文件替換遠程主機上的cron.d目錄下的用戶的任務計劃 | |||
day | 日(1-31,*,*/2,……) | |||
hour | 小時(0-23,*,*/2,……) | |||
minute | 分鐘(0-59,*,*/2,……) | |||
month | 月(1-12,*,*/2,……) | |||
weekday | 周(0-7,*,……) | |||
job | 要執行的任務,依賴於state=present | |||
name | 該任務的描述 | |||
special_time | 指定何時執行,參數:reboot,yearly,annually,monthly,weekly,daily,hourly | |||
state | 確認該任務計劃是建立仍是刪除 | |||
user | 以哪一個用戶的身份執行 |
參數名 | 是否必須 | 默認值 | 選項 | 說明 |
home | 指定用戶的家目錄,須要與createhome配合使 | |||
groups | 指定用戶的屬組 | |||
uid | 指定用的uid | |||
password | 指定用戶的密碼 | |||
name | 指定用戶名 | |||
createhome | 是否建立家目錄 yes|no | |||
system | 是否爲系統用戶 | |||
remove | 當state=absent時,remove=yes則表示連同家目錄一塊兒刪除,等價於userdel -r | |||
state | 是建立仍是刪除 | |||
shell | 指定用戶的shell環境 |
參數名 | 是否必須 | 默認值 | 選項 | 說明 |
sha256sum | 下載完成後進行sha256 check; | |||
timeout | 下載超時時間,默認10s | |||
url | 下載的URL | |||
url_password、url_username | 主要用於須要用戶名密碼進行驗證的狀況 | |||
use_proxy | 是事使用代理,代理需事先在環境變動中定義 |
參數名 | 是否必須 | 默認值 | 選項 | 說明 |
archive | 歸檔,至關於同時開啓recursive(遞歸)、links、perms、times、owner、group、-D選項都爲yes ,默認該項爲開啓 | |||
checksum | 跳過檢測sum值,默認關閉 | |||
compress | 是否開啓壓縮 | |||
copy_links | 複製連接文件,默認爲no ,注意後面還有一個links參數 | |||
delete | 刪除不存在的文件,默認no | |||
dest | 目錄路徑 | |||
dest_port | dest_port:默認目錄主機上的端口 ,默認是22,走的ssh協議 | |||
dirs | 傳速目錄不進行遞歸,默認爲no,即進行目錄遞歸 | |||
rsync_opts | rsync參數部分 | |||
set_remote_user | 主要用於/etc/ansible/hosts中定義或默認使用的用戶與rsync使用的用戶不一樣的狀況 | |||
mode | push或pull 模塊,push模的話,通常用於從本機向遠程主機上傳文件,pull 模式用於從遠程主機上取文件 |