天天看點

Ansible子產品知多少

<a href="http://www.178linux.com/doc/ansible/" target="_blank">http://www.178linux.com/doc/ansible/</a>

之前在公司推廣使用了ansible,這也使用一段時間了,分享下有關ansible子產品的使用相關介紹

       ansible 預設提供了很多子產品來供我們使用。在 Linux 中,我們可以通過 ansible-doc -l 指令檢視到目前 ansible 都支援哪些子產品,通過 ansible-doc  -s  子產品名  又可以檢視該子產品有哪些參數可以使用。

       下面介紹比較常用的幾個子產品:

copy子產品

file子產品

cron子產品

group子產品

user子產品

yum子產品

service子產品

script子產品

ping子產品

command子產品

raw子產品

get_url子產品

synchronize子產品

copy子產品:

    目的:把主要端/root目錄下的a.sh檔案拷貝到到指定節點上

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

    執行效果:

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'

    執行指令:

補充:删除使用者示例

yum子產品:

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

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

service子產品:

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

    指令:ansible 10.1.1.113 -m service -a 'name=puppet 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節點上運作hostname指令

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

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'

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結尾的檔案

由于子產品,預設都是推送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/'

       由于子產品預設啟用了archive參數,該參數預設開啟了recursive, links, perms, times, owner,group和-D參數。如果你将該參數設定為no,那麼你将停止很多參數,比如會導緻如下目的遞歸失敗,導緻無法拉取

其它相關的參數解釋:

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 參數效果一樣

OK!

       以上暫且列舉這些日常運維中經常會用到的一些子產品,更多的子產品資訊後期會繼續完善,大家也可以去官網檢視更多的資訊。

       官網位址:http://docs.ansible.com/synchronize_module.html

本文轉自 zouqingyun 51CTO部落格,原文連結:http://blog.51cto.com/zouqingyun/1681076,如需轉載請自行聯系原作者