zoukankan      html  css  js  c++  java
  • 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


      

     

  • 相关阅读:
    rails中输出excel
    Rails IDE 有很多选择,但是具体到ubuntu 64bit 选择的余地就不多了,这里选择Aptana Studio 3 Beta
    linux中查看系统资源占用情况的命令
    GIT GUI使用
    linux下的c 环境配置vim
    oracle11 忘记密码
    Aptana_Studio 介绍和应用
    linux root命令忘记以及挂载U盘
    程序员创业生死一线 最后归宿在哪里?
    如何使用Log4j? .
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/5985868.html
Copyright © 2011-2022 走看看