天天看點

Ansible之五:常用子產品

這裡從官方分類的子產品裡選擇最常用的一些子產品進行介紹。

測試主機是否是通的,用法很簡單,不涉及參數:

setup子產品,主要用于擷取主機資訊,在playbooks裡經常會用到的一個參數gather_facts就與該子產品相關。setup子產品下經常使用的一個參數是filter參數,具體使用示例如下:

file子產品主要用于遠端主機上的檔案操作,file子產品包含如下選項: 

force:需要在兩種情況下強制建立軟連結,一種是源檔案不存在但之後會建立的情況下;另一種是目标軟連結已存在,需要先取消之前的軟鍊,然後建立新的軟鍊,有兩個選項:yes|no 

group:定義檔案/目錄的屬組 

mode:定義檔案/目錄的權限

owner:定義檔案/目錄的屬主

path:必選項,定義檔案/目錄的路徑

recurse:遞歸的設定檔案的屬性,隻對目錄有效

src:要被連結的源檔案的路徑,隻應用于state=link的情況

dest:被連結到的路徑,隻應用于state=link的情況 

state:  

directory:如果目錄不存在,建立目錄

file:即使檔案不存在,也不會被建立

link:建立軟連結

hard:建立硬連結

touch:如果檔案不存在,則會建立一個新的檔案,如果檔案或目錄已存在,則更新其最後修改時間

absent:删除目錄、檔案或者取消連結檔案

使用示例:

複制檔案到遠端主機,copy子產品包含如下選項:

backup:在覆寫之前将原檔案備份,備份檔案包含時間資訊。有兩個選項:yes|no 

content:用于替代"src",可以直接設定指定檔案的值 

dest:必選項。要将源檔案複制到的遠端主機的絕對路徑,如果源檔案是一個目錄,那麼該路徑也必須是個目錄 

directory_mode:遞歸的設定目錄的權限,預設為系統預設權限

force:如果目标主機包含該檔案,但内容不同,如果設定為yes,則強制覆寫,如果為no,則隻有當目标主機的目标位置不存在該檔案時,才複制。預設為yes

others:所有的file子產品裡的選項都可以在這裡使用

src:要複制到遠端主機的檔案在本地的位址,可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,它将遞歸複制。在這種情況下,如果路徑使用"/"來結尾,則隻複制目錄裡的内容,如果沒有使用"/"來結尾,則包含目錄在内的整個内容全部複制,類似于rsync。 

validate :The validation command to run before copying into place. The path to the file to validate is passed in via '%s' which must be present as in the visudo example below.

示例如下:

用于管理服務

該子產品包含如下選項: 

arguments:給指令行提供一些選項 

enabled:是否開機啟動 yes|no

name:必選項,服務名稱 

pattern:定義一個模式,如果通過status指令來檢視服務的狀态時,沒有響應,就會通過ps指令在程序中根據該模式進行查找,如果比對到,則認為該服務依然在運作

runlevel:運作級别

sleep:如果執行了restarted,在則stop和start之間沉睡幾秒鐘

state:對目前服務執行啟動,停止、重新開機、重新加載等操作(started,stopped,restarted,reloaded)

用于管理計劃任務包含如下選項: 

backup:對遠端主機上的原任務計劃内容修改之前做備份 

cron_file:如果指定該選項,則用該檔案替換遠端主機上的cron.d目錄下的使用者的任務計劃 

day:日(1-31,*,*/2,……) 

hour:小時(0-23,*,*/2,……)  

minute:分鐘(0-59,*,*/2,……) 

month:月(1-12,*,*/2,……) 

weekday:周(0-7,*,……)

job:要執行的任務,依賴于state=present 

name:該任務的描述 

special_time:指定什麼時候執行,參數:reboot,yearly,annually,monthly,weekly,daily,hourly 

state:确認該任務計劃是建立還是删除 

user:以哪個使用者的身份執行

示例:

使用yum包管理器來管理軟體包,其選項有: 

config_file:yum的配置檔案 

