成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux自動化運維工具之ansible(二)

系統 Linux 系統運維 自動化
運維自動化是運維發展的必然方向,同時也是一個運維工程師實現效率最大化的必然選擇。運維自動化的知識可以說是浩瀚如海,本文將選擇其中一個工具ansible為大家介紹一下。

[[186215]]

YAML簡介

YAML是一個可讀性高的用來表達資料序列的格式。

YAML參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式RFC2822等。

Clark Evans在2001年在***發表了這種語言,另外Ingy döt Net與Oren Ben-Kiki也是這語言的共同設計者。

YAML Ain't Markup Language,即YAML不是XML。不過,在開發的這種語言時,YAML的意思其實是:"Yet Another Markup Language"(仍是一種標記語言)。

其特性包括:

  • YAML的可讀性好
  • YAML和腳本語言的交互性好
  • YAML使用實現語言的數據類型
  • YAML有一個一致的信息模型
  • YAML易于實現
  • YAML可以基于流來處理
  • YAML表達能力強,擴展性好

YAML語法

YAML的語法和其他高階語言類似,并且可以簡單表達清單、散列表、標量等數據結構。

其結構(Structure)通過空格來展示,序列(Sequence)里的項用"-"來代;Map里的鍵值對用":"分隔。

YAML文件擴展名通常為.yaml或者.yml。

下面是一個示例。 

 

 

 

2 個重要的結構組成部分:list和directory

list 列表的所有元素均使用“-”打頭,例如: 

 

 

 

dictionary字典通過key與valuef進行標識,例如: 

 

 

 

也可以將key:value放置于{}中進行表示,例如: 

 

 

 

多個映射關系組成一個字典,一個列表可以包含多個字典。

YAML中的變量

變量命名

變量名僅能由字母、數字和下劃線組成,且只能以字母開頭。

facts

facts是由正在通信的遠程目標主機發回的信息,這些信息被保存在ansible變量中。

要獲取指定的遠程主機所支持的所有facts,可使用如下命令進行:

  1. # ansible hostname -m setup 

這個命令可以獲得被監控端主機的各種信息,將這些信息得到后保存到變量中。

自定義變量在 yaml 中可以使用vars關鍵字來定義變量: 

 

 

 

變量的引用 

 

 

 

特殊的變量,迭代

當有需要重復性執行的任務時,可以使用迭代機制。

其使用格式為將需要迭代的內容定義為item變量引用,并通過with_items語句來指明迭代的元素列表即可。

示例:

例如:在被控端添加 2 個用戶 方式

1:一般做法 

 

 

 

方式1:使用變量方式 

 

 

 

方式2:使用迭代方式 

 

 

 

事實上,with_items中可以使用元素還可為hashes,例如: 

 

 

 

Inentory文件的格式

inventory文件遵循INI文件風格,中括號中的字符為組名。

可以將同一個主機同時歸并到多個不同的組中;此外,當如若目標主機使用了非默認的SSH端口,還可以在主機名稱之后使用冒號加端口號來標明。 

 

 

 

如果主機名稱遵循相似的命名模式,還可以使用列表的方式標識各主機,例如: 

 

 

 

主機變量

可以在inventory中定義主機時為其添加主機變量以便于在playbook中使用。例如: 

 

 

 

組變量組變量是指賦予給指定組內所有主機上的在playbook中可用的變量。例如: 

 

 

 

組嵌套 inventory中,組還可以包含其它的組,并且也可以向組中的主機指定變量。不過,這些變量只能在ansible-playbook中使用,而ansible不支持。例如: 

 

 

 

inventory參數 ansible基于ssh連接inventory中指定的遠程主機時,還可以通過參數指定其交互方式;

常用的參數如下所示: 

 

 

 

ansible的循環機制還有更多的高級功能,你可以進行一下嘗試。

playbooks

playbook是由一個或多個“play”組成的列表。

play的主要功能在于將事先歸并為一組的主機裝扮成事先通過ansible中的task定義好的角色。

從根本上來講,所謂task無非是調用ansible的一個module。

將多個play組織在一個playbook中,即可以讓它們聯同起來按事先編排的機制同唱一臺大戲。

playbook基礎組件

1、Hosts和Users

playbook中的每一個play的目的都是為了讓某個或某些主機以某個指定的用戶身份執行任務。

hosts用于指定要執行指定任務的主機,其可以是一個或多個由冒號分隔主機組。

remote_user則用于指定遠程主機上的執行任務的用戶。 不過,remote_user也可用于各task中。也可以通過指定其通過sudo的方式在遠程主機上執行任務,其可用于play全局或某任務。此外,甚至可以在sudo時使用sudo_user指定sudo時切換的用戶。 

 

 

 

