1ansible 模塊使用

ansible 默認提供了很多模塊來供我們使用。在 Linux 中,我們可以通過 ansible-doc -l 命令查看到當前 ansible 都支持哪些模塊,通過 ansible-doc  -s  模塊名  又可以查看該模塊有哪些參數可以使用。

       下面介紹比較常用的幾個模塊:

-----------------------

 

1、copy模塊

2、file模塊

3、cron模塊

4、group模塊

5、user模塊

6、yum模塊

7、service模

8、script模塊

9、ping模塊

10、command模塊

11、raw模塊

12、get_url模塊

13、synchronize模塊

ansible-doc -ls

 


copy模塊:

    目的:把主控端/root目錄下的a.sh文件拷貝到到指定節點上

    命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/'

    執行效果:

wKioL1TB_EWytdwHAALpQ_NZj_Y676.jpg

 

 

 

file模塊:

    目的:更改指定節點上/tmp/t.sh的權限爲755,屬主和屬組爲root

    命令:ansible all -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"

    執行效果:

spacer.gifwKiom1TB-23S6GIaAAFkf3LCV0I648.jpg

 

cron模塊:

    目的:在指定節點上定義一個計劃任務,每隔3分鐘到主控端更新一次時間

    命令:ansible all -m cron -a 'name="custom job" minute=*/3 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate 172.16.254.139"'

    執行效果:

wKioL1TB_EXAZ9npAAKlZcJk-2A313.jpg

 

group模塊:

    目的:在所有節點上創建一個組名爲nolinux,gid爲2014的組

    命令:ansible all -m group -a 'gid=2014 name=nolinux'

    執行效果:

spacer.gifwKiom1TB-22w2EHsAAEyGxpaZ1Q696.jpg

 

user模塊:

    目的:在指定節點上創建一個用戶名爲nolinux,組爲nolinux的用戶

    命令:ansible 10.1.1.113 -m user -a 'name=nolinux groups=nolinux state=present'

    執行命令:

wKioL1TB_EajzhgWAAKh8udIwfU616.jpg

補充:刪除用戶示例

spacer.gifwKiom1TB-27BpMDGAAJUaZVZKlQ882.jpg

 

yum模塊:

    目的:在指定節點上安裝 lrzsz 服務

    命令:ansible all -m yum -a "state=present name=httpd"

    執行效果:

wKioL1TB_EaTCw3xAAo06fOJT9o358.jpg

 

service模塊:

    目的:啓動指定節點上的 puppet 服務,並讓其開機自啓動

    命令:ansible 10.1.1.113 -m service -a 'name=puppet state=restarted enabled=yes'

    執行效果:

wKiom1TB-27BK1j6AAE7uhMosLQ824.jpgspacer.gif

 

script模塊:

    目的:在指定節點上執行/root/a.sh腳本(該腳本是在ansible控制節點上的)

    命令:ansible 10.1.1.113 -m script -a '/root/a.sh'

    執行效果:

wKioL1TB_EehJLUgAAFvF7DUzTA542.jpgspacer.gif

 

ping模塊:

    目的:檢查指定節點機器是否還能連通

    命令:ansible 10.1.1.113 -m ping

    執行效果:

wKioL1TB_EfDOcX3AAD56pSs8vw739.jpg

 

command模塊:

    目的:在指定節點上運行hostname命令

    命令:ansible 10.1.1.113 -m command -a 'hostname'

    執行效果:

wKiom1TB-2_TVLsoAAH9514heiw532.jpgspacer.gif

 

raw模塊:

    目的:在10.1.1.113節點上運行hostname命令(增加管道符作用)

    命令:ansible 10.1.1.113 -m raw-a 'hostname|tee'

    執行效果:

wKioL1TB_EfiXSlvAAD6X2f-nZ4937.jpg

 

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'

    執行效果:

wKiom1TB_ZvyFnXpAAQItOAiI4M141.jpg

 

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結尾的文件

wKioL1TB_EjxkmYpAAYA5Ai3IPg889.jpg

由於模塊,默認都是推送push。因此,如果你在使用拉取pull功能的時候,可以參考如下來實現

mode=pull   更改推送模式爲拉取模式

    目的:將10.1.1.113節點的/tmp/a目錄拉取到主控節點的/root目錄下

    命令:ansible 10.1.1.113 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/'

    執行效果:

wKiom1TB-3CwhN2dAASKTtTpOxI903.jpg

       由於模塊默認啓用了archive參數,該參數默認開啓了recursive, links, perms, times, owner,group和-D參數。如果你將該參數設置爲no,那麼你將停止很多參數,比如會導致如下目的遞歸失敗,導致無法拉取

wKiom1TB-3CwM88JAAKGdhDvVqI952.jpg

其它相關的參數解釋:

1
2
3
dest_port=22    # 指定目的主機的ssh端口,ansible配置文件中的 ansible_ssh_port 變量優先級高於該 dest_port 變量
rsync_path      # 指定 rsync 命令來在遠程服務器上運行。這個參考rsync命令的--rsync-path參數,--rsync-path=PATH     # 指定遠程服務器上的rsync命令所在路徑信息
rsync_timeout   # 指定 rsync 操作的 IP 超時時間,和rsync命令的 --timeout 參數效果一樣


 

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