zoukankan      html  css  js  c++  java
  • saltstack(三) grains、pillar的使用

    一,grains  

      grains: 这个跟puppet的facter功能一样。主要负责采集客户端一些基本信息, 这个也完全可以自定义,可以在客户端自定义,然后自动汇报上来;也可以从服务器端定义然后推下去,采集完后,再汇报上来grains信息是静态的;pillar  跟grains 比较的话 他的灵活性强点,怎么定义就这么定义,然后取值就行

    grains的用法:

     1 [root@feed200 ~]# salt '*' grains.items    ##查询所有的grains信息
     2 test1:
     3     ----------
     4     SSDs:
     5     biosreleasedate:
     6         08/17/2015
     7     biosversion:
     8         A1TSA1A
     9     cpu_flags:
    10         - fpu
    11         - vme
    12         - de
    13         - pse
    14         - tsc
    15         - msr
    16         - pae
    17         - mce
    18         - cx8
    19         - apic
    20         - sep
    21         - mtrr
    22         - pge
    23         - mca
    24         - cmov
    25         - pat
    26         - pse36
    27         - clflush
    28         - dts
    29         - acpi
    30         - mmx
    31         - fxsr
    32         - sse
    33         - sse2
    34         - ss
    35         - ht
    36         - tm
    37         - pbe
    38         - syscall
    39         - nx
    40         - pdpe1gb
    41         - rdtscp
    42         - lm
    43         - constant_tsc
    44         - arch_perfmon
    45         - pebs
    46         - bts
    47         - rep_good
    48         - xtopology
    49         - nonstop_tsc
    50 此处省略N行..................
    1 [root@feed200 ~]# salt '10.13.41.21' grains.get ip_interfaces:eth0    ##查询eth0所用IP地址
    2 10.13.41.21:
    3     - 10.13.41.21
    4     - fe80::72e2:84ff:fe12:7a05

    使用grains添加自定义items

     第一种方法:

      在minion端:修改配置文件/etc/salt/minion  中 打开 default_include: minion.d/*.conf 
      在/etc/salt/minion.d/目录中添加需要增加的items,文件类型与配置项*.conf对应
     1 [root@feed200 minion.d]# cat push.conf 
     2 grains:
     3   ITEMS: 10
     4   TEST: yes
     5   OA:
     6     - a
     7     - b
      之后重启minion服务 /etc/init.d/salt-minion restart,在master端查看是否添加成功
     1 [root@feed200 ~]# salt '10.13.41.21' grains.items
     2 10.13.41.21:
     3     ----------
     4     ITEMS:
     5         10
     6     OA:
     7         - a
     8         - b
     9     SSDs:
    10     TEST:
    11         True          ##表示成功

      第二种方法:

      在master端添加,在/srv/salt/ 创建_grains目录,编写grains文件,需要返回一个字典
    1 [root@feed200 _grains]# pwd
    2 /srv/salt/_grains
    3 [root@feed200 _grains]# cat nginx.py 
    4 def nginx():
    5   nginx={}
    6   nginx['nginx']='1.5.5'    ##定义nginx的默认版本
    7   return nginx
    8 同步到minion端: salt '*' saltutil.sync_all
    9 或者使用salt '*' state.highstate(这个貌似不好使)命令同步,然后刷新各minion端salt '*' sys.reload_modules,通过grains.items看到相关的信息了
     在执行salt '*' grains.item os  --summary    ##加上--summary可以显示执行结果
    1 -------------------------------------------
    2 Summary
    3 -------------------------------------------
    4 # of minions targeted: 254
    5 # of minions returned: 254
    6 # of minions that did not return: 0
    7 -------------------------------------------

    二,pillar  

      Pillar 是 Salt 非常重要的一个组件,它用于给特定的 minion 定义任何你需要的数据, 这些数据可以被 Salt 的其他组件使用。Salt 在 0.9.8 版本中引入了 Pillar。Pillar 在解析完成 后,是一个嵌套的 dict 结构;最上层的 key 是 minion ID,其 value 是该 minion 所拥有的 Pillar 数据;每一个 value 也都是 key/value。这里可以看出 Pillar 的一个特点,Pillar 数据是与特定 minion 关联的,也就是说每一个minion 都只能看到自己的数据, 所以 Pillar 可以用来传递敏感数据 (在 Salt 的设计中, Pillar 使用独立的加密 session,也是为了保证敏感数据的安全性) 。 Pillar 可以用在哪些地方?

      敏感信息:每个minion只能访问master分配给自己的pillar信息,例如ssh-key,加密证书
      变量:差异化的信息等,
      其他任何数据,可以在target及state中使用

      用在 Targetting 中,Pillar 可以用来选择 minion,使用-I 选项,默认情况下,master 配置文件中的所有数据都添加到 Pillar 中,且对所有 minion 可用。如果要禁用这一默认值,可以在 master 配置文件中添加如下数据,重启服务后生效,关于Pillar的配置见 /etc/salt/master

     pillar_roots:
     base:
       – /srv/pillar
     1     packages.sls
     2         {% if grains['os'] == 'RedHat' %}      ##判断系统时候是redhat,是的话Apache名是httpd
     3         apache: httpd
     4         git: git
     5         {% elif grains['os'] == 'Debian' %}
     6         apache: apache2
     7         git: git-core
     8         {% endif %}
     9     top.sls
    10         base:
    11             '*':
    12               - packages
    13   salt '*' saltutil.refresh_pillar       ## 定义好pillar后,执行下面命令进行同步 
    14 salt '*' pillar.data             ## 命令查看pillar信息
    15 salt '*' pillar.get schedule        ## pillar取某个值
  • 相关阅读:
    数据不是搜集起来的,是沉淀下来的,跟脚印一样,脚印不是修路的人搜集起来的,只要有了路就一定有脚印,不可能说修一条路不留下脚印,世界上没有这样的路
    VC6.0编译的DLL文件能否反编译知道里面的代码?
    Why does the PDB format change every release?
    mysql_query与 mysql_real_query区别
    如何把Backtrack 5安装到U盘/Backtrack 4安装方法
    FreeBSD:像Linux下一样使用vim
    栈的出栈序列个数
    npm outdated -g --depth=0
    npm Updating packages downloaded from the registry
    TypeScript安装
  • 原文地址:https://www.cnblogs.com/phennry/p/5416384.html
Copyright © 2011-2022 走看看