zoukankan      html  css  js  c++  java
  • SaltStack配置管理

      上一篇:SaltStack远程执行

      配置管理使用YAML标记语言

      YAML

      YAML是“YAML不是一种记语言”的外语缩写 [1]  (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

      格式

      数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。样例如下:

    house:
      family:
        name: Doe
        parents:
          - John
          - Jane
        children:
          - Paul
          - Mark
          - Simone
      address:
        number: 34
        street: Main Street
        city: Nowheretown
        zipcode: 12345
    

      

      注意:
    1. 字串不一定要用双引号标识;
    2. 在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符);
    3. 允许在文件中加入选择性的空行,以增加可读性;
    4. 在一个档案中,可同时包含多个文件,并用“——”分隔;
    5. 选择性的符号“...”可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)。

      三个规则

      缩进:默认两个空格,不能使用Tab键

      冒号:冒号后面必须有一个空格,类似于Python的key和value

         有两种写法

    my_key: my_value
    
    my_key: 
      my_value
    

      短横线:后面有一个空格,表示列表,列出多个(比如需要安装多个软件包)

      写一个配置

      修改master配置文件/etc/salt/master定义路径(实际生产有测试,开发,生产等目录)

      新建这几个文件夹

    mkdir -p /srv/salt/{base,dev,test,prod}
    

      重启master

    systemctl restart salt-master
    

      PS:file_roots下面base文件夹是必备的

      进入文件夹cd /srv/salt/base/写配置文件,为了区分不同的软件可以在此处新建一个web文件夹

    mkdir web
    cd web/
    

      写一个安装apache的状态(后缀必须是sls结尾)/srv/salt/base/web/apache.sls

    apache-install:
      pkg.installed:
        - name: httpd
        
    apache-service:
      service.running:
        - name: httpd
        - enable: True

      apache-install和apache-service是key也可以叫ID唯一标识符,不能重复

      pkg是一个状态模块使用里面的方法installed安装包

      sevice是一个状态模块使用里面的running运行方法

      name是安装的包名称或者管理的服务的名称

      enable是设置开机自动启动

      PS:salt从上往下读取执行,读取到安装包的命令不同的操作系统使用的命令不同,CentOS使用yum安装,ubuntu使用apt-get安装。(这里是一个虚拟的配置文件salt会根据不同的系统执行的命令不同)

      

      执行前先看

      master定义的路径是

      配置文件的路径是

      执行

    salt 'linux-node2.example.com' state.sls web.apache
    

      往linux-node2.example.com主机执行,state是模块,sls是执行方法默认执行是从base目录下面执行,只需要写执行的配置文件名,不需要加后缀sls

      PS:加入需要执行master设置的其他目录下面的模块比如需要执行prod目录下面的配置文件加参数,saltenv=prod就是从prod下面开始执行了

       

      可以看到node2上面已经启动了httpd

      停止了httpd然后再次在master执行刚刚的命令

      所以saltstack除了配置管理也可以状态管理

      

      以上安装指定了需要安装的模块安装web下面的apache,不自动化,下面使用top file自动化

      查看配置文件/etc/salt/master 默认可以在base环境下写一个top.sls文件,可以在top.sls指定主机做什么任务(不建议修改名称)

      编写一个top.sls

    base:
      'SaltStack-master':
        - web.apache
      'linux-node2.example.com':
        - web.apache

      base:顶头写环境名称

      'SaltStack-master':需要执行主机的ID

      web.apache:需要执行的命令模块

      执行高级状态

    salt '*' state.highstate
    

      执行的模块是state方法是highstate会从环境base读取top.sls执行

      PS:这里执行的*是代表通知所有主机,假如top.sls删除了ID为SaltStack-master的内容在执行则会报以下错误

      没有在top文件里面匹配到对应的数据

      PS:使用高级状态就可以把需要执行的都写在top里面然后只需要执行一条命令即可salt '*' state.highstate

      

      如果需要验证写的配置文件是否正确可以加参数test=True测试但是不实际执行,测试无误再执行

    salt '*' state.highstate test=True
    

      

       下一篇:SaltStack数据系统-Grains

      

      

  • 相关阅读:
    Xen, Linux and udev
    xend的调试方法
    xenstored为什么不能重启?
    [转]xen虚拟windows使用vnc桌面鼠标位置偏移现象的解决
    基于模板的代码生成器
    区分JavaScript中的undefined,null和NaN
    ExtJS+ASP.NET实现异步Tree的节点搜索和查找下一个(FindNext)
    ExtJS+ASP.NET实现Tree节点的拖动(DragDrop)
    ExtJS+ASP.NET实现真实的进度条显示服务器端长时间操作的进度
    说说企业架构(企业级架构)和应用程序架构
  • 原文地址:https://www.cnblogs.com/minseo/p/8667773.html
Copyright © 2011-2022 走看看