ansible 命令主要用于批量管理linux命令,來實(shí)現(xiàn)自動(dòng)化管理。常用批量操作包括:主機(jī)分組管理、實(shí)時(shí)批量執(zhí)行命令或腳本、實(shí)時(shí)批量分發(fā)文件或目錄、定時(shí)同步文件等。
yum install ansible
安裝完成后 /etc/ansible/ 目錄下有個(gè) hosts 文件,對(duì)主機(jī)實(shí)現(xiàn)批量管理主要是通過配置 hosts 文件。
基本使用:
ansible命令格式:ansible <host-pattern> [options]
常用 options 參數(shù):
-m, NAME, --module-name=NAME: 指定執(zhí)行使用的模塊。
-a, 'ARGUMENTS', --args='ARGUMENTS': 模塊參數(shù)。
-k, --ask-pass SSH: 認(rèn)證密碼。
常用 -m (module) 參數(shù):
shell、copy、script、file、yum、user、service
<host-pattern> 主機(jī)列表配置:
編輯 /etc/ansible/hosts 文件,添加要批量執(zhí)行的主機(jī)linux命令,可以指定分組。
[GROUP1] #組名 10.111.17.119:22 # 主機(jī):端口,不指定端口則默認(rèn) ssh 端口為22 10.111.17.120:22 [GROUP2] 10.111.18.119:22 10.111.18.120:22
ansible常用批量操作方式基本可以有 shell、copy 和 script 三個(gè) module 完成。
比如查看 GROUP1 主機(jī)組機(jī)器的 ssh 進(jìn)程。
ansible GROUP1 -m shell -a 'ps -ef |grep ssh' -k
shell 模塊是使用最頻繁的,file、yum、user、service 這四個(gè) module 的功能 shell 都可以完成。
ansible GROUP1 -m shell -a 'mkdir -p /root/test/' -k #file-module,新建目錄 ansible GROUP1 -m shell -a 'yum install vim -y' -k #yum-module,安裝軟件 ansible GROUP1 -m shell -a 'useradd -d /mnt/kwang kwang' -k #file-module,添加用戶 ansible GROUP1 -m shell -a 'service status iptables' -k #service-module,查看服務(wù)狀態(tài)
將 /root/ 目錄下的 ansible-test.jar 批量拷貝到指定主機(jī)組機(jī)器上。
ansible GROUP1 -m copy -a 'src=/root/ansible-test.jar dest=/root/' -k
在指定主機(jī)組機(jī)器上執(zhí)行本機(jī)上的 /root/test.sh 腳本
ansible GROUP1 -m script -a '/root/test.sh' -k
批量執(zhí)行 shell 腳本的邏輯是先將腳本拷貝到指定主機(jī)組機(jī)器上,然后執(zhí)行命令。
將主機(jī)組機(jī)器上的 /root/ansible.txt 文本中的 'ansible script test' 內(nèi)容替換成 'be replaced',其實(shí)批量替換操作是 shell 模塊的操作。
ansible GROUP1 -m shell -a "sed -i 's/ansible script test/be replaced/g' /root/ansible.txt" -k
【參考資料】
[1]楊云1028, 自動(dòng)化運(yùn)維工具ansible詳細(xì)介紹.