简介

  pillar支持的数据存储方式有很多,mysql, mogo,json等。本篇介绍关于http存储方式。

  首先简要说明整个流程:salt-master会去一个指定http发送get请求获取一个json串,然后将json存储为pillar。获取json时是根据salt-minon的minion_id 去获取,也就说每个minion_id获取到的json是不同的,这样http页面就应该是一个动态页面。例如http:/test.com/pillar/minion_id;不同的minion_id获取不同的json串。

实现过程

(1)HTTP

  首先要建立HTTP服务,方法很多,这里的关键是提供一个动态url,salt通过不同的minion_id获取对应要存储的pillar值。

# 动态url获取内容,需要达到下面的效果, node1和node2是不同的minion_id
访问 http://192.168.1.12:8088/pillar/node1
获取: ' {"serverid":"1001","mysql_port":"3306"}'
访问 http://192.168.1.12:8088/pillar/node2
获取: ' {"serverid":"1002","mysql_port":"3306"}'

(2)salt 源码修改

  写了个高大上的名字,其实就是添加一个Python脚本。。。脚本目录是在salt安装在python的site-packages目录里。找不到就find / -name salt ;

# cd /usr/local/lib/python3.6/site-packages/salt/pillar/  # 这个目录下是pillar的各种ext_pillar方法
# vim ops.py # 创建一个python脚本,名字随意取,但一定要唯一,名字之后会用到
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author : wangyongcun import logging
import requests
import json log = logging.getLogger(__name__) def ext_pillar(minion_id, pillar, api):
pillar_url = api + "/" + minion_id # 不同minion将访问不同的url
log.warning("Querying SOPS system Pillar of %s" % (minion_id, )) # 自己加的一条日志,可忽略
try:
ret = requests.get(url=pillar_url) # 向url发送get请求,这个方法需要requests模块,若没有需要安装,在master安装就可以
r = ret.text # get获取到的结果
if r:
result = json.loads(r) # 将获取的json字符串转化为字典类型
else: # 如果获取的json为空
result = {}
except Exception as e: # 这个异常处理,一般情况都是无法连接url获取到内容,记录个日志
log.exception(
"Query SOPS system failed! Error: [%s] :%s" % (minion_id,e, )
)
return {}
return result # 返回字典格式的数据

(3)修改salt-master 配置文件

# vim /etc/salt/master
# 注意格式空格
ext_pillar:
- sops: # 这个是上面添加的py文件名称
api: http://192.168.1.12:8088/pillar/

(4)重启master

# 重启
systemctl stop salt-master
systemctl start salt-master
# 刷新pillar
salt '*' saltutil.refresh_pillar
# 查看一下
[root@aliyuntest ~]# salt '*' pillar.items
node1:
----------
mysql_port:
3306
serverid:
1001
node2:
----------
mysql_port:
3306
serverid:
1002

saltstack 动态pillar实现的更多相关文章

  1. 菜鸟玩云计算之廿一: saltstack之pillar

    菜鸟玩云计算之廿一: saltstack之pillar 参考: 点击打开链接 查看pillar数据: # salt '*' pillar.items pillar的默认根目录在:/srv/pillar ...

  2. SaltStack数据系统-Pillar

    上一篇:SaltStack数据系统-Grains 使用saltstack进行配置管理可以使用pillar定义主机假如是Openstack修改了一下nova的密码就需要修改很多配置文件 pillar很安 ...

  3. Saltstack系列5:Saltstack之pillar组件

    pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等. 在pillar中定义的数据与 ...

  4. SaltStack数据系统-Pillar详解

    1:存储位置 存储在master端,存放需要提供给minion的信息 每个minion只能访问master分配给自己的(应用场景) 2:在centos7 salt 2015.5.10 (Lithium ...

  5. python与saltstack动态传参变量名的研究

    python动态变量名 import sys createVar = locals() listTemp = range(1,10) for i in range(1, len(sys.argv)): ...

  6. 1、自动化运维之SaltStack实践

    自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...

  7. 自动化运维之SaltStack实践

    自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...

  8. 自动化运维之SaltStack初探

    1.1.基础环境 linux-node1(master服务端) 192.168.31.46 CentOS 6.6 X86_64 linux-node2(minion客户端) 192.168.31.47 ...

  9. 学习saltstack (四)

    一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...

随机推荐

  1. Python编程快速上手(七)Unsplash批量下载器

    首发于个人博客:http://rhinoc.top/post/python_7.html 程序描述 V1.0输入关键字搜索图片,模拟页面下拉获取更多图片,页面加载完成后获取图片链接并下载至指定文件夹. ...

  2. 图片放大镜——jQuery插件Cloud Zoom

    下载地址:cloud_zoom.rar 图片放大镜效果是一种不错的效果,多应用于电子商务.图片展示等网站,给用户带来更好的体验.实现这种效果的代码不少,今天要给大家介绍的是 Cloud Zoom,它是 ...

  3. 关于在线文本编辑器防XSS注入攻击问题

    跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击.例如在下面的界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如<script>alert('这是一 ...

  4. jmeditor与CKEditor4x整合的BUG

    整合页面的代码:   显示效果如下: 一直查不出来什么问题.根据网友的建议作了下面的修改.仍然不能正常显示公式: 不过上面网友的代码第2行有问题,没写完整.不知道替换成什么样的代码. 修改代码如下: ...

  5. VC 调试技术与异常(错误)处理 VC 调试技术与异常(错误)处理

    调试技术与异常(错误)处理 (1)   转载自 52PK游戏论坛 跟踪与中间过程输出 也许一个开发人员一半以上的时间都是在面对错误,所以好的调试/查错方法(工具)会减轻我们工作的负担,也可以让枯燥的D ...

  6. Metasploit学习指南—基础篇

    Metasploit是一款强大的渗透测试平台,其中包括了很多渗透测试利器,本文简单介绍一下Metasploit的配置和基础的使用方法,主要包括以下几个方面: Metasploit的核心 基础的配置 M ...

  7. Anti-Anti dylib(反 反-dylib钩子(Anti-tweak))

    版主提供了 anti dylib 的文章,http://bbs.chinapyg.com/thread-76158-1-1.html原理很简单,看下面源代码即可~  在Build Settings中找 ...

  8. log4j打印MyBatis的sql语句配置

    log4j.rootLogger=DEBUG,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender. ...

  9. [Elixir004]通过环境变量(Environment Variables)来管理config

    在elixir的config中我们有时会使用的到一些不想暴露出来的配置项,常用的作法是如Phoenix #config/prod.exs use Mix.Config ... # Finally im ...

  10. ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件

    本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中. 1.VS2010建 ...