此快速參考備忘單提供了使用 的各種方法。
安裝命令 | 環境 |
---|---|
brew install ansible | macos |
yum install -y ansible | centos |
pip install ansible | python |
文件路徑 | 說明 |
---|---|
/etc/ansible/ansible.cfg | 系統范圍的配置 |
~/ansible.cfg | 用戶特定的配置 |
$pwd/ansible.cfg | 當前目錄下的配置 |
/etc/ansible/hosts
mail.example.com
[webservers]
foo.example.com
bar.example.com
[web]
172.18.12.5[1:4]
[webservers]
www[01:50].example.com
[usa:children]
southeast
northeast
southwest
northwest
group variables
如果組中的所有主機共享一個變量值,則可以一次將該變量應用于整個組
[atlanta]
host1
host2
[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
檢查Inventory是否生效
$ ansible all --list-hosts
ping所有目標
$ ansible all -m ping
ping本地(不使用SSH連接)
$ ansible all -i localhost, -e '{"ansible_connection": "local"}' -m ping
本地執行命令
$ ansible all -i localhost, -e '{"ansible_connection": "local"}' -a 'hostname'
獲取本地主機的信息
$ ansible all -i localhost, -e '{"ansible_connection": "local"}' -m setup
獲取遠程到本地
$ ansible target -m fetch -a "src=/tmp/seq dest=/tmp/seq"
拷貝本地到遠程
$ ansible target -m copy -a "src=/tmp/seq dest=/tmp/seq"
$ ansible
$ ansible <host-pattern> [options]
:- | - |
---|---|
-a MODULE_ARGS , --args=MODULE_ARGS | 模塊參數 |
--ask-vault-pass | 詢問保險庫密碼 |
-B SECONDS , --background=SECONDS | 異步運行,X 秒后失敗 (默認=N/A) |
-C , --check | 不要做任何改變;相反,嘗試預測可能發生的一些變化 |
-D , --diff | 更改(小)文件和模板時,顯示這些文件中的差異; 與 --check 配合使用效果很好 |
-e EXTRA_VARS , --extra-vars=EXTRA_VARS | 將附加變量設置為 key=value 或 YAML/JSON |
-f FORKS , --forks=FORKS | 指定要使用的并行進程數 (default=5) |
-h , --help | 顯示此幫助信息并退出 |
-i INVENTORY , --inventory-file=INVENTORY | 指定清單主機路徑(默認=/etc/ansible/hosts)或逗號分隔的主機列表 |
-l SUBSET , --limit=SUBSET | 進一步將選定主機限制為其他模式 |
--list-hosts | 輸出匹配主機列表;不執行任何其他操作 |
-m MODULE_NAME , --module-name=MODULE_NAME | 要執行的模塊名稱 (default=command) |
-M MODULE_PATH , --module-path=MODULE_PATH | 指定模塊庫的路徑 (default=None) |
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE | 用于重新生成密鑰的新保管庫密碼文件 |
-o , --one-line | 壓縮輸出 |
--output=OUTPUT_FILE | 用于加密或解密的輸出文件名; 使用 - 用于標準輸出 |
-P POLL_INTERVAL , --poll=POLL_INTERVAL | 如果使用 -B 則設置輪詢間隔(default=15) |
--syntax-check | 對 playbook 執行語法檢查,但不要執行它 |
-t TREE , --tree=TREE | 將輸出記錄到此目錄 |
--vault-password-file=VAULT_PASSWORD_FILE | 保險庫密碼文件 |
-v , --verbose | 詳細模式(-vvv 更多,-vvvv 啟用連接調試) |
--version | 顯示程序的版本號并退出 |
控制誰以及如何連接到主機,連接選項:
:- | - |
---|---|
-k , --ask-pass | 詢問連接密碼 |
--private-key=PRIVATE_KEY_FILE , --key-file=PRIVATE_KEY_FILE | 使用此文件來驗證連接 |
-u REMOTE_USER , --user=REMOTE_USER | 以此用戶身份連接(default=None) |
-c CONNECTION , --connection=CONNECTION | 要使用的連接類型 (default=smart) |
-T TIMEOUT , --timeout=TIMEOUT | 以秒為單位覆蓋連接超時 (default=10) |
--ssh-common-args=SSH_COMMON_ARGS | 指定要傳遞給 sftp/scp/ssh 的常用參數 (e.g. ProxyCommand) |
--sftp-extra-args=SFTP_EXTRA_ARGS | 指定僅傳遞給 sftp 的額外參數 (e.g. -f, -l) |
--scp-extra-args=SCP_EXTRA_ARGS | 指定僅傳遞給 scp 的額外參數 (e.g. -l) |
--ssh-extra-args=SSH_EXTRA_ARGS | 指定僅傳遞給 ssh 的額外參數 (e.g. -R) |
控制您成為目標主機上的用戶的方式和用戶,特權升級選項:
:- | - |
---|---|
-s , --sudo | 使用 sudo (nopasswd) 運行操作(已棄用,使用 become) |
-U SUDO_USER , --sudo-user=SUDO_USER | 所需的 sudo 用戶(默認=root)(已棄用,使用 become) |
-S , --su | 使用 su 運行操作(已棄用,使用 become) |
-R SU_USER , --su-user=SU_USER | 以該用戶身份使用 su 運行操作(默認 = root)(已棄用,使用 become) |
-b , --become | 使用 become 運行操作(不暗示密碼提示) |
--become-method=BECOME_METHOD | 要使用的權限提升方法(默認=sudo),有效選擇:[ sudo |
--become-user=BECOME_USER | 以該用戶身份運行操作(默認=root) |
--ask-sudo-pass | 詢問 sudo 密碼(已棄用,使用 become) |
--ask-su-pass | 詢問 su 密碼(已棄用,使用 become) |
-K , --ask-become-pass | 要求提權密碼 |
$ ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...
:- | - |
---|---|
-h , --help | 顯示此幫助信息并退出 |
-v , --verbose | 詳細模式(-vvv 更多,-vvvv 啟用連接調試) |
--version | 顯示程序的版本號并退出 |
$ ansible-galaxy search --author <AUTHOR>
$ ansible-galaxy search --platforms <PLATFORM>
$ ansible-galaxy search --galaxy-tags <TAG>
$ ansible-galaxy info <ROLE>
$ ansible-galaxy install <ROLE> -p <ROLE_DIRECTORY>
$ ansible-galaxy install -r <ROLE1> <ROLE2> <ROLE3> ...
$ ansible-galaxy list
$ ansible-galaxy remove <ROLE>
$ ansible-galaxy init <ROLE>
$ ansible-galaxy init --offline <ROLE>
在本地訪問文檔
$ ansible-doc
$ ansible-doc [options] [module...]
:- | - |
---|---|
-h , --help | 顯示此幫助信息并退出 |
-l , --list | 列出可用模塊 |
-M MODULE_PATH , --module-path=MODULE_PATH | 指定模塊庫的路徑 (default=None) |
-s , --snippet | 顯示指定模塊的劇本片段 |
-v , --verbose | 詳細模式(-vvv 更多,-vvvv 啟用連接調試) |
--version | 顯示程序的版本號并退出 |
$ ansible-vault
$ ansible-vault [create|decrypt|edit|encrypt|rekey|view] [--help] [options] vaultfile.yml
:- | - |
---|---|
--ask-vault-pass | 詢問保險庫密碼 |
-h , --help | 顯示此幫助信息并退出 |
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE | 用于重新生成密鑰的新保管庫密碼文件 |
--output=OUTPUT_FILE | 用于加密或解密的輸出文件名; 使用 - 用于標準輸出 |
--vault-password-file=VAULT_PASSWORD_FILE | 保險庫密碼文件 |
-v , --verbose | 詳細模式(-vvv 更多,-vvvv 啟用連接調試) |
--version | 顯示程序的版本號并退出 |
$ ansible-playbook
$ ansible-playbook playbook.yml
:- | - |
---|---|
--ask-vault-pass | 詢問保險庫密碼 |
-C , --check | 不要做任何改變;相反,嘗試預測可能發生的一些變化 |
-D , --diff | 更改(小)文件和模板時,顯示這些文件中的差異;與 --check 配合使用效果很好 |
-e EXTRA_VARS , --extra-vars=EXTRA_VARS | 將附加變量設置為 key=value 或 YAML/JSON |
--flush-cache | 清除事實緩存 |
--force-handlers | 即使任務失敗也運行處理程序 |
-f FORKS , --forks=FORKS | 指定要使用的并行進程數(默認值=5) |
-h , --help | 顯示此幫助信息并退出 |
-i INVENTORY , --inventory-file=INVENTORY | 指定清單主機路徑(默認=/etc/ansible/hosts)或逗號分隔的主機列表 |
-l SUBSET , --limit=SUBSET | 進一步將選定主機限制為其他模式 |
--list-hosts | 輸出匹配主機列表;不執行任何其他操作 |
--list-tags | 列出所有可用的標簽 |
--list-tasks | 列出所有將要執行的任務 |
-M MODULE_PATH , --module-path=MODULE_PATH | 指定模塊庫的路徑(默認=無) |
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE | 用于重新生成密鑰的新保管庫密碼文件 |
--output=OUTPUT_FILE | 用于加密或解密的輸出文件名;使用 - 用于標準輸出 |
--skip-tags=SKIP_TAGS | 只運行標簽與這些值不匹配的播放和任務 |
--start-at-task=START_AT_TASK | 在匹配此名稱的任務處啟動劇本 |
--step | 一步一步:在運行前確認每個任務 |
--syntax-check | 對 playbook 執行語法檢查,但不要執行它 |
-t TAGS , --tags=TAGS | 只運行帶有這些值標記的播放和任務 |
--vault-password-file=VAULT_PASSWORD_FILE | 保險庫密碼文件 |
-v , --verbose | 詳細模式(-vvv 更多,-vvvv 啟用連接調試) |
--version | 顯示程序的版本號并退出 |
連接選項:
:- | - |
---|---|
-k , --ask-pass | 詢問連接密碼 |
--private-key=PRIVATE_KEY_FILE , --key-file=PRIVATE_KEY_FILE | 使用此文件來驗證連接 |
-u REMOTE_USER , --user=REMOTE_USER | 以此用戶身份連接(默認=None) |
-c CONNECTION , --connection=CONNECTION | 要使用的連接類型(默認=smart) |
-T TIMEOUT , --timeout=TIMEOUT | 以秒為單位覆蓋連接超時(默認值 = 10) |
--ssh-common-args=SSH_COMMON_ARGS | 指定要傳遞給 sftp/scp/ssh 的常用參數(例如 ProxyCommand) |
--sftp-extra-args=SFTP_EXTRA_ARGS | 指定僅傳遞給 sftp 的額外參數(例如 -f、-l) |
--scp-extra-args=SCP_EXTRA_ARGS | 指定僅傳遞給 scp 的額外參數(例如 -l) |
--ssh-extra-args=SSH_EXTRA_ARGS | 指定僅傳遞給 ssh 的額外參數(例如 -R) |
特權升級選項:
:- | - |
---|---|
-s , --sudo | 使用 sudo (nopasswd) 運行操作(已棄用,使用 become) |
-U SUDO_USER , --sudo-user=SUDO_USER | 所需的 sudo 用戶(默認=root)(已棄用,使用become) |
-S , --su | 使用 su 運行操作(已棄用,使用 become) |
-R SU_USER , --su-user=SU_USER | 以該用戶身份使用 su 運行操作(默認 = root)(已棄用,使用become) |
-b , --become | 使用 become 運行操作(不暗示密碼提示) |
--become-method=BECOME_METHOD | 要使用的權限提升方法(默認=sudo),有效選擇:[ sudo | su | pbrun | pfexec | runas | doas | dzdo ] |
--become-user=BECOME_USER | 以該用戶身份運行操作(默認=root) |
--ask-sudo-pass | 詢問 sudo 密碼(已棄用,使用 become) |
--ask-su-pass | 詢問 su 密碼(已棄用,使用 become) |
-K , --ask-become-pass | 要求提權密碼 |
$ ansible-pull
$ ansible-pull -U <repository> [options]
:- | - |
---|---|
--accept-host-key | 如果尚未添加,則添加 repo url 的主機密鑰 |
--ask-vault-pass | 詢問保險庫密碼 |
-C CHECKOUT , --checkout=CHECKOUT | 分支/標簽/提交結帳。默認為存儲庫模塊的行為。 |
-d DEST , --directory=DEST | 簽出存儲庫的目錄 |
-e EXTRA_VARS , --extra-vars=EXTRA_VARS | 將附加變量設置為 key=value 或 YAML/JSON |
-f , --force | 即使無法更新存儲庫也運行 playbook |
--full | 做一個完整的克隆,而不是一個淺的 |
-h , --help | 顯示此幫助信息并退出 |
-i INVENTORY , --inventory-file=INVENTORY | 指定清單主機路徑(默認=/etc/ansible/hosts)或逗號分隔的主機列表 |
-l SUBSET , --limit=SUBSET | 進一步將選定主機限制為其他模式 |
--list-hosts | 輸出匹配主機列表;不執行任何其他操作 |
-m MODULE_NAME , --module-name=MODULE_NAME | 存儲庫模塊名稱,ansible 將使用它來簽出 repo。默認是 git |
-M MODULE_PATH , --module-path=MODULE_PATH | 指定模塊庫的路徑(默認=無) |
--new-vault-password-file=NEW_VAULT_PASSWORD_FILE | 用于重新生成密鑰的新保管庫密碼文件 |
-o , --only-if-changed | 僅在存儲庫已更新時才運行 playbook |
--output=OUTPUT_FILE | 用于加密或解密的輸出文件名;使用 - 用于標準輸出 |
--purge | 劇本運行后清除結帳 |
--skip-tags=SKIP_TAGS | 只運行標簽與這些值不匹配的播放和任務 |
-s SLEEP , --sleep=SLEEP | 在開始之前休眠隨機間隔(在 0 到 n 秒之間)。這是分散 git 請求的有用方法 |
-t TAGS , --tags=TAGS | 只運行帶有這些值標記的播放和任務 |
-U URL , --url=URL | 劇本存儲庫的 URL |
--vault-password-file=VAULT_PASSWORD_FILE | 保險庫密碼文件 |
-v , --verbose | 詳細模式(-vvv 更多,-vvvv 啟用連接調試) |
--verify-commit | 驗證簽出提交的 GPG 簽名,如果失敗則中止運行 playbook。這就需要對應的VCS模塊來支持這樣的操作 |
--version | 顯示程序的版本號并退出 |
連接選項:
:- | - |
---|---|
-k , --ask-pass | 詢問連接密碼 |
--private-key=PRIVATE_KEY_FILE , --key-file=PRIVATE_KEY_FILE | 使用此文件來驗證連接 |
-u REMOTE_USER , --user=REMOTE_USER | 以此用戶身份連接(默認=無) |
-c CONNECTION , --connection=CONNECTION | 要使用的連接類型(默認=智能) |
-T TIMEOUT , --timeout=TIMEOUT | 以秒為單位覆蓋連接超時(默認值 = 10) |
--ssh-common-args=SSH_COMMON_ARGS | 指定要傳遞給 sftp/scp/ssh 的常用參數(例如 ProxyCommand) |
--sftp-extra-args=SFTP_EXTRA_ARGS | 指定僅傳遞給 sftp 的額外參數(例如 -f、-l) |
--scp-extra-args=SCP_EXTRA_ARGS | 指定僅傳遞給 scp 的額外參數(例如 -l) |
--ssh-extra-args=SSH_EXTRA_ARGS | 指定僅傳遞給 ssh 的額外參數(例如 -R) |
特權升級選項:
:- | - |
---|---|
--ask-sudo-pass | 詢問 sudo 密碼(已棄用,使用become) |
--ask-su-pass | 詢問 su 密碼(已棄用,使用become) |
-K , --ask-become-pass | 要求提權密碼 |