saltstack (二) grains pillar state

Posted on Posted in NoOps

grains/pillar 提供监控信息的两个组建,收集主机的信息,可以指定一部分自定义的信息

grains

  1. 配置,定义自定义监控数据
  2. 在saltstack中按照指定的模版语法对grains提供的变量进行使用
salt '*' grains.items # 查看当前已定义的监控项
# 或
salt 'minion-1' grains.items
salt 'minion-1' grains.item os # 查看主机的系统,查看具体的一项

从客户端修改

修改监控项默认包含脚本的路径 /etc/salt/minion.d

vim /etc/salt/minion
default_include: minion.d/*.conf # 据对路径或相对路径

配置文件

规则

  1. 与python语法拥有一样的严格缩进规则
  2. : 代表键值对,- 代表数组,注意在两种符号之后必须有一个空格
  3. yaml格式要求缩进不可以是tab键,哪怕长度一样也不可以

举例

grains: 
    name: 
        - name001
        - name002
        - name003
        - name004
    age: 18

重启客户端生效

salt 'minion-1' grains.items # 查看刚刚设置的conf
salt 'minion-1' grains.item name
salt 'minion-1' grains.item age

从master修改

修改master配置文件

file_roots:                              
  base:                                        
    - /srv/salt

创建python脚本文件

install -d /srv/salt/_grains # 创建这个目录

vim /srv/salt/mytest.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
import os
def ourTest():
    grains = {}
    grains['say'] = "hello world"
    return grains # 返回的变量必须是grains,必须是字典
def OurTest1():
    grains = {}
    command = "free -m"
    with os.popen(command) as f:
        grains["result"] = f.read()
    return grains

把脚本同步到minion端

salt 'minion-1' saltutil.sync_all

在minion中查看

/var/cache/salt/minion/extmods/grains # 这个目录下,会有mytest.py和mytest.pyc文件

刷新模块

salt 'minion-1' sys.reload_modules

查看效果

salt 'minion-1' grains.item say
salt 'minion-1' grains.item result

pillars

侧重与任何变量,可以定义针对某个或某组的数据

  1. master 开启pillars,修改之后重启master
vim /etc/salt/master
pillar_opts: True
  1. 查看效果
salt 'minion-1' pillar.data
  1. 配置pillar
vim /etc/salt/master

pillar_roots:
  base:
    - /srv/pillar

install -d /srv/pillar # 创建目录
cd /srv/pillar
touch top.sls # 创建入口文件,指定pillar数据脚本受益的用户
touch data.sls # 定义数据

修改入口文件top.sls

vim top.sls

base: 
    '*': 
        - data

  • 第一行指定是个入口i文件
  • 第二行代表匹配的用户,*代表所有的用户
  • 第三行匹配用户可以看到的数据配置文件的名字,也就是data.sls
vim data.sls

name: name100
age: 80
gender: male
language: 
    - php
    - python
    - java

重启master,查看效果

/etc/init.d/salt-master restart
salt 'minion-1' pillar.data
salt 'minion-1' pillar.data name
  1. pillar 使用 grains 的变量
salt 'minion-1' grains.item os

vim data.sls

name: name100
age: 80
gender: male
language: 
    - php
    - python
    - java
system: {{ grains.os }} # 添加这个

salt 'minion-1' pillar.data system # 查看效果

# 扩展
name: name100
age: 80
gender: male
language: 
    - php
    - python
    - java
system: {{ grains.os }}
{% if grains.os == 'CentOS' %}
name2: linux
{% else %}
name2: otherOs
{% endif %}

salt 'minion-1' pillar.data name2 # 查看效果

state 组件

实现通过预先定制好的sls脚本进行minion端的状态管理,安装包/服务启动/文件管理等

state默认定义模板路径为 /srv/salt,但首先,先配置下pillar

# 配置pillar判断平台

vim /srv/pillar/top.sls

base: 
    '*': 
        - data
        - apache

mkdir /srv/pillar/apache
cd apache

vim init.sls

pkge: 
    {% if grains.os_family == 'CentOS' %}
        apache: httpd
    {% elif grains.os_family == 'Arch' %}
        apache: apache
    {% elif grains.os_family == 'Debian' %}
        apache: apache2
    {% endif %}

salt 'minion-1' pillar.data pkge # 查看效果

# 配置state
cd /srv
cd salt
touch top.sls
mkdir apache
cd apache
touch init.sls

# 配置top.sls
base: 
    '*': 
        - apache
# 配置init.sls,检测apache是否安装,如果没有就进行安装,如果安装就启动
apache: 
    pkg: 
        - installed
        - name: {{ pillar.pkge.apache }}
    service.running: 
        - name: {{ pillar.pkge.apache }}
        - require: 
            - pkg: {{ pillar.pkge.apache }}

salt 'minion-1' state.highstate # 执行效果
» 转载请注明来源:若我若鱼 » saltstack (二) grains pillar state

Leave a Reply

Your email address will not be published. Required fields are marked *

1 × two =