• Saltstack数据系统Grains和Pillar(三)


    • Saltstack数据系统

    分为Grains和Pillar

    一、Grains

    静态数据,当Minion启动的时候收集的MInion本地的相关信息。(包含操作系统版本、内核版本、CPU、内存、硬盘、设备型号等)

    备注:不重启minion,这些信息数据是不会改变的。

    1)信息管理,包括资产管理;

    例:

    salt 'linux-node1*' grains.ls  # 列出ID为linux-node1的主机,grains的所有key
    salt 'linux-node1*' grains.items  # 列出主机的详细信息,可用于资产管理
    salt '*' grains.item os  # 列出所有主机的系统版本
    salt '*' grains.item fqdn_ip4  # 列出所有主机的IP地址

    2)用于目标选择;(查询具体id的主机,查询系统版本为centos的主机 等场景)

    例:

    salt -G 'os:Centos' test.ping  # 所有主机系统为centos版本ping测试
    salt -G 'os:Centos' cmd.run 'echo 123'  # 所有主机系统为centos版本执行命令'echo 123' 

    3)配置管理中使用

    自定义grains的item

    方式一: 修改配置文件 vim /etc/salt/minion

    重启 systemctl restart salt-minion

    通过自定义的item,可以实现重启所有角色为apache的主机

    salt '*' grains.item roles  # 获取所有主机的roles
    salt -G 'roles:apache' cmd.run 'systemctl restart httpd'  # 所有主机roles为apache的执行命令systemctl restart httpd
    

    方式二:(生产环境使用) 

    修改配置文件 vim /etc/salt/grains,写法

    cloud: openstack
    

    重启 systemctl restart salt-minion

    salt '*' grains.item cloud  # 获取所有主机的cloud
    

    修改/etc/salt/grains不重启服务的方法,刷新命令如下(备注:方式一和方式二修改配置文件,通过此命令都可以不用重启服务)

    salt '*' saltutil.sync_grains
    

    grains在top FILE中的使用案例

    vim /srv/salt/top.sls

    base:
      'linux-node1.example.com':
        - web.apache
      'roles:apache':
        - match: grain
        - web.apach

    grains脚本目录,必须是base下创建_grains目录(如:/srv/salt/_grains)

    创建一个python脚本在/srv/salt/_grains目录下

    脚本名:my_grains.py

    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    
    def my_grains():
    	# 初始化grains字典
    	grains = {}
    	# 设置字典中的key-value
    	grains['iaas'] = 'openstack'
    	grains['edu'] = 'shhnwangjian'
    	# 返回字典
    	return grains
    

    通过master同步脚本文件至每台minion

    salt '*' saltutil.sync_grains
    

    文件放在minion主机的/var/cache/salt/minion/extmods/grains目录下

    salt '*' grains.item edu  # 获取所有主机的edu

    grains优先级(item名称相同的情况下): 1. 系统自带 2. grains文件写到 3. minion配置文件写的 4. 自己写的脚本

    二、Pillar

    动态数据,给特定的minion指定特定的数据。只有指定的minion自己能看到自己的数据。

    salt '*' pillar.items
    

    开启系统自带,修改配置文件

    vim /etc/salt/master
    

    重启systemctl restart salt-master

    执行salt '*' pillar.items 可以看到系统自带的item

    piller存在文件路径设置

    mkdir /srv/pillar

    重启systemctl restart salt-master

    实现pillar流程

    1)创建一个piller文件,python jinja2写法

    mkdir /srv/pillar/web
    cd /srv/pillar/web
    vim apache.sls
    
    {% if grains['os'] == 'CentOS' %}
    apache: httpd
    {% elif grains['os'] == 'Debian' %}
    apache: apache2
    {% endif %}
    

    2)创建TOP FILE文件

    vim /srv/pillar/top.sls
    
    base:
      'linux-node2.example.com':
        - web.apache
    
    salt '*' saltutil.refresh_pillar  # 刷新
    salt '*' pillar.items apache
    

    目标选择

    salt -I 'apache:httpd' test.ping
    

    三、Grains VS Pillar


      

     

  • 相关阅读:
    ReportingService 通过RowNumber函数获取行号和生成隔行变色样式
    C#中Attribute的继承
    在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数,以及如何根据URL解析出匹配到MVC路由的Controller和Action
    _kbhit() for linux
    pthread_create用法(转)
    XACT Q&A (转)
    libcurl使用心得-包括下载文件不存在处理相关(转)
    2013总结-2014展望
    curl常用设置-涉及超时相关
    一行代码让App运行时iPhone不会进入锁屏待机状态
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/5985868.html
Copyright © 2020-2023  润新知