disable_gpg_check:關閉gpg_check 

disablerepo:不啟用某個源 

enablerepo:啟用某個源

name:要進行操作的軟體包的名字,也可以傳遞一個url或者一個本地的rpm包的路徑 

state:狀态(present,absent,latest)

user子產品是請求的是useradd, userdel, usermod三個指令,goup子產品請求的是groupadd, groupdel, groupmod 三個指令。

home:指定使用者的家目錄,需要與createhome配合使用

groups:指定使用者的屬組

uid:指定用的uid

password:指定使用者的密碼

name:指定使用者名

createhome:是否建立家目錄 yes|no

system:是否為系統使用者

remove:當state=absent時,remove=yes則表示連同家目錄一起删除,等價于userdel -r

state:是建立還是删除

shell:指定使用者的shell環境

注:指定password參數時,不能使用明文密碼,因為後面這一串密碼會被直接傳送到被管理主機的/etc/shadow檔案中,是以需要先将密碼字元串進行加密處理。然後将得到的字元串放到password中即可。

不同的發行版預設使用的加密方式可能會有差別,具體可以檢視/etc/login.defs檔案确認,centos 6.5版本使用的是SHA512加密算法。

使用rsync同步檔案,其參數如下:

archive: 歸檔,相當于同時開啟recursive(遞歸)、links、perms、times、owner、group、-D選項都為yes ,預設該項為開啟

checksum: 跳過檢測sum值,預設關閉

compress:是否開啟壓縮

copy_links:複制連結檔案,預設為no ,注意後面還有一個links參數

delete: 删除不存在的檔案,預設no

dest:目錄路徑

dest_port:預設目錄主機上的端口 ,預設是22,走的ssh協定

dirs:傳速目錄不進行遞歸,預設為no,即進行目錄遞歸

rsync_opts:rsync參數部分

set_remote_user:主要用于/etc/ansible/hosts中定義或預設使用的使用者與rsync使用的使用者不同的情況

mode: push或pull 子產品,push模的話,一般用于從本機向遠端主機上傳檔案,pull 模式用于從遠端主機上取檔案

dev:目标塊裝置

force:在一個已有檔案系統 的裝置上強制建立

fstype:檔案系統的類型

opts:傳遞給mkfs指令的選項

    ansible test -m filesystem -a 'fstype=ext2 dev=/dev/sdb1 force=yes'

    ansible test -m filesystem -a 'fstype=ext4 dev=/dev/sdb1 opts="-cc"'

配置挂載點

選項: 

dump

fstype:必選項,挂載檔案的類型 

name:必選項,挂載點 

opts:傳遞給mount指令的參數

src:必選項,要挂載的檔案 

state:必選項 

present:隻處理fstab中的配置 
absent:删除挂載點 
mounted:自動建立挂載點并挂載之 
umounted:解除安裝

該子產品主要用于從http、ftp、https伺服器上下載下傳檔案(類似于wget),主要有如下選項:

sha256sum:下載下傳完成後進行sha256 check;

timeout:下載下傳逾時時間,預設10s

url:下載下傳的URL

url_password、url_username:主要用于需要使用者名密碼進行驗證的情況

use_proxy:是事使用代理,代理需事先在環境變更中定義

用于解壓檔案,子產品包含如下選項:

copy:在解壓檔案之前,是否先将檔案複制到遠端主機,預設為yes。若為no,則要求目标主機上壓縮包必須存在。

creates:指定一個檔案名,當該檔案存在時,則解壓指令不執行

dest:遠端主機上的一個路徑,即檔案解壓的路徑 

grop:解壓後的目錄或檔案的屬組

list_files:如果為yes,則會列出壓縮包裡的檔案,預設為no,2.0版本新增的選項

mode:解決後檔案的權限

src:如果copy為yes,則需要指定壓縮檔案的源路徑 

owner:解壓後檔案或目錄的屬主

- unarchive: src=https://example.com/example.zip dest=/usr/local/bin copy=no

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