中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Salt Highstate數據結構定義

發布時間:2021-11-26 15:46:38 來源:億速云 閱讀:150 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關如何理解Salt Highstate數據結構定義,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

小編將詳細介紹SLS文件中每個部分的名稱與含義,以及SLS中的數據處理后的數據結構。

Salt State Tree

Top file

Salt State系統的入口文件,其中定義了minion處于哪個環境,加載哪些SLS模塊。

State tree

存放在file_roots目錄下的一系列SLS文件。使用SLS模塊的形式來組織State tree。

Include聲明

Include聲明

一個list,其元素是要引用到本SLS文件的其他SLS模塊。 只能用在highstate結構的頂層。

示例:

include:
  - edit.vim
  - http.server

Module引用

Module引用

SLS模塊的名字,以在Salt master上的文件結構命名。名為edit.vim的模塊指向salt://edit/vim.sls

ID聲明

ID聲明

定義一個獨立的highstate數據段。ID在highstate dict中作為key,其對應的value是包含state聲明和requisit聲明的另一個dict。
用在highstate結構的頂層或extend聲明的下一層。
ID在整個State tree中必須是唯一的。如果同一個ID用了兩次,只有最先匹配到的生效,其他所有的同名ID聲明被忽略。

Extend聲明

Extend聲明

擴展被引用的SLS模塊中的name聲明。extend聲明也是一個dict,其key必須是在被引用的SLS模塊中定義的ID。
只能用在highstate結構的頂層。

在需要增加或修改另一個SLS文件中定義的state聲明時,Extend聲明非常有用。下面的代碼來自mywebsite.sls文件,其中include并且extend了apache.sls模塊(增加了apache監視的對象),使得Apache服務在配置文件mywebsite發生改變時自動重啟。

include:
  - apache
extend:
  apache:
    service:
      - watch:
        - file: mywebsite
mywebsite:
  file:
    - managed

State聲明

State聲明

一個list,至少包含一個定義function聲明的string,0個或多個function arg聲明的dict。
還有一些可選的成員,比如名字覆蓋部分(name和names聲明),requistie聲明。
只能用在ID聲明的下一級。

Requisite聲明

Requisite聲明

一個list,其成員是requisite引用。
用來生成動作依賴樹。Salt states被設計成按確定的順序執行,require或watch其他Salt state可以調整執行的順序。
做為list組件用在state聲明下一級,或是作為key用在ID聲明下一級。

Requisite引用

Requisite引用

只有一個key的dict。key是被引用的state聲明的名字,value是被引用的ID聲明的名字。 只能用作requisite聲明的成員。

Function聲明

Function聲明

state中要要執行的function。1個state聲明中只能有1個function聲明。

下面的例子中,state聲明調用了state模塊pkg模塊中的installed功能。

httpd:
  pkg.installed

可以用行內縮寫方式聲明function(上面的例子中就是),使用完整寫法使得數據結構更清晰:

httpd:
  pkg:
    - installed

需要注意的是連續的兩個簡寫形式是無效的,為了避免疑惑,建議全部采用完整寫法。
INVALID:

httpd:
  pkg.installed
  service.running

VALID:

httpd:
  pkg:
    - installed
  service:
    - running

只能用作state聲明的成員。

Function arg聲明

Function arg聲明

只有1個key的dict,作為參數傳遞給function聲明,其值為有效的Python類型。其類型必須滿足function的需要。 用在function聲明下一級。

下面的例子中,state聲明是file,function聲明是managed,user、group和mode是傳遞給managed的參數:

/etc/http/conf/http.conf:
  file.managed:
    - user: root
    - group: root
    - mode: 644

Name聲明

Name聲明

覆蓋state聲明中的name參數。name參數的默認值是ID聲明。 name總是1個單key字典,其值類型是string。

在有的場景下,修改默認的name參數非常有用。比如說,可以避免ID沖突。下面例子中的兩個state不能同時使用/etc/motd作為ID:

motd_perms:
  file.managed:
    - name: /etc/motd
    - mode: 644
motd_quote:
  file.append:
    - name: /etc/motd
    - text: "Of all smells, bread; of all tastes, salt."

另外一個使用name聲明的場景是,ID聲明非常長,又需要在多次引用這個ID。在下面的例子,使用mywebsite/etc/apache2/sites-available/mywebsite.com方便多了:

mywebsite:
  file.managed:
    - name: /etc/apache2/sites-available/mywebsite.com
    - source: salt://mywebsite.com
a2ensite mywebsite.com:
  cmd.wait:
    - unless: test -L /etc/apache2/sites-enabled/mywebsite.com
    - watch:
      - file: mywebsite
apache2:
  service:
    - running
    - watch:
      - file: mywebsite

Names聲明

Names聲明

將1個state聲明擴展為多個不同名的state聲明。

看下面的例子:

python-pkgs:
  pkg.installed:
    - names:
      - python-django
      - python-crypto
      - python-yaml

轉換成lowstate后的結果是:

python-django:
  pkg.installed
python-crypto:
  pkg.installed
python-yaml:
  pkg.installed

完整的例子

下面的YAML是一個完整的例子,其中的名字部分使用的是hightstate組件名。

<Include Declaration>:
  - <Module Reference>
  - <Module Reference>
<Extend Declaration>:
  <ID Declaration>:
    [<overrides>]
# standard declaration
<ID Declaration>:
  <State Declaration>:
    - <Function>
    - <Function Arg>
    - <Function Arg>
    - <Function Arg>
    - <Name>: <name>
    - <Requisite Declaration>:
      - <Requisite Reference>
      - <Requisite Reference>
# inline function and names
<ID Declaration>:
  <State Declaration>.<Function>:
    - <Function Arg>
    - <Function Arg>
    - <Function Arg>
    - <Names>:
      - <name>
      - <name>
      - <name>
    - <Requisite Declaration>:
      - <Requisite Reference>
      - <Requisite Reference>
# multiple states for single id
<ID Declaration>:
  <State Declaration>:
    - <Function>
    - <Function Arg>
    - <Name>: <name>
    - <Requisite Declaration>:
      - <Requisite Reference>
  <State Declaration>:
    - <Function>
    - <Function Arg>
    - <Names>:
      - <name>
      - <name>
    - <Requisite Declaration>:
      - <Requisite Reference>

看完上述內容,你們對如何理解Salt Highstate數據結構定義有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巩留县| 浪卡子县| 鄂托克前旗| 桂林市| 丰顺县| 孝昌县| 宁乡县| 鹰潭市| 利辛县| 香格里拉县| 南开区| 金堂县| 双牌县| 鹤庆县| 如皋市| 敦煌市| 高安市| 静宁县| 铜山县| 甘肃省| 安乡县| 扶风县| 广灵县| 巴彦县| 蒙阴县| 周口市| 汉川市| 来宾市| 西昌市| 郧西县| 樟树市| 五原县| 和田县| 开平市| 鞍山市| 深泽县| 双柏县| 盱眙县| 赫章县| 万全县| 永福县|