<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,如需轉載請自行聯系原作者