天天看點

自動化運維工具Ansible 最常用指令(備忘查詢)

作者:區塊軟體開發
自動化運維工具Ansible 最常用指令(備忘查詢)

安裝

brew install ansible macos
yum install -y ansible centos
pip install ansible python
  • Ansible 官方文檔

配置位置

/etc/ansible/ansible.cfg 系統範圍的配置
~/ansible.cfg 使用者特定的配置
$pwd/ansible.cfg 目前目錄下的配置

Inventory檔案(hosts清單)

靜态Inventory

/etc/ansible/hosts

mail.example.com

[webservers]
foo.example.com
bar.example.com
           

Inventory 主機組使用多個IP和域名

[web]
172.18.12.5[1:4]
[webservers]
www[01:50].example.com
           

Inventory 主機組使用子主機組

[usa:children]
southeast
northeast
southwest
northwest
           

給多台主機設定變量

group variables 如果組中的所有主機共享一個變量值,則可以一次将該變量應用于整個組

[atlanta]
host1
host2

[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com

           

指令行(ad-hoc)

ansible

檢查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
$ 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 工具

$ 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
$ 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
$ 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
$ 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 
$ 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 要求提權密碼

繼續閱讀