1. 程式人生 > 其它 >ansible ad-hoc和常用模組總結

ansible ad-hoc和常用模組總結

1. ad-hoc介紹

  ansible中有兩種模式:ad-hoc模式和ansible-playbook模式。

  ad-hoc命令是一種可以快速輸入的命令,而且不需要儲存起來的命令。

  ad-hoc適合解決一些簡單或者平時工作中臨時遇到的困難。

2. ad-hoc的使用場景

  • 在多臺機器上,檢視某個程序是否啟動
  • 在多臺機器上,拷貝指定檔案到本地等等

3. ad-hoc模式命令的使用

  命令+主機名稱+指定的模組+模組名稱+模組動作+具體的命令

  如:ansible ans -m shell -a 'ls /root'

4. ansible幫助檢視方式

ansible-doc -l           #檢視所有的模組與簡要說明
ansible
-doc copy #檢視指定模組的方式 ansible-doc -s copy #檢視指定模組的playbook程式碼段

5. ad-hoc命令引數

ansible  <host-pattern> [options]

-v|--version                                                #輸出更詳細的執行過程資訊,-vvv可得到執行過程所有的資訊
-i|PATH|--inventory(清單)=PATH                               #指定inventory(清單)資訊,預設/etc/ansible/hosts
-f NUM|--forks=NUM #併發執行緒數,預設是5個 --private-key=PRIVATE_KEY_FILE #指定金鑰檔案 -m NAME|--module-name=NAME #指定使用的模組 -M DIRECTORY,--module-path=DIRECTORY #指定模組存放路徑,預設/usr/share/ansible,也可以通過ANSIBLE_LIBRARY設定預設路徑。
-a ‘ARGUMENTS’,--args=‘ARGUMENTS’ #模組引數。 -k,--ask-pass SSH #認證密碼 -K,--ask-sudo-pass sudo #使用者的密碼(--sudo時使用)。 -o,--one-line #標準輸出至一行。 -s,--sudo #相當於Linux系統下的sudo命令。 -t DIRECTORY,--tree=DIRECTORY #輸出資訊至DIRECTORY目錄下,結果檔案以遠端主機命名。 -T SECONDS,--timeout=SECONDS #指定連線遠端主機的最大超時,單位是秒。 -B NUM,--background=NUM #後臺執行命令,超NUM秒後中止正在執行的任務。 -P NUM,--poll=NUM #定期返回後臺任務進度。 -u USERNAME,--user=USERNAME #指定遠端主機以USERNAME執行命令。 -U SUDO_USERNAME,--sudo-user=SUDO_USERNAME #使用sudo,相當於LInux下的sudo命令。 -c CONNECTION,--connection=CONNECTION #指定連線方式,可用選項paramiko(SSH)、ssh、local,local方式常用於crontab和kickstarts。 -l SUBSET,--limit=SUBSET #指定執行主機。 -l ~REGEX,--limit=~REGEX #指定執行主機(正則)。 --list-hosts #列出符合條件的主機列表,不執行任何命令。

6. ansible常用模組

  模組(也被稱為 “task plugins” 或 “library plugins”)是在 Ansible 中實際在執行的.它們就 是在每個 playbook 任務中被執行的.你也可以僅僅通過 ‘ansible’ 命令來執行它們。

6.1 command模組

  命令模組適合使用簡單的命令,無法支援"<"、">"、"|"、";"、"&"等符號,功能是在遠端主機上執行命令,此模組為預設模組,可以忽略-m選項。

chdir          #在執行命令前,進入到指定的目錄中
creates        #判斷指定檔案是否存在,如果存在,不執行後面的操作
removes        #判斷指定檔案是否存在,如果存在,執行後面的操作
free_from      #必須要輸入一個合理的命令

ansible mail -m command -a 'chdir=/data pwd'
ansible mail -m command -a "touch my_right.cnf creates=/data/my_right.cnf"
ansible mail -m command -a "rm -f mysql.repo removes=/data/mysql.repo"

