1. 程式人生 > >Ansible模組說明

Ansible模組說明

常用模組

copy模組:

獲取幫助:ansible-doc -s copy
模組引數詳解:  
src:指定原始檔路徑,可以是相對路徑,也可以是絕對路徑,可以是目錄(並非是必須的,可以使用content,直接生成檔案內容)
dest:指定目標檔案路徑,只能是絕對路徑,如果src是目錄,此項必須是目錄
owner:指定屬主
group:指定屬組
mode:指定許可權,可以以數字指定比如0644
content:代替src,直接往dest檔案中寫內容,可以引用變數,也可以直接使用inventory中的主機變數
backup:在覆蓋之前將原檔案備份,備份檔案包含時間資訊。有兩個選項:yes|no
force:
    yes:預設項,如果目標主機包含該檔案,但內容不同,則強制覆蓋
    no:則只有當目標主機的目標位置不存在該檔案時,才複製
directory_mode:遞迴的設定目錄的許可權,預設為系統預設許可權

file模組:

## 設定檔案的屬性
相關選項如下:
force:需要在兩種情況下強制建立軟連結,一種是原始檔不存在,但之後會建立的情況下;另一種是目標軟連結已存在,需要先取消之前的軟鏈,然後建立新的軟鏈,有兩個選項:yes|no
group:定義檔案/目錄的屬組
mode:定義檔案/目錄的許可權
owner:定義檔案/目錄的屬主
path:必選項,定義檔案/目錄的路徑
recurse:遞迴設定檔案的屬性,只對目錄有效
src:被連結的原始檔路徑,只應用於state=link的情況
dest:被連結到的路徑,只應用於state=link的情況
state:
   directory:如果目錄不存在,就建立目錄
   file:即使檔案不存在,也不會被建立
   link:建立軟連結
   hard:建立硬連結
   touch:如果檔案不存在,則會建立一個新的檔案,如果檔案或目錄已存在,則更新其最後修改時間
   absent:刪除目錄、檔案或者取消連結檔案

## 遠端檔案符號連結建立
# ansible storm_cluster -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"
## 遠端檔案資訊檢視
# ansible storm_cluster -m command -a "ls –al /tmp/resolv.conf"
## 遠端檔案符號連結刪除
# ansible storm_cluster -m file -a "path=/tmp/resolv.conf state=absent"

檔案編輯模組:lineinfile

模組引數詳解:
path:指定要修改的配置檔案
regexp:匹配要修改的內容
line:要增加或者修改的內容
state:
    absent:表示刪除,當匹配到時進行刪除
    present:表示增加,當匹配到時進行修改,當沒有匹配到時在最後增加一行,預設為此項
backrefs:
    no:表示如果沒有匹配到,則增加line;如果匹配成功,則替換line;
    yes:表示如果沒有匹配到,則不變line;如果匹配成功,則替換line;
backup:  
    no:表示如果沒有匹配到,則增加line;如果匹配成功,則替換line;不備份原檔案
    yes:表示如果沒有匹配到,則增加line;如果匹配成功,則替換line;備份原檔案
insertafter(匹配的是此行):
    在匹配到的行之後新增一行
insertbefore(匹配的是此行):
    在匹配到的行之前新增一行

mount模組:

功能: 掛載檔案系統
[[email protected] ~]# ansible 192.168.168.111 -m mount -a "path=/mnt/data src=/dev/sd0 fstype=ext3 ots=ro state=present"
注:mount已經使用path代替了原來的name引數,但是name引數還是可以使用的。

cron模組:

獲取幫助:ansibe-doc -s cron

模組引數詳解:

state:
    present:建立任務
    absent:刪除任務
backup:對遠端主機上的原任務計劃內容修改之前做備份
job:要執行的任務
name:該任務的描述(必須項)
user:以哪個使用者的身份執行
minute:分鐘(0-59,*,*/2,……),不寫預設為*
hour:小時(0-23,*,*/2,……),不寫預設為*
day:日(1-31,*,*/2,……),不寫預設為*
month:月(1-12,*,*/2,……),不寫預設為*
weekday:周(0-7,*,……),不寫預設為*

每隔10分鐘同步一下時間
[[email protected] ~]#ansible web -m cron -a 'name="sync time from ntpserver" minute=*/10 job="/usr/sbin/ntpdate 3.cn.pool.ntp.org"'

group模組:

目的:在所有節點上建立一個組名為nolinux,gid為2014的組  
命令:ansible all -m group -a 'gid=2014 name=nolinux'

user模組: 模組引數詳解:

name:指定使用者名稱
password:設定使用者密碼,password引數需要接受md5加密後的值
state:使用者狀態,預設為present
    present:表示新增使用者
    absent:表示刪除使用者
update_password:修改使用者密碼
    always:新密碼和舊密碼不同時進行修改
    on_create:為新建立的使用者指定密碼
createhome:建立家目錄
    yes:預設項,即建立使用者預設是有家目錄的
    no:建立使用者時不建立家目錄
remove:
    yes:刪除使用者家目錄,需要指定此引數
    no:預設項,刪除使用者時預設不刪除使用者的家目錄
system:
    yes:預設建立為普通使用者,而非系統使用者
如果不指定預設生成的選項有:
    home:建立家目錄
    shell:建立預設的shell為/bin/bash
    system:預設建立為普通使用者,而非系統使用者,指定是用yes
目的:在指定節點上建立一個使用者名稱為nolinux,組為nolinux的使用者  
命令:ansible 10.1.1.113 -m user -a 'name=nolinux groups=nolinux state=present'  
刪除使用者  
命令:ansible 10.1.1.113 -m user -a 'name=nolinux state=absent remove=yes'

yum模組:

模組引數詳解:    
name:表示要安裝軟體包的名字,預設最新的程式包,指明要安裝的程式包,可以帶上版本號
state:表示是安裝還解除安裝
    present:預設的,表示為安裝
    lastest:安裝為最新的版本
    absent:表示刪除

service模組:

enabled:表示設定服務開機是否啟動,取值為true或者false;enabled=yes
name=:表示要控制哪一個服務
state:
    started:表示現在就啟動此服務
    stopped:表示現在關閉此服務
    restarted:表示重啟此服務
sleep:如果執行了restarted,在stop和start之間沉睡幾秒
runlevel:定義在哪些級別可以自啟動
arguments:表示向命令列傳遞的引數

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節點上執行ifconfig命令
命令:ansible 10.1.1.113 -m raw-a 'ifconfig|eth0'

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'

stat模組:

目的:獲取遠端檔案狀態資訊,包括atime、ctime、mtime、md5、uid、gid等資訊
ansible web -m stat -a 'path=/etc/sysctl.conf'

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結尾的檔案
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-doc -l查詢