Ansible詳解

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'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章