ansible軟件模塊參數

ansible-doc -l|wc -l
1378
官方網站:docs.ansible.com
ansible 管理主機信息或者主機組信息 -m 模塊名稱 -a 相關模塊參數

主機信息:遠程主機IP地址  遠程主機組名稱  遠程所有主機all
-m 指定相應模塊
-a 利用模塊中某些參數功能

(一)命令類型模塊:

第一個模塊:command
官方參考鏈接:http://docs.ansible.com/ansible/latest/modules/command_module.html
參數:chdir---在執行某個命令前,先切換目錄
[root@m01 ansible]# ansible 172.16.1.31 -m command -a "chdir=/tmp/ pwd"
172.16.1.31 | SUCCESS | rc=0 >>
/tmp

[root@m01 ansible]# ansible 172.16.1.31 -m command -a "chdir=/etc/ pwd"
172.16.1.31 | SUCCESS | rc=0 >>
/etc

參數:creates---判斷一個文件是否存在,如果已經存在了,後面的命令就不會執行
[root@m01 ansible]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.conf hostname"
172.16.1.41 | SUCCESS | rc=0 >>
skipped, since /etc/rsyncd.conf exists

[root@m01 ansible]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.conf.bak hostname"
172.16.1.41 | SUCCESS | rc=0 >>
skipped, since /etc/rsyncd.conf.bak exists

[root@m01 ansible]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.123456 hostname"
172.16.1.41 | SUCCESS | rc=0 >>
backup

參數:removes---判斷一個文件是否存在,如果不存在,後面的命令就不會執行
[root@m01 ansible]# ansible 172.16.1.41 -m command -a "removes=/etc/rsyncd.conf hostname"
172.16.1.41 | SUCCESS | rc=0 >>
backup

[root@m01 ansible]# ansible 172.16.1.41 -m command -a "removes=/etc/rsyncd.1212213123 hostname"
172.16.1.41 | SUCCESS | rc=0 >>
skipped, since /etc/rsyncd.1212213123 does not exist

參數(必須要有的):free_form---表示執行command模塊時,必須要有linux合法命令信息
ansible 172.16.1.41 -m command -a "ls"
172.16.1.41 | SUCCESS | rc=0 >>
1
anaconda-ks.cfg
dead.letter
heqing

第二個模塊:shell模塊(萬能模塊)
參數:chdir---在執行莫個命令前,先切換目錄
參數:creates---判斷一個文件是否存在,如果已經存在了,後面的命令就不會執行
參數:removes---判斷一個文件是否存在,如果不存在,後面的命令就不會執行
參數(必須要有的):free_form---表示執行command模塊時,必須要有linux合法命令信息
[root@m01 ansible]# ansible 172.16.1.41 -m shell -a "ls;pwd"
172.16.1.41 | SUCCESS | rc=0 >>
1
anaconda-ks.cfg
dead.letter
/root
說明:shell模塊可以滿足command模塊所有功能,並且可以支持識別特殊字符信息 < > | ; 

第三個模塊:script---專門運行腳本模塊
例如:ansible 172.16.1.41 -m script -a "/server/scripts/yum.sh"
參數:chdir---在執行莫個命令前,先切換目錄
參數:creates---判斷一個文件是否存在,如果已經存在了,後面的命令就不會執行
參數:removes---判斷一個文件是否存在,如果不存在,後面的命令就不會執行
參數(必須要有的):free_form---表示執行command模塊時,必須要有linux合法命令信息

(二)文件類型模塊:
第一個模塊:copy----複製模塊
參數:backup---對數據信息進行備份
[root@m01 ansible]# ansible 172.16.1.41 -m copy -a "src=/tmp/file01.txt dest=/tmp/ backup=yes"
172.16.1.41 | SUCCESS => {
"backup_file": "/tmp/file01.txt.71887.2018-04-02@23:33:19~",
"changed": true,
"checksum": "029b054db136cc36d5605e3818305825ff4b8ffb",
"dest": "/tmp/file01.txt",
"gid": 0,
"group": "root",
"md5sum": "434660b5ad7deeba8815349f71409405",
"mode": "0644",
"owner": "root",
"size": 6,
"src": "/root/.ansible/tmp/ansible-tmp-1522683197.05-52744169892601/source",
"state": "file",
"uid": 0
}