2、任務列表和action

play的主體部分是task list。

task list中的各任務按次序逐個在hosts中指定的所有主機上執行,即在所有主機上完成***個任務后再開始第二個。

在運行自下而下某playbook時,如果中途發生錯誤,所有已執行任務都將回滾,因此,在更正playbook后重新執行一次即可。

task的目的是使用指定的參數執行模塊,而在模塊參數中可以使用變量。

模塊執行是冪等的,這意味著多次執行是安全的,因為其結果均一致。

每個task都應該有其name,用于playbook的執行結果輸出,建議其內容盡可能清晰地描述任務執行步驟。如果未提供name,則action的結果將用于輸出。

定義task的可以使用“action: module options”或“module: options”的格式,推薦使用后者以實現向后兼容。如果action一行的內容過多,也中使用在行首使用幾個空白字符進行換行。 

 

 

 

在眾多模塊中,只有command和shell模塊僅需要給定一個列表而無需使用“key=value”格式,例如: 

 

 

 

如果命令或腳本的退出碼不為零,可以使用如下方式替代: 

 

 

 

或者使用ignore_errors來忽略錯誤信息: 

 

 

 

3、handlers

用于當關注的資源發生變化時采取一定的操作。

“notify”這個action可用于在每個play的***被觸發,這樣可以避免多次有改變發生時每次都執行指定的操作,取而代之,僅在所有的變化發生完成后一次性地執行指定操作。

在notify中列出的操作稱為handler,也即notify中調用handler中定義的操作。 

 

 

 

handler是task列表,這些task與前述的task并沒有本質上的不同。 

 

 

tags

tags用于讓用戶選擇運行或路過playbook中的部分代碼。ansible具有冪等性,因此會自動跳過沒有變化的部分,即便如此,有些代碼為測試其確實沒有發生變化的時間依然會非常地長。

此時,如果確信其沒有變化,就可以通過tags跳過此些代碼片斷。

示例:基于playbooks實現web服務的部署

1、提供好Inventory文件 

 

 

 

2、編輯 palybooks 劇本 

 

 

 

3、準備好配置文件 將web的配置放到指定目錄 src=/root/httpd.conf4、開始部署

 

結果示例: 

 

 

 

查看端口: 

 

此時如果配置文件發生變化: 

 

 

 

至此基本使用配置完成。

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2014-09-22 11:24:18

運維

2017-03-22 16:31:30

Linux運維自動化ansible

2015-10-08 10:55:23

云服務自動化運維 ANSIBLE

2014-08-04 10:10:35

IT運維自動化運維

2022-07-29 14:39:17

Ansible運維工具

2013-04-16 14:55:21

自動化運維Puppet實戰

2015-03-09 11:10:14

運維

2015-10-09 13:14:10

clip自動化運維工具

2013-04-11 17:31:28

運維自動化Cobbler

2012-05-05 21:28:44

2020-12-11 10:20:33

Ansible運維軟件包

2020-04-30 15:00:17

運維Ansible自動化

2012-10-22 14:54:48

2010-08-12 17:39:07

網站運維自動化管理

2012-05-05 21:48:43

puppet自動化運維

2012-05-05 22:27:46

puppet自動化運維

2015-06-24 10:42:19

云計算運維自動化運維ANSIBLE

2020-07-21 15:53:18

戴爾

2025-01-03 16:47:02

Ansible自動化運維DevOps

2012-05-05 21:43:27

puppet自動化運維
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人妇女免费播放久久久 | 91九色在线观看 | 亚洲久久一区 | 国产成人精品久久二区二区91 | 91在线综合 | 国产成人精品一区二区三区在线 | 成人精品一区二区户外勾搭野战 | 亚洲精品视频在线看 | 国产日韩欧美一区二区 | 粉嫩国产精品一区二区在线观看 | 伊人精品在线视频 | 久久精品一级 | 手机看片169| 欧美福利视频一区 | 国产一区二区三区在线视频 | 国产a视频 | 日韩av在线一区 | 欧美视频 亚洲视频 | 蜜桃视频一区二区三区 | 欧美精品一区三区 | 精品国产色 | 一级黄色裸片 | 国产乱码久久久久久 | 99福利视频 | 操夜夜 | 色婷婷综合网站 | 亚洲高清视频在线观看 | 国产精品久久精品 | 黄色欧美视频 | a级毛片基地 | 欧美精品福利 | 国产成人精品高清久久 | 日韩一区二区在线播放 | 中文字幕在线精品 | 亚洲国产在 | 国产免费看| 国产精品伦一区二区三级视频 | 国产毛片毛片 | 国产精品久久久乱弄 | 国产精品一区二 | 国产高清精品在线 |