日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Saltstack SLS文件解读

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Saltstack SLS文件解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

SLS文件

簡述

SLS(代表SaLt State文件)是Salt State系統的核心。SLS描述了系統的目標狀態,由格式簡單的數據構成。這經常被稱作配置管理

top.sls

top.sls 是配置管理的入口文件,一切都是從這里開始,在master 主機上,默認存放在/srv/salt/目錄. top.sls 默認從 base 標簽開始解析執行,下一級是操作的目標,可以通過正則,grain模塊,或分組名,來進行匹配,再下一級是要執行的state文件,不包換擴展名。

創建 /srv/salt/top.sls

  • 通過正則進行匹配的示例,
base:'*':- webserver
  • 通過分組名進行匹配的示例,必須要有 - match: nodegroup
base:group1:- match: nodegroup - webserver
  • 通過grain模塊匹配的示例,必須要有- match: grain
base:'os:Fedora':- match: grain- webserver

準備好top.sls文件后,編寫一個state文件

  • /srv/salt/webserver.sls
apache: # 標簽定義pkg: # state declaration- installed # function declaration
  • 第一行被稱為(ID declaration) 標簽定義,在這里被定義為安裝包的名。注意:在不同發行版軟件包命名不同,比如 fedora 中叫httpd的包 Debian/Ubuntu中叫apache2
  • 第二行被稱為(state declaration)狀態定義, 在這里定義使用(pkg state module)
  • 第三行被稱為(function declaration)函數定義, 在這里定義使用(pkg state module)調用 installed 函數

最后可以在終端中執行命令來查看結果:

salt '*' state.highstate

或附件 test=True參數 測試執行

salt '*' state.highstate -v test=True

主控端對目標主機(targeted minions)發出指令運行state.highstatem模塊,目標主機首先會對top.sls下載,解析,然后按照top.sls內匹配規則內的定義的模塊將被下載,解析,執行,然后結果反饋給 master.

SLS文件命名空間

