ansible YAML之庭中有奇樹

2022-09-23 01:48:11 字數 3227 閱讀 1719

9.yaml9.1簡介

(1)yaml是乙個可讀性高的用來表達資料序列的格式。

(2)yaml參考了其它多種語言。包括:xml、c語言、python、perl以及電子郵件格式的rfc2822等。clark evans在2023年首次發表了這種語言。

(3)yaml不是xml,在開發這種語言時,yaml的意思其實是:yet another markup language,

9.2特性

(1)yaml的可讀性好

(2)和指令碼語言的互動性好

(3)使用語言的資料型別

(4)一致的資訊模型

(5)易於實現

(6)基於流來處理

(7)表達能力強,擴充套件性好

9.3語法

(1)yaml的語法和其它高階語言類似,並且可以簡單表達清單、雜湊表、標量等資料結構。

(2)其結構通過空格來展示,序列裡的項用「-」來代表。map裡的鍵值對用「:」分割同乙個資料有多個時叫做序列9.4資料型別

9.4.1鍵值對

(1)乙個鍵對應乙個值name:zhang //鍵值對age:24gender:male

(2)乙個鍵對應多個值spouse: //也是鍵值對,採用縮排的方式,表示值是下邊的三項, name:wangage:24gender:female

(3)乙個鍵對應兩個列表,乙個列表裡有多個值children:

name:kebiage:7gender:male name:jamesage:8gender:female//也是鍵值對,同一類資料有多個值時,叫做序列,每乙個資料項使用乙個橫線「-」來引導,值是另外一組鍵值對

9.4.2列表列表的所有元素均使用「-」打頭,例如: a list of tasty fruits apple orange strawberry mango9.4.3字典字典通過key 與 value進行標識 aemployee record

name: zhangjob:engineerskill:pragram也可以將key:value放置於{}中進行標識,例如

an example record

9.5基礎元素

9.5.1 facts

(1)facts是由正在通訊的遠端目標主機發回的資訊,這些資訊被儲存在ansible變數中

(2)要獲取指定的遠端主機所支援的所有facts,可使用如下命令ansible hostname –m setup

9.5.2 register

(1)把任務的輸出定義為變數,然後用於其他任務

(2)例項如下tasks:shell:/usr/bin/fooregister:foo_resultignore_errors:true

9.5.3 max_fail_percentage

設定最大失敗的比率,比如設定25%,則如果有4臺機器,有2臺執行任務失敗則會終止整個play,其它任務不再執行max_fail_percentage:25

9.5.4 set_fact

可以把比如register註冊的變數,裡邊可能是乙個json,然後取值之後使用set_fact

9.5.5 serial

指定每次在幾個hosts中執行

9.5.6 local_action&delegate_to: localhost如果只想在控制機器執行,而不是遠端機器執行,用這個,但是local_action有諸多限制,貌似只能使用它自己的引數

name: deploy mezzaninehosts: webgather_facts: false vars & vars_files section not shown here

tasks:

name: wait for ssh server to be runninglocal_action: wait_for port=22 host="}" search_regex=openssh9.6變數9.6.1變數組成變數只能由字母數字下劃線組成,且只能以字母開頭

9.6.2通過命令列傳遞變數

(1)在執行playbook的時候也可以傳遞一些變數供playbook使用

(2)示例如下:ansible-playbook test.yml –extra-vars 「host=www user=zhang」9.6.3通過roles來傳遞變數(1)當給乙個應用主機角色的時候可以傳遞變數,然後在角色內使用這些變數

(2)例項如下: hosts:webserversroles: common inventory

9.6.4定義主機時新增變數

(1)在inventory中定義主機時為其新增主機變數以便在playbook中使用(2)例如:[webservers]www.1.mage.com http_port=80 maxrequestsperchild=80 定義主機時,有自己專用的變數,每個子程序能夠接受的最大訪問量1.ansible_ssh_host # 要連線的主機名

2.ansible_ssh_port # 埠號預設是22

3.ansible_ssh_user # ssh連線時預設使用的使用者名稱

4.ansible_ssh_pass # ssh連線時的密碼

5.ansible_sudo_pass # 使用sudo連線使用者是的密碼

6.ansible_ssh_private_key_file # 秘鑰檔案如果不想使用ssh-agent管理時可以使用此選項

7.ansible_shell_type # shell的型別預設sh8.ansible_connection # ssh 連線的型別: local , ssh , paramiko在 ansible 1.2 之前預設是 paramiko9後來智慧型選擇,優先使用基於 controlpersist 的 ssh (支援的前提)ansiblepython interpreter #用來指定 python 直譯器的路徑,同樣可以指定ruby 、perl 的路徑9.6.5組變數

(1)組變數是指賦予給指定組內所有主機上的在playbook中可用的變數

(2)例如:[webservers]www1.mage.comwww2.mage.com[webservers:vars]ntp_server=ntp.magedu.comnfs_server=nfs.magedu.com

9.6.6組巢狀

(1)inventory中,組還可以包含其它的組,並且也可以向組中的主機指定變數。不過,這些變數只能在ansible-playbook中使用,而ansible不支援

(2)例如:nginx和apache是webserver的子組

9.6.7在配置檔案中定義變數在配置檔案中定義變數,然後在每個主機上後邊跟上相關的值,就可以將每個主機的配置檔案都設定為適合自己的。

CSS布局奇淫技巧之

居中是我們使用css來布局時常遇到的情況。使用css來進行居中時,有時乙個屬性就能搞定,有時則需要一定的技巧才能相容到所有瀏覽器,本文就居中的一些常用方法www.cppcns.com做個簡單的介紹程式設計客棧。注 本文所講方法除了特別說明外,都是相容ie6 谷歌 火狐等主流瀏覽器的。先來說幾種簡單的...

python之畫個小豬佩奇

從csdn看到的,什麼都不用說了,copy ctrl v就是幹。選好畫板大小,設定好畫筆顏色 粗細,定位好位置,依次畫鼻子 頭 耳朵 眼睛 腮 嘴 身體 手腳 尾巴,完事兒。都知道,turtle 是 python 內建的乙個比較有趣味的模組,俗稱 海龜繪圖 它是基於 tkinter 模組打造,提供一...

Windows批處理奇淫技巧之sleep

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!在windows上想用批處理指令碼幹點啥還真是麻煩,乙個linux上簡簡單單的sleep命令,在windows的批處理裡竟然沒有提供,找了一下發現下面兩種奇淫技巧倒是可以變相的實現 方法一ping n 3 127.0.0.1 nul其中3是需要sl...