Ansible 2 -- 4 常用模塊及常用API

模塊

ansible 中的模塊可以用在ansible命令行或后面要講的playbook中。不同的模塊提供不同的功能标捺,官方提供的非常多迈螟,幾千種,常用的有幾十種,這里只介紹常見的幾種模塊。
模塊是Ansible基本的可復用的單元。模塊的功能范圍很小阔拳,可能只針對某操作系統(tǒng)。

模塊的冪等性

ansible絕大多數模塊都天然具有 冪等 特性楞件,只有極少數模塊如shellcommand模塊不具備冪等性衫生。所謂的冪等性是指多次執(zhí)行同一個操作不會影響最終結果。例如土浸,ansible的yum模塊安裝rpm包時罪针,如果待安裝的包已經安裝過了,則再次或多次執(zhí)行安裝操作都不會真正的執(zhí)行下去黄伊。再例如泪酱,copy模塊拷貝文件時,如果目標主機上已經有了完全相同的文件还最,則多次執(zhí)行copy模塊不會真正的拷貝墓阀。ansible具有冪等性的模塊在執(zhí)行時,都會自動判斷是否要執(zhí)行拓轻。

自己編寫的腳本有可能執(zhí)行第二次的時候有可能帶來不一樣的意外或影響斯撮,而模塊的冪等性可以降低一定的風險。

ansible-doc 命令

學習ansible模塊時扶叉,可以先用ansible-doc命令勿锅,閱讀相關模塊的說明文檔
比如我想通過ansible執(zhí)行拷貝文件操作,先用ansible-doc -l | grep 'copy'過濾出所有包含copy的模塊名枣氧。

image.png

ansible-doc copy 查看copy模塊的使用詳情

image.png

ansible-doc -s copy 查看copy模塊的精簡信息

shell 和 command

查看某服務器的內存使用情況
ansible myserver -m command -a "free -m"
可簡寫, 因為 -m command 是默認
ansible myserver -a "free -m"
模塊包括 command, script(在遠程主機執(zhí)行主控端的shell腳本), shell (執(zhí)行遠程主機的shell腳本文件)
例子
ansible myserver -m command -a "free -m"
ansible myserver -m script -a "/home/local.sh"
ansible myserver -m shell -a "/home/server.sh"

實際上shell模塊執(zhí)行命令的方式是在遠程使用/bin/sh來執(zhí)行的

在批量服務器上完成同一操作
ansible merch -m shell -a "touch demo.txt"

查看 shell 模塊提供的參數
ansible-doc -s shell

- name: Execute commands in nodes.
  shell:
      chdir:                 # cd into this directory before running the command 
                             # 執(zhí)行命令前溢十,先cd到指定目錄
      creates:               # a filename, when it already exists, this step will *not* be run. 
                             # 用于判斷命令是否要執(zhí)行。如果指定的文件(可以使用通配符)存在达吞,則不執(zhí)行张弛。
      executable:            # change the shell used to execute the command. Should be an absolute path to the executable.
                             # 不再使用默認的/bin/sh解析并執(zhí)行命令,而是使用此處指定的命令解析。例如使用expect解析expect腳本吞鸭。必須為絕對路徑寺董。
      free_form:             # (required) The shell module takes a free form command to run, as a string.  There's not an actual option
                               named "free form".  See the examples!
      removes:               # a filename, when it does not exist, this step will *not* be run. 
                               # 用于判斷命令是否要執(zhí)行。如果指定的文件(可以使用通配符)不存在瞒大,則不執(zhí)行螃征。
      stdin:                 # Set the stdin of the command directly to the specified value.
      warn:                  # if command warnings are on in ansible.cfg, do not warn about this particular line if set to no/false.

例如:

tasks:
   - shell: touch helloworld.txt creates=/tmp/hello.txt

但建議搪桂,在參數可能產生歧義的情況下透敌,使用args來傳遞ansible的參數。如:

- shell: touch helloworld.txt
   args:
     creates: /tmp/hello.txt

COPY 復制模塊

實現主控端向目標主機拷貝文件踢械,類似于scp的功能酗电。
拷貝當前目錄的 demo.png 到遠程服務器的/home/ubuntu目錄下,并修改文件權限
ansible cloud -m copy -a "src=demo.png dest=/home/ubuntu mode=755"

template 模塊

template模塊用法和copy模塊用法基本一致内列,它主要用于復制配置文件撵术。