6.2 shell模組

  類似於command模組,但是功能比command要更強大。支援"<"、">"、"|"、";"、"&"等符號。

chdir                #在執行命令前,進入到指定目錄中
creates              #判斷指定檔案是否存在,如果存在,不執行後面的操作
removes              #判斷指定檔案是否存在,如果存在,執行後面的操作
free_form            #必須要輸入一個合理的命令
exectuable #預設系統會使用bash這個shell執行,如果要切換shell就使用這個命令 ansible mail
-m shell -a "ps -ef | grep ssh"

6.3 copy模組

  主要是從管理機器複製檔案到遠端主機上。copy模組在複製資料的時候,如果資料是軟連線檔案,會將連結指定的原始檔進行復制。

src               #用於指定本地檔案的儲存位置,也就是ansible管理主機的檔案位置
backup            #預設資料複製到遠端主機,會覆蓋原有的檔案(yes會將原始檔進行備份)
force #遠端主機檔案存在強制拷貝,預設兩個選項yes/no content #用於替代src引數使用,可以直接設定指定檔案的值 dest(required) #指定檔案將被拷貝到遠端主機的哪個目錄中,此選項必選 group #檔案資料複製到遠端主機,設定檔案的屬組的資訊 mode #檔案資料複製到遠端主機,設定檔案的許可權 owner #檔案資料複製到遠端主機,設定檔案的屬主的資訊 remote_src #如果設定yes,表示將遠端主機上的資料進行移動操作,如果設定為no,表示將管理主機上的資料進行分發操作
others #所有的file模組裡的選項都可以在這裡使用
directory_mode #遞迴設定目錄的許可權,預設為系統預設許可權
ansible mail
-m copy -a "src=/data/mysql.repo dest=/data/ backup=yes"

6.4 fetch模組

  主要是抓取檔案到管理機器上。

src               #要獲取的遠端系統上檔案,必須是檔案,不能是目錄
dest              #用於儲存檔案的目錄

ansible mail -m  fetch -a "src=/root/default.conf dest=/data"

6.5 file模組

  實現建立/刪除檔案資訊、對資料許可權進行修改。

dest/path/name                #將資料複製到遠端節點的路徑資訊
group                         #檔案資料複製到遠端主機,並設定檔案的屬組資訊
mode                          #檔案資料複製到遠端主機,並設定資料許可權
owner                         #檔案資料複製到遠端主機,並設定檔案屬主
src                           #被連結原始檔路徑/只應用於state=link,只用於軟連線或硬連結
dest #被連結到的路徑/只應用於state=link,只用於軟連線或硬連結
recurse #遞迴設定檔案的屬性,相當於chmod -R
state #狀態 state 後面的引數有: absent #檔案狀態:刪除或取消一個連結 directory #檔案狀態:如果目錄不存在則建立
file #檔案狀態:即使目錄不存在也不建立 touch #檔案狀態:檔案不存在則建立 hark/link #建立連線檔案 ansible mail -m file -a "path=/data/kai state=directory"

6.6 yum模組

  使用yum模組來對軟體進行安裝、升級、降級、刪除和列出軟體包和組。

name                     #指定軟體名稱資訊
state                    #使用remove/absent將軟體進行解除安裝,使用present/installed進行軟體的安裝,使用latest安裝最新的軟體
disable_gpg_check #用於禁用對rpm包的公鑰gpg驗證,預設值為no
enablerepo #用於指定安裝軟體包時臨時啟用yum源
diablerepo #用於指定安裝軟體包臨時禁用的yum源

6.7 service模組

  管理服務的執行狀態。

enable                  #設定伺服器是否自開啟,如果引數不指定,原有的服務開機自啟動狀態進行保留
name                    #設定要啟動/停止伺服器的名稱
state                   #使用引數reloaded是平滑重啟,restarted引數是重啟,started引數是啟動,stopped引數是停止

