天天看點

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/'

    執行效果:

<a href="http://s3.51cto.com/wyfs02/M02/58/F4/wKioL1TB_EWytdwHAALpQ_NZj_Y676.jpg" target="_blank"></a>

file子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M02/58/F7/wKiom1TB-23S6GIaAAFkf3LCV0I648.jpg" target="_blank"></a>

cron子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M00/58/F4/wKioL1TB_EXAZ9npAAKlZcJk-2A313.jpg" target="_blank"></a>

group子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M00/58/F7/wKiom1TB-22w2EHsAAEyGxpaZ1Q696.jpg" target="_blank"></a>

user子產品:

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

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

    執行指令:

<a href="http://s3.51cto.com/wyfs02/M01/58/F4/wKioL1TB_EajzhgWAAKh8udIwfU616.jpg" target="_blank"></a>

補充:删除使用者示例

<a href="http://s3.51cto.com/wyfs02/M01/58/F7/wKiom1TB-27BpMDGAAJUaZVZKlQ882.jpg" target="_blank"></a>

yum子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M02/58/F4/wKioL1TB_EaTCw3xAAo06fOJT9o358.jpg" target="_blank"></a>

service子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M02/58/F7/wKiom1TB-27BK1j6AAE7uhMosLQ824.jpg" target="_blank"></a>

script子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M01/58/F4/wKioL1TB_EehJLUgAAFvF7DUzTA542.jpg" target="_blank"></a>

ping子產品:

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

    指令:ansible 10.1.1.113 -m ping

<a href="http://s3.51cto.com/wyfs02/M00/58/F4/wKioL1TB_EfDOcX3AAD56pSs8vw739.jpg" target="_blank"></a>

command子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M00/58/F7/wKiom1TB-2_TVLsoAAH9514heiw532.jpg" target="_blank"></a>

raw子產品:

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

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

<a href="http://s3.51cto.com/wyfs02/M01/58/F4/wKioL1TB_EfiXSlvAAD6X2f-nZ4937.jpg" target="_blank"></a>

get_url子產品:

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

<a href="http://s3.51cto.com/wyfs02/M02/58/F4/wKioL1TB_EjxkmYpAAYA5Ai3IPg889.jpg" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M02/58/F7/wKiom1TB-3CwhN2dAASKTtTpOxI903.jpg" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M01/58/F7/wKiom1TB-3CwM88JAAKGdhDvVqI952.jpg" target="_blank"></a>

其它相關的參數解釋:

<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!

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

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