死磕salt系列-salt grains pillar 配置
grains 和 pillar 对比:
- Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新。
- Pillar: 处理敏感数据, 处理差异性的文件。
Grains数据系统
salt '*' grains.items ###列出服务器的详细参数
只查看OS的信息:
shell> salt 'linux-node2' grains.item os
linux-node2:
----------
os:
CentOS
shell> salt 'linux-node2' grains.get os
linux-node2:
CentOS
```
```shell
shell> salt 'linux-node2' grains.get ip_interfaces:eth0
linux-node2:
- 192.168.56.12
- fe80::250:56ff:fe30:8f96
列出所有信息的名称:
shell> salt '*' grains.ls
minion.saltstack.com:
- SSDs
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- domain
- fqdn
- fqdn_ip4
- fqdn_ip6
省略部分内容。。。。。。。。
在服务端测试:-G 表示匹配grains :
shell> salt -G 'env:prod' test.ping
minion.saltstack.com:
True
shell> salt -G 'os:CentOS' cmd.run 'w'
linux-node2:
03:35:48 up 9:50, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
niu pts/0 10.0.2.1 02:02 1:10m 0.00s 0.00s -bash
niu pts/1 10.0.2.1 02:14 1:21m 0.00s 0.00s -bash
在客户端自定义grains:
shell> vim /etc/salt/minion
grains:
roles: nginx
env: prod
使用命令行设置minion端的grains。
## 给logstash4服务器设置一个elastic_url的grains值
salt 'linux-node2' grains.setval elastic_url 'http://192.168.56.12:9200'
## 查看elastic_url的值
salt 'linux-node2' grains.item elastic_url
## 重新给elastic_url赋值
salt 'linux-node2' grains.setval elastic_url 'http://192.168.56.12:9200'
## 查看新赋值是否生效
salt 'linux-node2' grains.item elastic_url
设置成功后,minion会在 /etc/minion/grains 增加一行配置文件
vim /etc/salt/grains
elastic_url: http://192.168.56.12:9200
在top.sls中调用grains的方法:
[root@linux-node1 salt]# vim top.sls
base:
'web:nginx':
- match: grain
- apache
在服务器端测试:
shell> salt -G 'cloud:openstack' test.ping
linux-node2:
True
在服务端输入如下命令可以刷新:(客户端更改后不用重启)
shell> salt '*' saltutil.sync_grains
在配置文件中调用
nginx:
pkg:
- installed
file.managed:
- source: salt://nginx/nginx.conf
- name: /etc/nginx/nginx.conf
- user: root
- group: root
- mode: 644
- template: jinja
service.running:
- enable: True
- reload: True
- watch:
- file: /etc/nginx/nginx.conf
- pkg: nginx
grains优先级:/etc/salt/minion.d/grains.conf (或/etc/salt/minion) > /etc/salt/grains配置中的优先级。
grains.filter_by 用法
salt.modules.grains.filter_by(lookup_dict, grain='os_family', merge=None, default='default', base=None)
lookup_dict-- 自定义列表值的字典。
grain-- 我们要从客户端grains到那个key来区分环境,这就要说明下,默认值:os_family。
merge-- 对lookup_dict
扩展新的字典。
default-- 默认值,默认选择哪个key。
base-- 选择lookup_dict合并在这最后合并字典合并。这允许每个案件的共同的价值观被收集在基地和粮食选择字典和词典被合并。默认设置。
Pillar 数据系统
pillar 常用命令列表
salt '*' saltutil.refresh_pillar
: 刷新目标用户的pillar信息。salt '*' pillar.items
: 查看目标用户的pillar值。
第一步: 启动pillar功能
vim /etc/salt/master
pillar_opts: True
##piller 默认参数的开启。
第二步:在master文件中配置pillar
文件存放的位置
vim /etc/salt/master
pillar_roots:
base:
- /srv/salt/pillar
第三步:开始编写pillar文件
shell> mkdir /srv/salt/pillar
shell> vim /srv/salt/pillar/top.sls
base:
'*':
- init.rsyslog
shell> mkdir init
shell> vim init/rsyslog.sls
pkgs:
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
刷新一下配置:
[root@centos6 init]# salt '*' saltutil.refresh_pillar
linux-node2:
True
[root@linux-node1 pillar]# salt '*' pillar.items
第四步 使用pillar
- 使用索引调用:
pillar['pkgs']['apache']
- 使用get方法调用:
pillar.get('users', {})
索引的方式:
/srv/salt/apache/init.sls:
syslog:
pkg.installed:
- name: {{ pillar['pkgs']['apache'] }}
get的方式, 可以在state file中设置默认值,
/srv/salt/apache/init.sls:
apache:
pkg.installed:
- name: {{ salt['pillar.get']('pkgs:apache', 'httpd') }}
使用grains pillar 动态生成Nginx配置文件
user nginx;
worker_processes {{ grains['num_cpus'] }};
{% if grains['num_cpus'] == 2 %}
worker_cpu_affinity 01 10;
{% elif grains['num_cpus'] == 4 %}
worker_cpu_affinity 1000 0100 0010 0001;
{% elif grains['num_cpus'] >= 8 %}
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
{% else %}
worker_cpu_affinity 1000 0100 0010 0001;
{% endif %}
worker_rlimit_nofile {{ grains['max_open_file'] }};
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections {{ grains['max_open_file'] }};
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
server_name _;
access_log logs/host.access.log main;
location / {
root {{ pillar['nginx']['root'] }};
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
死磕salt系列-salt grains pillar 配置的更多相关文章
- 死磕nginx系列--nginx 限流配置
限流算法 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中: 令牌桶放满时,多余的令牌被丢弃: 请求要消耗等比例的令牌才能被处理: 令牌不够时,请求被缓存. 漏桶算法 算法思想是: 水( ...
- 死磕nginx系列--nginx 目录
死磕nginx系列--nginx入门 死磕nginx系列--nginx配置文件 死磕nginx系统-nginx日志配置 死磕nginx系列--nginx服务器做web服务器 死磕nginx系列--使用 ...
- 死磕nginx系列
死磕nginx系列 死磕nginx系列--nginx入门 死磕nginx系列--nginx配置文件 死磕nginx系统--nginx日志配置 死磕nginx系列--nginx服务器做web服务器 死磕 ...
- 死磕salt系列-salt文章目录汇总
死磕salt系列-salt入门 死磕salt系列-salt配置文件 死磕salt系列-salt grains pillar 配置 死磕salt系列-salt 常用modules 死磕salt系列-sa ...
- 一生挚友redo log、binlog《死磕MySQL系列 二》
系列文章 原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 一生挚友redo log.binlog<死磕MySQL系列 二> 前言 咔咔闲谈 上期根据 ...
- 闯祸了,生成环境执行了DDL操作《死磕MySQL系列 十四》
由于业务随着时间不停的改变,起初的表结构设计已经满足不了如今的需求,这时你是不是想那就加字段呗!加字段也是个艺术活,接下来由本文的主人咔咔给你吹. 试想一下这个场景 事务A在执行一个非常大的查询 事务 ...
- MySQL强人“锁”难《死磕MySQL系列 三》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 前言 最近数据库 ...
- S 锁与 X 锁的爱恨情仇《死磕MySQL系列 四》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强 ...
- 如何选择普通索引和唯一索引《死磕MySQL系列 五》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强 ...
- 五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》
系列文章 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强人"锁"难<死磕MySQL系列 三> 四.S 锁与 X 锁的 ...
随机推荐
- SQL Serever学习6——数据表
数据表 表的构成 数据库中的基本表由记录(行)和字段(列)构成,SQLServer2008每个表可以有1024个列,每个列可以有8060字节(不包括iamge,ntext,text类型). 记录(Re ...
- nvm安装最新稳定版node
安装当前最新的稳定版. nvm install stable
- Java开发相关官方存档下载地址
前言 集中收藏Java开发中需要用到的常用下载地址 jdk Java SE 最新下载 | Oracle 技术网 : http://www.oracle.com/technetwork/cn/java/ ...
- GIT 基础-基础命令
环境 centos7 1.安装 #yum install git 2.创建本地仓库 ( 这里用 /www/git) 这里里有个隐藏的文件夹 ```.git``` 为git仓库的配置文件夹, 不可随意修 ...
- 微信小程序二维码识别
目前市场上二维码识别的软件或者网站越来越多,可是真正方便,无广告的却少之很少. 于是,自己突发奇想做了一个微信二维码识别的小程序. 包含功能: 1.识别二维码 ①普通二维码 ②条形码 ③只是复制解析出 ...
- Java内存区域与虚拟机类加载机制
一.Java运行时数据区域 1.程序计数器 “线程私有”的内存,是一个较小的内存空间,它可以看做当前线程所执行的字节码的行号指示器.Java虚拟机规范中唯一一个没有OutOfMemoryError情况 ...
- javaweb项目中绝对路径的写法理解
Tomcat的默认访问路径为http://localhost:8080,后需添加项目路径. 请求转发,是转发到本项目中的其他文件,所以在默认访问路径中添加了本项目的项目路径,故可以省略项目名称: re ...
- Cookie介绍
1.Http协议与Cookie Cookie(小量信息)是HTTP协议指定的!先由服务器保存Cookie到浏览器,而下次浏览器请求服务器时把上一次请求得到Cookie再归还给服务器 由服务器创建保存到 ...
- Dubbo(二) 一次惨痛的流血事故
时间定位到2018年11月某某一天,我正在看看Spring源码的文档,趁着没啥事,忽然想起Dubbo是基于Schema扩展的,所以就翻了下Dubbo的源码. 然后的然后,有活要干了,写完代码后,启动工 ...
- BZOJ2987:Earthquake(类欧几里德算法)
Sol 设 \(n=\lfloor\frac{c}{a}\rfloor\) 问题转化为求 \[\sum_{i=0}^{n}\lfloor\frac{c-ax}{b}\rfloor+1=\sum_{i= ...