zoukankan      html  css  js  c++  java
  • Linux-saltstack-3 saltstack的grains和pillar的基本使用

    @

    一、简介

    1.grains:静态数据 在minion启动的时候收集的minion本地的相关信息
    2.pillar:动态数据
    pillar存在master端
    每个minion只能访问master分配给自己的信息
    pillar主要是下发敏感数据

    二、grains

    1.查看客户端所有的grains项

    grains.ls

    #这里查看的只有项,没有值
    [root@salt-master ~]# salt 'salt-client' grains.ls
    salt-client:
        - biosreleasedate
        - biosversion
        - cpu_flags
        - cpu_model
        - cpuarch
    	......
    

    2.查看grains的所有的项和值

    grains.items

    [root@salt-master ~]# salt 'salt-client' grains.items |head 
    salt-client:
        ----------
        biosreleasedate:
            07/02/2015
        biosversion:
            6.00
        cpu_flags:
            - fpu
            - vme
            - de
    
    

    3.查看某个项和值

    (1)语法1:

    ​ grains.item key1 key2 ......

    ​ 这里查看了两个项和对应的值(os和saltversion)

    [root@salt-master ~]# salt 'salt-client' grains.item os saltversion
    salt-client:
        ----------
        os:
            CentOS
        saltversion:
            3002.2
    
    
    (2)语法2:

    ​ grains.get key
    ​ grains.get 只能查看有一个项的值 不能同时查看多个项的值

    [root@salt-master ~]# salt salt-client grains.get os
    salt-client:
        CentOS
    

    4.根据grains来匹配目标主机

    语法:
    -G 'grains的项:grains项值'

    例子1:使用单个项匹配主机

    [root@node4 ~]# salt 'salt-client'  grains.item os
    salt-client:
        ----------
        os:
            CentOS
    
    [root@node4 ~]# salt -G 'os:CentOS' cmd.run 'mkdir /root/grains_test'
    salt-client:
    salt-master:
    
    

    例子2:多层项嵌套匹配主机

    [root@node4 ~]# salt -G 'ip_interfaces:ens32:192.168.1.106' cmd.run 'head -1 /etc/passwd'
    salt-client:
        root:x:0:0:root:/root:/bin/bash
    
    

    5.自定义grains

    方法1:修改minion文件

    (1)修改客户端的配置文件
    [root@node5 ~]# vim /etc/salt/minion
    #在137行有样例可以参照者写。我们手动加入以下内容
    grains:
      grains_test_items:
        - zhangsan
     
    
    

    解释:
    grains: 固定写法,配置文件中的语法就是这么规定的写法,参照137行。含义就是定义grains项
    grains_test_items: 自定义项
    zhangsan :值

    (2)重启salt-minion服务
    [root@node5 ~]# systemctl  restart salt-minion
    
    (3)查看自定义项结果
    [root@node4 ~]# salt 'salt-client' grains.item grains_test_items
    salt-client:
        ----------
        grains_test_items:
            - zhangsan
    
    

    方法2:通过grains文件定义自定义项

    我们通常使用第二种方法,因为这样好管理,不和minion配置文件混和配置

    (1)在客户端新建grains文件
    [root@node5 ~]# touch /etc/salt/grains 
    
    (2)编写自定义项
    [root@node5 salt]# cat grains 
    test_name: lisi
    
    (3)同步grains自定义项
    #在这里我们用另外一种方法同步grains自定义项,不用重启客户端
    #使用saltutil.sync_grains 来同步自定义grains项目。它可以生效配置文件中的自定义项和grains文件中的自定义项
    [root@node4 ~]# salt 'salt-client' saltutil.sync_grains
    salt-client:
    
    [root@node4 ~]# salt 'salt-client' grains.item test_name
    salt-client:
        ----------
        test_name:
            lisi
    
    

    三、pillar

    Pillar是Salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被Salt的其他组件使用。这里可以看出Pillar的一个特点,Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。 另外还可以在Pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在State中引用等。

    1.查看pillar项

    #默认是看不到pillar的items的
    [root@node4 ~]# salt '*' pillar.items
    salt-client:
        ----------
    salt-master:
        ----------
    
    #想要查看pillar的items 就要打开pillar_opts选项
    [root@node4 ~]# vim /etc/salt/master
    #将pillar_opts的false改为True
    pillar_opts: True
    
        
    #重启master
    [root@node4 ~]# systemctl  restart salt-master
    
    #再次查看就可以看到了
    
    

    2.自定义pillar项

    [root@salt-master ~]# vim /etc/salt/master
    #pillar_roots:
    #  base:
    #    - /srv/pillar
    

    从master的配置文件中我们可以看出pillar的根目录在/srv/pillar下。在master上自定义pillar项目

    [root@salt-master ~]# mkdir /srv/pillar
    [root@salt-master pillar]# cat pillar_test.sls 
    pname: 
      - zhangsan
    [root@salt-master pillar]# cat top.sls 
    base:
      'salt-client':
        - pillar_test
    
    

    3.刷新pillar自定义项

    [root@salt-master ~]# salt 'salt-client' saltutil.refresh_pillar
    

    4.查看客户端是否生效

    [root@salt-master ~]# salt 'salt-client' pillar.get pname
    salt-client:
        - zhangsan
    或者
    [root@salt-master ~]# salt 'salt-client' pillar.item pname
    salt-client:
        ----------
        pname:
            - zhangsan
    
    
  • 相关阅读:
    std::sort运行出core(segment fault)
    C++编译报错:重复定义
    《改变世界的九大算法》读书笔记
    简单排序实现
    Django 常见错误总结
    python 进行机器学习
    python中matplotlib 的简单使用
    十四:生成器函数和迭代器函数
    十三:装饰器函数
    十二:重要的内置函数
  • 原文地址:https://www.cnblogs.com/pangbing/p/14321574.html
Copyright © 2011-2022 走看看