對於簡單的命令,ssh:
# ssh remote_ip "command01 ; command02" 注意: A. 雙引號,必須有。如果不加雙引號,第二個ls命令在本地執行 B. 分號,兩個命令之間用分號隔開
ansible
ansible命令主要用於批量管理,來實現自動化管理。常用批量操作包括:主機分組管理,實時批量執行命令或腳本,實時批量分發文件或目錄,定時同步文件等。
一. 安裝ansible
# yum install ansible
安裝完成后 /etc/ansible/ 目錄下有個 hosts 文件,對主機實現批量管理主要是通過配置 hosts 文件.
二. ansible 命令參數詳解
常用參數: -m MODULE_NAME, --module-name=MODULE_NAME,執行模塊的名字,默認使用 command 模塊,所以如果是只執行單一命令可以不用 -m參數 -a MODULE_ARGS, --args=MODULE_ARGS 模塊的參數,如果執行默認COMMAND的模塊,即是命令參數,如:“date”,"pwd"等等,module arguments模塊參數 -C, --check don't make any changes; instead, try to predict some 只是測試一下會改變什么內容,不會真正去執行;相反,試圖預測一些可能發生的變化 -i INVENTORY, --inventory-file=INVENTORY,指定庫存主機文件的路徑,默認為/etc/ansible/hosts,(default=/etc/ansible/hosts) -k, --ask-pass ask for SSH password 登錄密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證 常用 -m (module) 參數: shell、copy、script、file、yum、user、service
三. 常用批量操作(在免密機器上操作,參數 -k 忽略)
ansible常用批量操作方式基本可以有 shell、copy 和 script 三個 module 完成。
1. 批量執行
比如查看 GROUP1 主機組機器的 ssh 進程
# 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,查看服務狀態
2. 批量拷貝文件
將 /root/ 目錄下的 ansible-test.jar 批量拷貝到指定主機組機器上
# ansible GROUP1 -m copy -a 'src=/root/ansible-test.jar dest=/root/' -k
3. 批量執行shell腳本
在指定主機組機器上執行本機上的 /root/test.sh 腳本
# ansible GROUP1 -m script -a '/root/test.sh' -k
批量執行shell腳本腳本,ip.txt里包含100個ip地址 # ansible -i ip.txt all -m script -a "fal.sh"
4. 批量替換相同文件的指定內容
將主機組機器上的 /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
