ansible 命令主要用於批量管理,來實現自動化管理。經常使用批量操做包括:主機分組管理、實時批量執行命令或腳本、實時批量分發文件或目錄、定時同步文件等。shell
yum install ansible
安裝完成後 /etc/ansible/ 目錄下有個 hosts 文件,對主機實現批量管理主要是經過配置 hosts 文件。vim
基本使用:運維
ansible命令格式:ansible <host-pattern> [options]
經常使用 options 參數:
-m, NAME, --module-name=NAME: 指定執行使用的模塊。
-a, 'ARGUMENTS', --args='ARGUMENTS': 模塊參數。
-k, --ask-pass SSH: 認證密碼。ssh
經常使用 -m (module) 參數:工具
shell、copy、script、file、yum、user、servicespa
<host-pattern> 主機列表配置:code
編輯 /etc/ansible/hosts 文件,添加要批量執行的主機,能夠指定分組。blog
[GROUP1] #組名 10.111.17.119:22 # 主機:端口,不指定端口則默認 ssh 端口爲22 10.111.17.120:22 [GROUP2] 10.111.18.119:22 10.111.18.120:22
ansible經常使用批量操做方式基本能夠有 shell、copy 和 script 三個 module 完成。進程
好比查看 GROUP1 主機組機器的 ssh 進程。ip
ansible GROUP1 -m shell -a 'ps -ef |grep ssh' -k
shell 模塊是使用最頻繁的,file、yum、user、service 這四個 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,查看服務狀態
將 /root/ 目錄下的 ansible-test.jar 批量拷貝到指定主機組機器上。
ansible GROUP1 -m copy -a 'src=/root/ansible-test.jar dest=/root/' -k
在指定主機組機器上執行本機上的 /root/test.sh 腳本
ansible GROUP1 -m script -a '/root/test.sh' -k
批量執行 shell 腳本的邏輯是先將腳本拷貝到指定主機組機器上,而後執行命令。
將主機組機器上的 /root/ansible.txt 文本中的 'ansible script test' 內容替換成 'be replaced',其實批量替換操做是 shell 模塊的操做。
ansible GROUP1 -m shell -a "sed -i 's/ansible script test/be replaced/g' /root/ansible.txt" -k
【參考資料】
[1] 楊雲1028, 自動化運維工具ansible詳細介紹.