zoukankan      html  css  js  c++  java
  • 企业——saltstack自动化部署软件之Grains、Pillar

    一.什么是Grains和Pillar?

      Grains:grains是minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中。其实grains在每次的minion启动(重启)的时候都会采集,即向master汇报一次的。grains是minion启动时加载的,在运行过程中不会发生变化,所以是静态数据。grains中包含诸如运行的内核版本,操作系统等信息。在master端通过Grains可以获得minion对应的变量值。

      Pillar:Pillar是在salt 0.9.8版本后才添加的功能组件。它跟grains的结构一样,也是一个字典格式,数据通过key/value的格式进行存储。在Salt的设计中,Pillar使用独立的加密sesstion,所以Pillar可以用来传递敏感的数据,例如ssh-key,加密证书等。
         存储位置:存储在master端,存放需要提供给minion的信息
         应用场景:敏感信息:每个minion只能访问master分配给自己的信息

    二.Grains的相应的配置

     查看远端服务器的数据的命令:
       salt wf2 grains.item os      ##查看 wf2 的 os 的类型
        salt wf2 grains.item ipv4    ##查看 wf2 的 ip
        salt -G 'os:redhat' cmd.run hostname      ## -G表示匹配   'os:redhat'表示前面匹配所有红帽的系统  cmd 表示匹配到一致的远端的服务器执行cmd后面的命令
        更改信息的方式有两种:一在minion端更改,二在master端更改


    1. 在minion端,有两种方法更改grains

     方法一:在minion的配置文件中更改默认的 roles 值
       cd /etc/salt/
       ls
       vim minion
        grains:
          roles:
            - apache      ##更改默认的roles的值
       /etc/init.d/salt-minion restart     ##因为是静态的更改配置文件,所以要重新启动服务

       测试:在master上    salt wf2 grains.item roles     ##可以看到输出的是,刚更改的配置文件的数据
      

     方法二:在minion端的salt下编写一个文件
       cd /etc/salt
       ls
       vim grains
        roles: nginx     ##因为不是更改的配置文件,所以不需要重起
       
       测试:在master端上    salt wf3 grains.item roles
            ##虽然编写了配置文件,但是master端没有识别这个文件,并不知道这个文件的存在,所以需要触发一下,模块刷一下
        salt wf3 saltutil.sync_grains    ##刷新
        salt wf3 grains.item roles    ##再次查看,就可以看到添加的文件里面的信息


    2在master端,有两种方法更改grains

         ##什么系统操作什么命令  role自定义角色
         ##无需重起,只需要在master上触发一下grains


     方法一:编辑top.sls文件
      top file中不需要匹配主机名,批量的配置服务器
       vim top.sls
        base:
          "wf1":
            - haproxy.service
          "roles:apache":
            - match: grain
            - apache.install
          "roles:nginx":
            - match: grain
            - nginx.service

     方法二:在master端,编写py脚本     优点是:不需要登陆远程的服务端
       mkdir _grains
       cd _grains/
       vim my_grains.py
         #!/usr/bin/env python
         def my_grains():
             grains = {}
             grains['hello'] = 'westos'
             grains['salt'] = 'stack'
             return grainsa
       salt wf3 saltutil.sync_grains  ##查看 wf3 的 grains 的值
       
       测试:
       在wf3处: cd /var/cache/salt -> tree . -> 将my文件传送了过来
       在wf1处: salt wf3 grains.item hello/salt

    ==================================================================================
    注意:如果同时编写了这些,那么这四个的优先级又是什么呢?
       1.grains    ##配置文件中的grains的默认的(或者更改的)值
       2./etc/salt/grains    ##在 minion 端编写的文件
       3./etc/salt/minion    
       4._grains/my_grains.py    ##在master上面添加的目录和文件
    ==================================================================================

    三.Pillar的相应的配置

     wf1上:
       cd /etc/salt/
       vim master
          pillar_roots:
            base:
              - /srv/pillar
       /etc/init.d/salt-master restart

       mkdir /srv/pillar
       cd /srv/pillar
       mkdir web
       cd web
       vim install.sls
          {% if grains['fqdn'] == 'wf2' %}
          webserver: httpd
          {% elif grains['fqdn'] == 'wf3' %}
          webserver: nginx
          {% endif %}

       cd ..
       vim top.sls
          base:
            '*':
              - web.install

       测试:  salt '*' pillar.items
          salt '*' saltutil.refresh_pillar    ##刷新
          salt wf2/3 pillar.item webserver     ##单独看的话,就查看不了,需要刷新
          salt '*' saltutil.refresh_pillar    ##刷新
          salt wf2/3 pillar.item webserver    ##刷新过后就可以查看

    ==================================================================================   
    注意:pillar的用法:-I 匹配  -S扫描整个网络
       salt -I 'webserver:httpd' test.ping
       salt -S 172.25.254.0/24 test.ping
    ==================================================================================

  • 相关阅读:
    innodb引擎相关参数
    索引及执行计划
    多实例
    infomation_schema基本使用
    流程控制
    初识Modbus TCP/IP-------------C#编写Modbus TCP客户端程序(一)
    初识Modbus TCP/IP-------------C#编写Modbus TCP客户端程序(二)
    C#多线程学习(一) 多线程的相关概念
    获取系统时间的DOS命令
    UML类图(上):类、继承和实现
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/10831259.html
Copyright © 2011-2022 走看看