參數:src---定義要推送數據信息(在管理服務器上的數據)
參數:dest---定義將數據推送到遠程主機什麼目錄中
[root@m01 ansible]# touch /tmp/file01.txt
[root@m01 ansible]# ansible 172.16.1.41 -m copy -a "src=/tmp/file01.txt dest=/tmp/"
172.16.1.41 | SUCCESS => {
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/tmp/file01.txt", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1522682948.27-60532389065095/source", 
    "state": "file", 
    "uid": 0
}
[root@m01 ansible]# ansible 172.16.1.41 -m shell -a "ls -l /tmp/"
172.16.1.41 | SUCCESS | rc=0 >>
total 24
-rw-r--r-- 1 root root    0 Apr  2 23:29 file01.txt

參數:owner---設置複製後的文件屬主權限
參數:group---設置複製後的文件屬組權限
參數:mode---設置複製後的文件權限(600 755)

第二個模塊:file----文件屬性修改/目錄創建/文件創建
參數:owner---設置複製後的文件屬主權限
參數:group---設置複製後的文件屬組權限
參數:mode---設置複製後的文件權限(600 755)
ansible 172.16.1.41 -m file -a "dest=/tmp/file01.txt owner=oldboy group=oldboy mode=600"
172.16.1.41 | SUCCESS => {
    "changed": true, 
    "gid": 500, 
    "group": "oldboy", 
    "mode": "0600", 
    "owner": "oldboy", 
    "path": "/tmp/file01.txt", 
    "size": 6, 
    "state": "file", 
    "uid": 500
}

參數:state---用於指定創建目錄或文件
創建文件
ansible 172.16.1.41 -m file -a "dest=/tmp/file01.txt state=touch"
172.16.1.41 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/file01.txt", 
    "gid": 0, 
    "group": "root", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "state": "file", 
    "uid": 0
}

創建目錄:
ansible 172.16.1.41 -m file -a "dest=/tmp/dir01 state=directory"
172.16.1.41 | SUCCESS => {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/tmp/dir01", 
    "size": 4096, 
    "state": "directory", 
    "uid": 0
}

(三)包管理模塊類型
模塊:yum---安裝軟件包模塊
name:執行要安裝軟件的名稱,以及軟件的版本
state:installed安裝 absent(卸載)
ansible 172.16.1.41 -m yum -a "name=iftop state=installed"
ansible 172.16.1.41 -m yum -a "name=iftop state=absent"

list:指定軟件名稱,查看軟件是否可以安裝,以及是否已經安裝過了
ansible 172.16.1.41 -m yum -a "list=iftop"

(四)系統模塊類型
第一個模塊:service---管理服務狀態模塊
name: 指定要管理的服務名稱(管理的服務一定在chkconfig中可以看到)
state:stopped started restarted reloaded
enabled:yes表示服務開機自啓動 no表示服務開機不要自動啓動
ansible 172.16.1.41 -m service -a "name=crond state=started enabled=yes"

第二個模塊:cron---定時任務模塊(ansible-doc -s cron指定cron這個模塊)

* * * * *  /bin/sh /server/scripts/test.sh &>/dev/null

minute=0-59 * */n , -   hour  day  month weekday  job='/bin/sh /server/scripts/test.sh &>/dev/null'

添加定時任務
ansible 172.16.1.41 -m cron -a "minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null' "
ansible 172.16.1.41 -m cron -a "name=oldboy02 minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null' "
    注意:定時任務添加名稱,可以避免添加多條一樣的定時任務

刪除定時任務(注意:需要指定定時任務名字name才能刪除!)
ansible 172.16.1.41 -m cron -a "name=oldboy02 minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null' state=absent"
ansible 172.16.1.41 -m cron -a "name=oldboy01 state=absent"

註釋定時任務
ansible 172.16.1.41 -m cron -a "name=oldboy01 minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null' disabled=yes"
ansible 172.16.1.41 -m cron -a "name=oldboy01 job='/bin/sh /server/scripts/test.sh &>/dev/null' disabled=no"

總結ansible顏色信息:
綠色:查看遠程主機信息,不會對遠程主機系統做任何修改
紅色:執行操作出現異常錯誤
“×××”:對遠程主機系統進行修改操作
粉色:警告或者忠告信息

學習ansible模塊的方法:
1、通過博文的方式
2、通過官方文檔
3、在管理服務器上查詢文檔  ansible-doc -s cron
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章