注意在以上的例子中,SLS文件 webserver.sls 被簡稱為webserver. SLS文件命名空間有如下幾條基本的規則:

  • SLS文件的擴展名 .sls 被省略。 (例如. webserver.sls 變成 webserver)
  • 子目錄可以更好的組織,每個子目錄都由一個點來表示.(例如 webserver/dev.sls 可以簡稱為 webserver.dev)
  • 如果子目錄創建一個init.sls的文件,引用的時候僅指定該目錄即可. (例如 webserver/init.sls 可以簡稱為 webserver)
  • 如果一個目錄下同時存在webserver.sls 和 webserver/init.sls,那么 webserver/init.sls 將被忽略,SLS文件引用的webserver將只引用webserver.sls
  • state多文件示例

    下面是一個state多文件示例,

    apache/init.sls apache/httpd.conf ssh/init.sls ssh/server.sls ssh/banner ssh/ssh_config ssh/sshd_config

    創建一個引用這些目錄的 server.sls

    server:- apache- ssh

    state的層級關系

    include 示例:

    • include 包含某個state文件

    /srv/salt/apache.sls

    apache:pkg:- installedservice:- running - require:- pkg: apache

    使用 include 可以包換有state文件而不必重新寫

    • /srv/salt/apache-custom.sls
    include: apache

    extend 示例:

    • extend 與include配合使用,作用是 修改,或擴展引用的state文件的某個字段

    /srv/salt/apache.sls

    apache:pkg:- installedservice:- running - require:- pkg: apache

    extend默認是替換引用文件的某個字段的屬性,如例

    • /srv/salt/apache-change.sls
    include: - apache extend:apache pkg:- name: vim- installed

    當extend與watch,或require結合使用的時候,則是擴展某個字段的屬性,如例:

    • /srv/salt/apache-custom.sls
    include: - apache extend:apache service:- watch:- file: /etc/redis.conf

    state的邏輯關系列表

    • match: 配模某個模塊,比如 match: grain match: nodegroup
    • require: 依賴某個state,在運行此state前,先運行依賴的state,依賴可以有多個
    • watch: 在某個state變化時運行此模塊
    • order: 優先級比require和watch低,有order指定的state比沒有order指定的優先級高

    state的邏輯關系實例

    • require:依賴某個state,在運行此state前,先運行依賴的state,依賴可以有多個
    httpd: # maps to "name"pkg: - installed file: # maps to State module filename- managed: # maps to the managed function in the file State module- name: /etc/httpd/conf/httpd.conf # one of many options passed to the manage function- source: salt://httpd/httpd.conf- require: - pkg: httpd
    • watch:在某個state變化時運行此模塊,watch除具備require功能外,還增了關注狀態的功能。
    redis:pkg:- latestfile.managed:- source: salt://redis/redis.conf- name: /etc/redis.conf- require:- pkg: redisservice.running:- enable: True- watch:- file: /etc/redis.conf- pkg: redis
    • order:優先級比require和watch低,有order指定的state比沒有order指定的優先級高
    vim:pkg.installed:- order: 1

    想讓某個state最后一個運行,可以用last

    進階主題:模板

    使用模板來精簡SLS,使SLS可以使用python的 循環,分支,判斷 等邏輯

    {% for item in ['tmp','test'] %} /opt/{{ item }}:file.directory:- user: root- group: root- mode: 755- makedirs: True {% endfor %} httpd:pkg.managed: {% if grains['os'] == 'Ubuntu' %}- name: apache2 {% elif grains['os'] == 'CentOS' %}- name: httpd {% endif %}- installed

    通過加載jinja模板引擎,可以模板配置文件按照預訂條件來生成最終的配置文件

    /opt/test.conf

    {% if grains['os'] == 'Ubuntu' %} host: {{ grains['host'] }} {% elif grains['os'] == 'CentOS' %} host: {{ grains['fqdn'] }} {% endif %} /opt/test.conf:file.managed:- source: salt://test.conf- user: root- group: root- mode: 644- template: jinja

    參考文檔

    • 文檔: http://docs.saltstack.com/topics/tutorials/starting_states.html
    • 文檔: http://docs.saltstack.com/ref/states/writing.html
    • 文檔: http://docs.saltstack.com/ref/states/ordering.html
    • 文檔: http://www.ituring.com.cn/article/37783
    • 文檔: http://docs.saltstack.com/topics/tutorials/starting_states.html

    轉載于:https://my.oschina.net/u/877567/blog/183959

    總結

    以上是生活随笔為你收集整理的Saltstack SLS文件解读的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字母av | 日本午夜在线视频 | 韩国短剧在线观看 | 日韩欧美亚洲一区二区三区 | 天堂影院一区二区 | 久久久久成人片免费观看蜜芽 | 成人深夜在线 | 久久久精品国产sm调教网站 | 伊人毛片 | 亚洲成av人片一区二区梦乃 | 一级片小视频 | 国产综合视频在线观看 | 在线观看中文字幕亚洲 | 男人激情网| 婷婷综合精品 | 欧洲成人一区二区三区 | 成人毛片a| 黄色小视屏 | 亚洲av无码成人精品国产 | 亚洲熟妇无码乱子av电影 | 国产伦精品一区二区三区在线观看 | 国产综合亚洲精品一区二 | 亚洲成a人v欧美综合天堂麻豆 | 国产呦小j女精品视频 | 婷婷在线一区 | 91字幕网| 国产女主播一区二区三区 | 古典武侠av | 性色国产成人久久久精品 | 亚洲精选久久久 | 一区在线观看视频 | 操大逼网站 | 极品白嫩的小少妇 | 欧美老熟妇乱大交xxxxx | 男女搞网站| 国产香蕉视频在线 | 国产精品视频一区二区三区在3 | 91成人免费版 | 天天艹av| 日韩中文字幕在线观看 | 另类天堂网 | 美女色诱男人激情视频 | 一区二区三区免费观看视频 | 91成人午夜 | 中国黄色a级 | 国产人成无码视频在线观看 | 国产成人精品女人久久久 | 曰批视频在线观看 | 国产欧美二区 | 天天想你免费观看完整版高清电影 | 在线免费观看的av | www.亚洲视频| 国产在线不卡视频 | 精品三级| 污污的网站在线观看 | 97精品国产97久久久久久免费 | 丁香激情六月 | 婷婷激情小说 | 老司机激情视频 | 穿扒开跪着折磨屁股视频 | 亚洲视频在线观看免费 | 激情中文字幕 | 国产精品第13页 | 亚洲一区二区91 | av日韩一区二区 | 中文在线а√在线8 | 亚洲91久久| 精品肉丝脚一区二区三区 | 妇女一级片 | 国内自拍av | 婷婷精品在线 | 91成人在线观看喷潮蘑菇 | 欧洲做受高潮欧美裸体艺术 | 我和我的太阳泰剧在线观看泰剧 | 久久久不卡国产精品一区二区 | 国产午夜精品理论片在线 | 神马午夜嘿嘿 | 超碰超在线 | 熟女丰满老熟女熟妇 | 一区二区在线观看免费视频 | 国产999在线| 亚洲欧美国产一区二区 | 成人深夜视频在线观看 | 9l视频自拍九色9l视频 | 亚洲成人婷婷 | 精品久久久久久中文字幕人妻最新 | 亚洲精品乱码久久久久久蜜桃不卡 | 国产电影一区二区三区爱妃记 | 欧美性猛交 xxxx | 天天av网 | 精东传媒在线观看 | 国产福利一区二区视频 | 日日夜精品 | 成年女人18级毛片毛片免费 | 天天干天天操天天爽 | 波多野结衣在线观看一区二区 | 国产精品一线二线 | 色网网站| 国产成人免费片在线观看 |