安裝
apt-get install ansible
配置
cat /etc/ansible/hosts
[test]
10.10.10.0.2 ansible_ssh_user=root ansible_ssh_pass=361way.com
執(zhí)行
ansible test -a 'uptime'
ansible 10.10.10.0.2 -a 'date'
幫助
參數(shù):
-a 'Arguments', --args='Arguments' 命令行參數(shù)
-m NAME, --module-name=NAME 執(zhí)行模塊的名字,默認(rèn)使用 command 模塊,所以如果是只執(zhí)行單一命令可以不用 -m參數(shù)
-i PATH, --inventory=PATH 指定庫(kù)存主機(jī)文件的路徑,默認(rèn)為/etc/ansible/hosts.
-u Username, --user=Username 執(zhí)行用戶(hù),使用這個(gè)遠(yuǎn)程用戶(hù)名而不是當(dāng)前用戶(hù)
-U --sud-user=SUDO_User sudo到哪個(gè)用戶(hù),默認(rèn)為 root
-k --ask-pass 登錄密碼,提示輸入SSH密碼而不是假設(shè)基于密鑰的驗(yàn)證
-K --ask-sudo-pass 提示密碼使用sudo
-s --sudo sudo運(yùn)行
-S --su 用 su 命令
-l --list 顯示所支持的所有模塊
-s --snippet 指定模塊顯示劇本片段
-f --forks=NUM 并行任務(wù)數(shù)。NUM被指定為一個(gè)整數(shù),默認(rèn)是5。 #ansible testhosts -a "/sbin/reboot" -f 10 重啟testhosts組的所有機(jī)器,每次重啟10臺(tái)
--private-key=PRIVATE_KEY_FILE 私鑰路徑,使用這個(gè)文件來(lái)驗(yàn)證連接
-v --verbose 詳細(xì)信息
all 針對(duì)hosts 定義的所有主機(jī)執(zhí)行
-M MODULE_PATH, --module-path=MODULE_PATH 要執(zhí)行的模塊的路徑,默認(rèn)為/usr/share/ansible/
--list-hosts 只打印有哪些主機(jī)會(huì)執(zhí)行這個(gè) playbook 文件,不是實(shí)際執(zhí)行該 playbook 文件
-o --one-line 壓縮輸出,摘要輸出.嘗試一切都在一行上輸出。
-t Directory, --tree=Directory 將內(nèi)容保存在該輸出目錄,結(jié)果保存在一個(gè)文件中在每臺(tái)主機(jī)上。
-B 后臺(tái)運(yùn)行超時(shí)時(shí)間
-P 調(diào)查后臺(tái)程序時(shí)間
-T Seconds, --timeout=Seconds 時(shí)間,單位秒s
-P NUM, --poll=NUM 調(diào)查背景工作每隔數(shù)秒。需要- b
-c Connection, --connection=Connection 連接類(lèi)型使用??赡艿倪x項(xiàng)是paramiko(SSH),SSH和地方。當(dāng)?shù)刂饕怯糜赾rontab或啟動(dòng)。
--tags=TAGS 只執(zhí)行指定標(biāo)簽的任務(wù) 例子:ansible-playbook test.yml --tags=copy 只執(zhí)行標(biāo)簽為copy的那個(gè)任務(wù)
--list-hosts 只打印有哪些主機(jī)會(huì)執(zhí)行這個(gè) playbook 文件,不是實(shí)際執(zhí)行該 playbook 文件
--list-tasks 列出所有將被執(zhí)行的任務(wù)
-C, --check 只是測(cè)試一下會(huì)改變什么內(nèi)容,不會(huì)真正去執(zhí)行;相反,試圖預(yù)測(cè)一些可能發(fā)生的變化
--syntax-check 執(zhí)行語(yǔ)法檢查的劇本,但不執(zhí)行它
-l SUBSET, --limit=SUBSET 進(jìn)一步限制所選主機(jī)/組模式 --limit=192.168.0.15 只對(duì)這個(gè)ip執(zhí)行
--skip-tags=SKIP_TAGS 只運(yùn)行戲劇和任務(wù)不匹配這些值的標(biāo)簽 --skip-tags=copy_start
-e EXTRA_VARS, --extra-vars=EXTRA_VARS 額外的變量設(shè)置為鍵=值或YAML / JSON
#cat update.yml
---
- hosts: {{ hosts }}
remote_user: {{ user }}
..............
#ansible-playbook update.yml --extra-vars "hosts=vipers user=admin" 傳遞{{hosts}}、{{user}}變量,hosts可以是 ip或組名
-l,--limit 對(duì)指定的 主機(jī)/組 執(zhí)行任務(wù) --limit=192.168.0.10,192.168.0.11 或 -l 192.168.0.10
hosts配置
ansible_ssh_host # 要連接的主機(jī)名
ansible_ssh_port # 端口號(hào)默認(rèn)是22
ansible_ssh_user # ssh連接時(shí)默認(rèn)使用的用戶(hù)名
ansible_ssh_pass # ssh連接時(shí)的密碼
ansible_sudo_pass # 使用sudo連接用戶(hù)是的密碼
ansible_ssh_private_key_file # 秘鑰文件如果不想使用ssh-agent管理時(shí)可以使用此選項(xiàng)
ansible_shell_type # shell的類(lèi)型默認(rèn)sh
ansible_connection # SSH 連接的類(lèi)型: local , ssh , paramiko在 ansible 1.2 之前默認(rèn)是 paramiko ,后來(lái)智能選擇,優(yōu)先使用基于 ControlPersist 的 ssh (支持的前提)
ansible_python _ interpreter #用來(lái)指定 python 解釋器的路徑,同樣可以指定ruby 、perl 的路徑
ansible.cfg 配置
/etc/ansible/ansible.cfg
[defaults]
# some basic default values...
hostfile = /etc/ansible/hosts \\指定默認(rèn)hosts配置的位置
# library_path = /usr/share/my_modules/
remote_tmp = $HOME/.ansible/tmp
pattern = *
forks = 5
poll_interval = 15
sudo_user = root \\遠(yuǎn)程sudo用戶(hù)
#ask_sudo_pass = True \\每次執(zhí)行ansible命令是否詢(xún)問(wèn)ssh密碼
#ask_pass = True \\每次執(zhí)行ansible命令時(shí)是否詢(xún)問(wèn)sudo密碼
transport = smart
remote_port = 22
module_lang = C
gathering = implicit
host_key_checking = False \\關(guān)閉第一次使用ansible連接客戶(hù)端是輸入命令提示
log_path = /var/log/ansible.log \\需要時(shí)可以自行添加。chown -R root:root ansible.log
system_warnings = False \\關(guān)閉運(yùn)行ansible時(shí)系統(tǒng)的提示信息,一般為提示升級(jí)
# set plugin path directories here, separate with colons
action_plugins = /usr/share/ansible_plugins/action_plugins
callback_plugins = /usr/share/ansible_plugins/callback_plugins
connection_plugins = /usr/share/ansible_plugins/connection_plugins
lookup_plugins = /usr/share/ansible_plugins/lookup_plugins
vars_plugins = /usr/share/ansible_plugins/vars_plugins
filter_plugins = /usr/share/ansible_plugins/filter_plugins
fact_caching = memory
[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
# The daemon timeout is measured in minutes. This time is measured
# from the last activity to the accelerate daemon.
accelerate_daemon_timeout = 30