6.8 mount模組

  批量管理主機進行掛載解除安裝的操作。

fstype                 #指定掛載檔案的系統型別
opts                   #指定掛載的引數資訊
path                   #定義一個掛載點資訊
src                    #定義裝置檔案資訊
state                  #使用引數absent會進行解除安裝,也會修改fstab檔案資訊,使用unmounted會進行解除安裝但是不會修改fstab檔案,present不會掛載,只會修改fstab檔案,mounted會進行掛載也會修改fstab檔案

6.9 cron模組

  定時任務模組,可以幫助我們管理遠端主機中的計劃任務,功能相當於crontab命令。

job                           #指定計劃的任務中需要實際執行的命令或者指令碼
name                          #用於設定計劃任務的名稱,計劃任務的名稱會在註釋中顯示
state                         #如果引數是absent代表刪除定時任務,如果引數是disabled代表將指定的定時任務進行註釋或者取消註釋
user #用於設定當前計劃任務屬於哪個使用者,當不使用此引數時,預設為管理員使用者
backup #此引數的值設定為yes,那麼當修改或者刪除對應的計劃任務時,會對計劃任務備份
$time #指定具體的執行時間,minute分,hour時,day天,month月,weekday 0-7 代表周
注意:如果時間引數不寫,預設是
*

6.10 group模組

  遠端批量建立使用者組資訊。

gid          #建立組的ID資訊
name         #建立組的名稱資訊
state        #如果引數是absent代表刪除指定的使用者組,如果引數是present代表是建立指定的使用者組

6.11 user模組

  遠端批量建立使用者資訊。

password       #輸入密碼資訊
name           #指定使用者名稱資訊
uid            #指定使用者UID資訊
group          #指定使用者主要屬於哪個使用者組
groups         #指定使用者屬於哪個附加組資訊
shell          #/bin/bash或者/sbin/nologin用來指定使用者是否能夠登陸
create_home    #是否建立家目錄
home           #指定家目錄建立在什麼路徑預設是/home
注意:password設定密碼的時候不能使用明文的方式,只能使用密文方式,可以給使用者設定密碼,還可以給使用者修改密碼。

6.12 script模組

  script模組可以幫助我們在遠端主機上執行我們編寫的管理主機的指令碼,就是指令碼就在你管理主機的本地,無需手動拷貝到遠端主機。

free_from  #必要的引數,預設會使用
chdir      #指定一個目錄,在執行命令前首先會切換指定的目錄中去
creates    #當指定的檔案存在時,就不指定對應的命令,起到判斷的作用
removes    #與creates引數相反,當指定的檔案不存在的時候,就不執行對應的命令

6.13 find模組

  find命令用來查詢指定目錄下的檔案,任何位於引數之前的字串都將會被視為欲查詢的目錄名,如果使用該命令時,不設定任何的引數,那麼find命令將在當前的目錄下查詢子目錄和檔案,並將查到的子目錄和檔案全部顯示出來,find模組就像find命令一樣可以幫助我們在被管理機器中查詢符合條件的檔案。

paths         #指定在哪個目錄中查詢檔案,可以指定多個路徑用逗號隔開
recurse       #是否為遞迴子目錄查詢檔案
hidden        #是否查詢隱藏檔案
file_type     #指定查詢的檔案型別,可以是any、directory、file、link四種
patterns      #指定需要查詢檔案的名稱,如果想要使用python正則表示式去匹配檔案需要使用use_regex=yes
use_regex     #是否啟用python正則來查詢檔案
contains      #根據文章內容查詢檔案,這個引數是一個正則表示式
age           #指定檔案間隔的時間,可以使用的單位有秒、分、時、天、星期
age_stamp     #根據時間範圍查詢檔案,檔案時間屬性有三個,atime、ctime、mtime
size          #根據檔案的大小來進行查詢,可以使用的單位有t、g、m、k、b
get_checksum  #當有符合查詢檔案被找到的時候,會同時返回對應檔案的sha1校驗碼

