天天看點

Ansible子產品知多少

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>copy子產品</code>

<code>file</code><code>子產品</code>

<code>cron</code><code>子產品</code>

<code>group子產品</code>

<code>user子產品</code>

<code>yum子產品</code>

<code>service子產品</code>

<code>script子產品</code>

<code>ping</code><code>子產品</code>

<code>command</code><code>子產品</code>

<code>raw子產品</code>

<code>get_url子產品</code>

<code>synchronize子產品</code>

copy子產品:

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

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

    執行效果:

Ansible子產品知多少

file子產品:

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

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

Ansible子產品知多少
Ansible子產品知多少

cron子產品:

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

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

Ansible子產品知多少

group子產品:

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

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

Ansible子產品知多少
Ansible子產品知多少

user子產品:

    目的:在指定節點上建立一個使用者名為nolinux,組為nolinux的使用者

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

    執行指令:

Ansible子產品知多少

補充:删除使用者示例

Ansible子產品知多少
Ansible子產品知多少

yum子產品:

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

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

Ansible子產品知多少

service子產品:

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

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

Ansible子產品知多少
Ansible子產品知多少

script子產品:

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

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

Ansible子產品知多少
Ansible子產品知多少

ping子產品:

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

    指令:ansible 10.1.1.113 -m ping

Ansible子產品知多少

command子產品:

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

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

Ansible子產品知多少
Ansible子產品知多少

raw子產品:

    目的:在10.1.1.113節點上運作hostname指令

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

Ansible子產品知多少

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'

Ansible子產品知多少

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

Ansible子產品知多少

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

Ansible子產品知多少

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

Ansible子產品知多少

其它相關的參數解釋:

<code>dest_port=22    </code><code># 指定目的主機的ssh端口,ansible配置檔案中的 ansible_ssh_port 變量優先級高于該 dest_port 變量</code>

<code>rsync_path      </code><code># 指定 rsync 指令來在遠端伺服器上運作。這個參考rsync指令的--rsync-path參數,--rsync-path=path     # 指定遠端伺服器上的rsync指令所在路徑資訊</code>

<code>rsync_timeout   </code><code># 指定 rsync 操作的 ip 逾時時間,和rsync指令的 --timeout 參數效果一樣</code>

ok!

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

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

本文出自 “not only linux” 部落格,請務必保留此出處http://nolinux.blog.51cto.com/4824967/1607459

繼續閱讀