Ad-Hoc命令集由/usr/bin/ansible實現(xiàn)今穿。命令用法如下:
ansible <host-pattern> [options]
實例展示:
情景1:檢查proxy組所有主機是否存活蒋川。
執(zhí)行命令:ansible proxy –f 5 –m ping
情景2:返回proxy組所有主機的hostname,并打印最詳細的執(zhí)行過程到標準輸出硝全。
執(zhí)行命令:ansible proxy -s -m command -a 'hostname' -vvv
情景3:列出Web組所有主機列表批糟。
執(zhí)行命令:ansible web --list
情景4:對10.21.40.61服務(wù)器以root執(zhí)行sleep 20赚爵,設(shè)置最大連接超時時長為2s庶柿,且設(shè)置為后臺運行模式村怪,
執(zhí)行過程每2s輸出一次進度,如5s還未執(zhí)行完則終止該任務(wù)浮庐。
執(zhí)行命令:
// time命令可省甚负,為方便觀察結(jié)果,這里使用time命令查看執(zhí)行時長
time ansible 10.21.40.61 -B 5 -P 2 -T 2 -m command -a 'sleep 20' -u root
情景5:批量查看apps組所有主機的磁盤容量(使用command模塊)。
執(zhí)行命令:ansible apps -a "df -lh"
情景2:批量查看遠程主機內(nèi)存使用情況(shell模塊)梭域。
執(zhí)行命令:ansible apps -m shell -a "free -m"
Ansible的并發(fā)特性
步驟1:定義[apps]組斑举,編輯/etc/ansible/hosts的配置。
執(zhí)行命令vi /etc/ansible/hosts病涨,鍵入i進入vi編輯模式懂昂,跳轉(zhuǎn)到文件最末尾,添加如下配置:
[apps]
192.168.37.130
192.168.37.155
192.168.37.142
192.168.37.156
步驟2:多次執(zhí)行Ansible命令没宾,執(zhí)行命令如下:
ansible apps -m ping -f 3
步驟3:對比返回結(jié)果,如表3所示:
返回結(jié)果分析如下:
1)同樣的命令多次執(zhí)行沸柔,但每次的輸出結(jié)果都不一定一樣循衰。
2)輸出結(jié)果不是按照/etc/ansible/hosts中[apps]定義的主機順序輸出。
3)結(jié)果輸出基本上遵循每次輸出3條記錄(線程池始終保持3個線程褐澎,所以這里如果每次輸出小于等于3都是正常的)会钝。
建議并發(fā)數(shù)配置的CPU核數(shù)偶數(shù)倍就好皮璧。如4Cores 8GB的服務(wù)器芥吟,建議最多并發(fā)20個線程。
如何使用不熟悉的模塊
使用ansible-doc來幫忙了解不熟悉的模塊:
Usage: ansible-doc [options] [module...]
Options:
-a, --all Show documentation for all modules
-h, --help show this help message and exit
-l, --list List available modules
-M MODULE_PATH, --module-path=MODULE_PATH
specify path(s) to module library (default=None)
-s, --snippet Show playbook snippet for specified module(s)
-v, --verbose verbose mode (-vvv for more, -vvvv to enable
connection debugging)
--version show program's version number and exit
使用方法:
情景1:顯示所有可用模塊瓜客。
執(zhí)行命令:ansible-doc –l
情景2:以yum模塊為例俭正,我們希望獲取yum模塊的HELP說明奸鬓。
執(zhí)行命令:ansible-doc yum
步驟:安裝redhat-lsb。
執(zhí)行命令:ansible apps -m yum -a 'name=redhat-lsb state=present'
安裝ntp服務(wù)掸读。
執(zhí)行命令:ansible apps -s -m yum -a "name=ntp state=present"
啟動ntp服務(wù)串远,并設(shè)置為開機啟動。
執(zhí)行命令:ansible apps -m service -a "name=ntpd state=started enabled=yes"
安裝Nginx儿惫。
執(zhí)行命令:ansible proxy -m yum -a "name=nginx state=present"
Ansible的YUM模塊同樣支持指定某版本安裝澡罚,其name參數(shù)指定具體版本地址(網(wǎng)絡(luò)或本地均可)。YUM模塊也支持從網(wǎng)絡(luò)安裝或從本地安裝肾请。
網(wǎng)絡(luò)安裝留搔,執(zhí)行命令:
ansible proxy -m yum -a "name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present"
如果從本地安裝,執(zhí)行命令:
ansible proxy -m yum -a "name=/usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present"
另一實例:
1)Nginx铛铁、PHP安裝命令如下:
ansible app -m yum -a "name=nginx state=present"
ansible app -m yum -a "name=php state=present"
2)Django安裝命令如下:
步驟1:安裝MySQL-python和python-setuptools依賴包隔显。
ansible app -m yum -a "name=MySQL-python state=present"
ansible app -m yum -a "name=python-setuptools state=present"
步驟2:安裝Django。
ansible app -m pip -a "name=django state=present"
步驟3:檢查Django安裝是否正常避归,執(zhí)行命令如下:
ansible app -m command -a "python -c 'import django; print django.get_version()'"
指定特定主機執(zhí)行
1)--limit:通過--limit參數(shù)限定主機做變更荣月。
情景:在App組中啟動192.168.37.15的NTP服務(wù)。
命令用法:ansible app -m command -a "service ntpd status" --limit "192.168.37.158"
2)指定IP:通過指定具體IP限定主機做變更梳毙。
情景:啟動192.168.37.158的NTP服務(wù)哺窄。
執(zhí)行命令:ansible 192.168.37.158 -m command -a "service ntpd status"
3)用“:”作分隔符,指定多臺機器做變更。
情景:啟動192.168.37.158和192.168.37.161的NTP服務(wù)萌业。
執(zhí)行命令:ansible "192.168.37.158:192.168.37.161" -m command -a "service ntpd status"
4)通過“*”泛匹配坷襟,更靈活地針對多臺主機做變更。
情景:啟動192.168.37.*所有主機的NTP服務(wù)生年。
執(zhí)行命令:ansible 192.168.37.* -m command -a "service ntpd status"
用戶和組管理
Ad-Hoc用戶與組管理
Linux系統(tǒng)用戶管理:user婴程。
Windows系統(tǒng)用戶管理:win_user。
都是模塊
抱婉?档叔??蒸绩?衙四??患亿?传蹈??步藕?惦界?