6.14 unarchive模組

  unarchive模組的功能是解壓縮,這個模組有兩種用法:

  1. 將ansible主機上的壓縮包在本地解壓縮之後傳到遠端主機上這種情況下copy=yes
  2. 將遠端主機上的某個解壓包壓縮到指定的路徑下,這種情況下copy=no
copy        #在解壓檔案之前,是否先將檔案複製到遠端主機上,預設是yes
creates     #指定一個檔名,當該檔案存在的時候,解壓命令不執行
src         #如果copy是yes需要指定壓縮檔案的源路徑
dest        #遠端主機上的一個路徑,即檔案解壓的路徑
list_files  #列出壓縮包裡面的檔案,yes/no
mode        #解壓檔案的許可權設定
group       #解壓後的目錄檔案的屬組
owner       #解壓檔案或目錄的屬主

6.15 replace模組

  replace模組可以根據我們指定的正則表示式替換檔案中的字串,檔案中所有被匹配的字串都會被替換,也就是說它是一種全域性替換工具。

path      #必須的引數,指定要執行的操作檔名稱
regexp    #必須引數,指定一個正則表示式
replace   #指定最後要替換成的文字
backup    #在修改檔案之前對檔案進行備份,yes/no

6.16 lineinfile模組

  lineinfile模組相當重要,在自動化運維中起到了相當重要的目的,他可以通過正則表示式替換指定文字,例如開啟一些配置選項等,還可以新加一行文字,或者是刪除指定的行。

path           #必須引數,指定要操作的檔案路徑
line           #必須引數,指定要替換的文字內容
regexp         #匹配正則語句和要過濾的關鍵字
state          #引數是absent意思是刪除,present意思是預設
backrefs       #表示是否開啟後向引用,預設是no,yes/no
create         #當檔案不存在的時候,是否建立對應的檔案
backup         #是否在修改檔案之前對檔案進行備份
insertafter    #藉助insertafter引數可以將文字插入到"指定行"之後
insertbefore   #藉助insertafter引數可以將文字插入到"指定行"之前

6.17 setup模組

  setup模組用於收集遠端主機的一些基本資訊,其可以收集幾乎主機上的任何資料,方便我們後期進行分析工作。

ansible_all_ipv4_addresses            #僅顯示ipv4的資訊
ansible_devices                       #僅顯示磁碟裝置資訊
ansible_distribution                  #顯示是什麼系統,例:centos,suse等
ansible_distribution_major_version    #顯示是系統主版本
ansible_distribution_version          #僅顯示系統版本
ansible_machine                       #顯示系統型別,例:32位還是64位
ansible_eth0                          #僅顯示eth0的資訊
ansible_hostname                      #僅顯示主機名
ansible_kernel                        #僅顯示核心版本
ansible_lvm                           #顯示lvm相關資訊
ansible_memtotal_mb                   #顯示系統總記憶體
ansible_memfree_mb                    #顯示可用系統記憶體
ansible_memory_mb                     #詳細顯示記憶體情況
ansible_swaptotal_mb                  #顯示總的swap記憶體
ansible_swapfree_mb                   #顯示swap記憶體的可用記憶體
ansible_mounts                        #顯示系統磁碟掛載情況
ansible_processor                     #顯示cpu個數(具體顯示每個cpu的型號)
ansible_processor_vcpus               #顯示cpu個數(只顯示總的個數)

ansible all -m setup
ansible all -m setup -a "filter=ansible_all_ipv4_addresses"

6.18 get_url模組

  get_url模組用於下載指定檔案到本地。

dest   #檔案下載到遠端的那個目錄下
force  #是否強制覆蓋yes/no
url    #指定一個url地址

6.19 archive模組

  對指定的內容進行打包。

path  #源路徑,準備打包的檔案
dest  #打包成什麼格式的包,放到什麼位置
mode  #許可權