Usage: ansible <host-pattern> [options]
Options:
-m MODULE\_NAME, --module-name=MODULE\_NAME 要執行的模塊,默認爲 command
-a MODULE_ARGS, --args=MODULE_ARGS 模塊的參數
-u REMOTE_USER, --user=REMOTE_USER ssh 連接的用戶名,默認用 root,ansible.cfg 中可以配置
-k, --ask-pass 提示輸入 ssh 登錄密碼,當使用密碼驗證登錄的時候用
-s, --sudo sudo 運行
-U SUDO_USER, --sudo-user=SUDO_USER sudo 到哪個用戶,默認爲 root
-K, --ask-sudo-pass 提示輸入 sudo 密碼,當不是 NOPASSWD 模式時使用
-B SECONDS, --background=SECONDS run asynchronously, failing after X seconds(default=N/A)
-P POLL_INTERVAL, --poll=POLL_INTERVAL set the poll interval if using
-B (default=15)
-C, --check 只是測試一下會改變什麼內容,不會真正去執行
-c CONNECTION 連接類型(default=smart)
-f FORKS, --forks=FORKS fork 多少個進程併發處理,默認 5
-i INVENTORY, --inventory-file=INVENTORY 指定 hosts 文件路徑,默認 default =/etc/ansible/hosts
-l SUBSET, --limit=SUBSET 指定一個 pattern,對<host_pattern>已經匹配的主機中再過濾一次
--list-hosts 只打印有哪些主機會執行這個 playbook 文件:不是實際執行該 playbook
-M MODULE_PATH, --module-path=MODULE_PATH 要執行的模塊的路徑,默認爲/usr/share/ansible/
-o, --one-line 壓縮輸出,摘要輸出
--private-key=PRIVATE_KEY_FILE 私鑰路徑
-T TIMEOUT, --timeout=TIMEOUT ssh 連接超時時間,默認 10 秒
-t TREE, --tree=TREE 日誌輸出到該目錄,日誌文件名會以主機名命名
-v, --verbose verbose mode (-vvv for more, -vvvv to enable connection debugging)
copy模塊:
目的:把主控端/root目錄下的a.sh文件拷貝到到指定節點上
命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/ owner=root group=root mode=0755'
file模塊:
目的:更改指定節點上/tmp/t.sh的權限爲755,屬主和屬組爲root
命令:ansible all -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"
cron模塊:
目的:在指定節點上定義一個計劃任務,每隔3分鐘到主控端更新一次時間
命令:ansible all -m cron -a 'name="custom job" minute=\*/3 hour=\* day=\* month=\* weekday=\* job="/usr/sbin/ntpdate 172.16.254.139"'
group模塊:
目的:在所有節點上創建一個組名爲nolinux,gid爲2014的組
命令:ansible all -m group -a 'gid=2014 name=nolinux'
user模塊:
目的:在指定節點上創建一個用戶名爲nolinux,組爲nolinux的用戶
命令:ansible 10.1.1.113 -m user -a 'name=nolinux groups=nolinux state=present'
刪除用戶
命令:ansible 10.1.1.113 -m user -a 'name=nolinux state=absent remove=yes'
yum模塊:
目的:在指定節點上安裝 apache 服務
命令:ansible all -m yum -a "state=present name=httpd"
state=latest=>>安裝最新版本
service模塊:
目的:啓動指定節點上的 httpd 服務,並讓其開機自啓動
命令:ansible 10.1.1.113 -m service -a 'name=httpd state=restarted enabled=yes'
script模塊:
目的:在指定節點上執行/root/a.sh腳本(該腳本是在ansible主控端)
命令:ansible 10.1.1.113 -m script -a '/root/a.sh'
ping模塊:
目的:檢查指定節點機器是否還能連通
命令:ansible 10.1.1.113 -m ping
command模塊:
目的:在指定節點上運行hostname命令
命令:ansible 10.1.1.113 -m command -a 'hostname'
raw模塊:
目的:在10.1.1.113節點上運行ifconfig命令
命令:ansible 10.1.1.113 -m raw-a 'ifconfig|eth0'
get_url模塊:
目的:將http://10.1.1.116/favicon.ico文件下載到指定節點的/tmp目錄下
命令:ansible 10.1.1.113 -m get_url -a 'url=http://10.1.1.116/favicon.ico dest=/tmp'
stat模塊:
目的:獲取遠程文件狀態信息,包括atime、ctime、mtime、md5、uid、gid等信息
ansible web -m stat -a 'path=/etc/sysctl.conf'
synchronize模塊:
目的:將主控方/root/a目錄推送到指定節點的/tmp目錄下
命令:ansible 10.1.1.113 -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'
執行效果:
delete=yes 使兩邊的內容一樣(即以推送方爲主)
compress=yes 開啓壓縮,默認爲開啓
--exclude=.git 忽略同步.git結尾的文件
mode=pull 更改推送模式爲拉取模式
目的:將10.1.1.113節點的/tmp/a目錄拉取到主控節點的/root目錄下
命令:ansible 10.1.1.113 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/'</code></pre>
# 拷貝文件並賦予用戶,組,權限
ansible all -m copy -a 'src=~/script/tomcat.sh dest=/opt/admin/backup/ owner=admin group=admin mode=755'
# 利用root統一修改log用戶的密碼
ansible all -S -R root -m raw -a "echo 'Password' | passwd --stdin log"
# 利用root統一修改制定目錄的權限
ansible all -S -R root -m raw -a "chmod 0750 -R /opt/admin"
# 批量添加crontab定時任務
ansible config_dev -m cron -a "name='listen_tomcat' minute='5' user='admin' job='sh /opt/admin/script/listen_tomcat.sh'"
ansible all -m cron -a 'name="ban IP of login" minute=* hour=*/2 day=* month=* weekday=* job="sh /opt/admin/script/listen_tomcat.sh"'
ansible all -m cron -a 'name="rm_log" minute=* hour=*/6 day=* month=* weekday=* job="sh /opt/admin/script/log.sh"'
# 拷貝文件
ansible config_dev -m copy -a 'src=/opt/admin/script/shell/listen_tomcat.sh dest=/opt/admin/script/ owner=admin group=admin mode=755'