ansible-doc -s template
 - name: Templates a file out to a remote server.
   action: template
      dest  # 必填,拷貝到遠程機器的目標路徑
      src # 必填话瞧,Ansible控制機模板文件所在位置
      force # 是否覆蓋同名文件
      group # 設置遠程文件的所屬組
      owner # 設置遠程文件的所有者
      mode  # 設置遠程文件權限嫩与,如 0644,'u+rw', 'u=rw,g=r,o=r' 等方式
      backup # 拷貝的同時也創(chuàng)建一個包含時間戳信息的備份文件交排,默認為no

類似的模塊
file # 文件處理模塊划滋,可以遞歸創(chuàng)建目錄
fetch # 拉取文件模塊,從遠程主機將文件拉取到本地端
rsync # 實現rsync部分功能的模塊

debug 模塊

用于輸出自定義的信息埃篓,類似于echo处坪、print等輸出命令。ansible中的debug主要用于輸出變量值架专、表達式值同窘,以及用于when條件判斷時。使用方式非常簡單部脚。
ansible-doc -s debug

- name: Print statements during execution
  debug:
      msg:                   # The customized message that is printed. If omitted, prints a generic message.
                             # 輸出自定義信息想邦。如果省略,則輸出普通字符委刘。
      var:                   # A variable name to debug.  Mutually exclusive with the 'msg' option.
                             # 指定待調試的變量丧没。只能指定變量,不能指定自定義信息钱雷,且變量不能加{{}}包圍骂铁,而是直接的變量名。
      verbosity:             # A number that controls when the debug is run, if you set to 3 it will only run debug when -vvv or above
                             # 控制debug運行的調試級別罩抗,有效值為一個數值N拉庵。

script 模塊

script模塊用于控制遠程主機執(zhí)行腳本。在執(zhí)行腳本前套蒂,ansible會將本地腳本傳輸到遠程主機钞支,然后再執(zhí)行茫蛹。在執(zhí)行腳本的時候,其采用的是遠程主機上的shell環(huán)境烁挟。

例如婴洼,將ansible端/tmp/a.sh發(fā)送到各被控節(jié)點上執(zhí)行,但如果被控節(jié)點的/tmp下有hello.t xt 撼嗓,則不執(zhí)行柬采。

---
     - hosts: centos
       remote_user: root
       tasks:
         - name: execute /tmp/a.sh,but only /tmp/hello.txt is not yet created
           script: /tmp/a.sh hello
           args:
             creates: /tmp/hello.txt
 

參考

模塊非常多,有什么需求先去官網查且警,然后看文檔
官方模塊說明

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末粉捻,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子斑芜,更是在濱河造成了極大的恐慌肩刃,老刑警劉巖杏头,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盈包,死亡現場離奇詭異,居然都是意外死亡醇王,警方通過查閱死者的電腦和手機呢燥,發(fā)現死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厦画,“玉大人疮茄,你說我怎么就攤上這事「睿” “怎么了力试?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長排嫌。 經常有香客問我畸裳,道長,這世上最難降的妖魔是什么淳地? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任怖糊,我火速辦了婚禮,結果婚禮上颇象,老公的妹妹穿的比我還像新娘伍伤。我一直安慰自己,他們只是感情好遣钳,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布扰魂。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劝评。 梳的紋絲不亂的頭發(fā)上姐直,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音蒋畜,去河邊找鬼声畏。 笑死,一個胖子當著我的面吹牛姻成,可吹牛的內容都是我干的插龄。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼佣渴,長吁一口氣:“原來是場噩夢啊……” “哼辫狼!你這毒婦竟也來了初斑?” 一聲冷哼從身側響起辛润,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎见秤,沒想到半個月后砂竖,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鹃答,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年乎澄,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片测摔。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡置济,死狀恐怖,靈堂內的尸體忽然破棺而出锋八,到底是詐尸還是另有隱情浙于,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布挟纱,位于F島的核電站羞酗,受9級特大地震影響,放射性物質發(fā)生泄漏紊服。R本人自食惡果不足惜檀轨,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欺嗤。 院中可真熱鬧参萄,春花似錦、人聲如沸煎饼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淤袜,卻和暖如春痒谴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铡羡。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工积蔚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烦周。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓尽爆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親读慎。 傳聞我的和親對象是個殘疾皇子漱贱,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容