1. 实战项目GitHub地址

该项目已经放在了GitHub上,地址如下:

https://github.com/zhanglianghhh/salt-example-lnmp

2. 主机规划

3. pillar的整体目录结构

 [root@salt150-master pillar]# pwd
/srv/pillar
[root@salt150-master pillar]# ll
total
drwxr-xr-x root root Mar : base
drwxr-xr-x root root Mar : prod
-rw-r--r-- root root Mar : top.sls
[root@salt150-master pillar]# tree
.
├── base
│ ├── database.sls
│ ├── monitor.sls
│ └── nosql.sls
├── prod
│ ├── high_available.sls
│ ├── program.sls
│ ├── proxy.sls
│ └── web.sls
└── top.sls directories, files

4. Pillar的top.sls 文件信息

 [root@salt150-master pillar]# cat top.sls
base:
'*':
# base 目录
- base.database
- base.nosql
- base.monitor
# prod 目录
- prod.web
- prod.program
- prod.proxy
- prod.high_available

5. base基础信息

 [root@salt150-master base]# pwd
/srv/pillar/base
[root@salt150-master base]# ll
total
-rw-r--r-- root root Mar : database.sls
-rw-r--r-- root root Mar : monitor.sls
-rw-r--r-- root root Mar : nosql.sls
[root@salt150-master base]# cat database.sls
# 数据库信息
# 包含配置文件信息
# 注意和 zabbix pillar 不同 的写法
{% if grains['host'] == 'salt03-web' %}
database_info:
database: mysql
role: master
server-id:
read_only: "OFF"
{% elif grains['host'] == 'salt04-web' %}
database_info:
database: mysql
role: slave
server-id:
read_only: "ON"
{% elif grains['host'] == 'salt05-web' %}
database_info:
database: mysql
role: slave
server-id:
read_only: "ON"
{% elif grains['host'] == 'salt150-master' %}
database_info:
database: mariadb
read_only: "OFF"
{% endif %} [root@salt150-master base]# cat nosql.sls
# nosql 信息
{% if grains['host'] == 'salt05-web' %}
nosql_info:
nosql: memcached
{% endif %} [root@salt150-master base]# cat monitor.sls
# 其中 salt150-maste 172.16.1.150 机器,不仅是 zabbix 客户端,还是服务端
# 只包含 zabbix 的属性 【服务端 客户端】
monitor_info:
monitor:
{% if grains['host'] == 'salt150-master' %}
zabbix_server: True
{% endif %}
zabbix_agent: True
zabbix_server_hostname: 'salt150-master'

6. prod业务组件信息

 [root@salt150-master prod]# pwd
/srv/pillar/prod
[root@salt150-master prod]# ll
total
-rw-r--r-- root root Mar : high_available.sls
-rw-r--r-- root root Mar : program.sls
-rw-r--r-- root root Mar : proxy.sls
-rw-r--r-- root root Mar : web.sls
[root@salt150-master prod]# cat web.sls
# web 服务器
{% if grains['host'] == 'salt03-web' or grains['host'] == 'salt04-web' or grains['host'] == 'salt05-web' %}
web_info:
web: nginx
{% endif %} [root@salt150-master prod]# cat program.sls
# 使用的编程语言
{% if grains['host'] == 'salt03-web' or grains['host'] == 'salt04-web' or grains['host'] == 'salt05-web' %}
program_info:
program: php
{% endif %} [root@salt150-master prod]# cat proxy.sls
# 负载均衡服务器
{% if grains['host'] == 'salt01-haproxy' or grains['host'] == 'salt02-haproxy' %}
proxy_info:
proxy: haproxy
{% endif %} [root@salt150-master prod]# cat high_available.sls
# 高可用keepalived 的 pillar 信息
{% if grains['host'] == 'salt01-haproxy' %}
high_available_info:
high_available: keepalived
high_state: MASTER
high_priority:
{% elif grains['host'] == 'salt02-haproxy' %}
high_available_info:
high_available: keepalived
high_state: BACKUP
high_priority:
{% endif %}

7. pillar信息生效

 [root@salt150-master pillar]# salt '*' saltutil.refresh_pillar
salt02-haproxy:
True
salt01-haproxy:
True
salt05-web:
True
salt03-web:
True
salt150-master:
True
salt04-web:
True

8. pillar信息查看

 [root@salt150-master pillar]# salt '*' pillar.items
salt05-web:
----------
database_info:
----------
database:
mysql
read_only:
ON
role:
slave
server-id: monitor_info:
----------
monitor:
----------
zabbix_agent:
True
zabbix_server_hostname:
salt150-master
nosql_info:
----------
nosql:
memcached
program_info:
----------
program:
php
web_info:
----------
web:
nginx
salt02-haproxy:
----------
high_available_info:
----------
high_available:
keepalived
high_priority: high_state:
BACKUP
monitor_info:
----------
monitor:
----------
zabbix_agent:
True
zabbix_server_hostname:
salt150-master
proxy_info:
----------
proxy:
haproxy
salt03-web:
----------
database_info:
----------
database:
mysql
read_only:
OFF
role:
master
server-id: monitor_info:
----------
monitor:
----------
zabbix_agent:
True
zabbix_server_hostname:
salt150-master
program_info:
----------
program:
php
web_info:
----------
web:
nginx
salt04-web:
----------
database_info:
----------
database:
mysql
read_only:
ON
role:
slave
server-id: monitor_info:
----------
monitor:
----------
zabbix_agent:
True
zabbix_server_hostname:
salt150-master
program_info:
----------
program:
php
web_info:
----------
web:
nginx
salt01-haproxy:
----------
high_available_info:
----------
high_available:
keepalived
high_priority: high_state:
MASTER
monitor_info:
----------
monitor:
----------
zabbix_agent:
True
zabbix_server_hostname:
salt150-master
proxy_info:
----------
proxy:
haproxy
salt150-master:
----------
database_info:
----------
database:
mariadb
read_only:
OFF
monitor_info:
----------
monitor:
----------
zabbix_agent:
True
zabbix_server:
True
zabbix_server_hostname:
salt150-master

9. 说明

 其他的就不单独写文章了,都是之前讲解过的。
该实战项目中有些细节补充,结合之前所学,即可达到整体实战目的。项目实战代码请参见开头的GitHub地址。
如果阅读后有些地方不清楚,可以结合之前的《Saltstack_使用指南_系列》进行参考。

Saltstack_实战指南02_各主机Pillar信息指定的更多相关文章

  1. Saltstack_实战指南01_系统规划

    1. 实战项目GitHub地址 之前<Saltstack_使用指南>详细讲解了saltstack的使用.那么从这节开始实战讲解,当然不会再像之前那样详细说明了.只是讲一些系统规划之类的信息 ...

  2. Saltstack_使用指南02_远程执行-验证

    1. 主机规划 2. Master与哪些minion通信 2.1. Master与哪些minion正常通信 [root@salt100 ~]# salt '*' test.ping salt100: ...

  3. Saltstack_使用指南05_数据系统-Pillar

    1. 主机规划 Pillar文档 https://docs.saltstack.com/en/latest/topics/pillar/index.html 注意事项 修改了master或者minio ...

  4. Saltstack_使用指南17_salt-ssh

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  5. Saltstack_使用指南12_配置管理-jinja模板

    1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@ ...

  6. Saltstack_使用指南16_syndic

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  7. 《Web安全攻防 渗透测试实战指南》 学习笔记 (四)

    Web安全攻防 渗透测试实战指南   学习笔记 (四) Nmap                                       Network  Mapper    是一款开放源代码的网 ...

  8. 大数据存储:MongoDB实战指南——常见问题解答

    锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...

  9. 放飞App:移动产品经理实战指南

    <放飞App:移动产品经理实战指南> 基本信息 原书名:App savvy:rurning ideas into iPhone and iPad Apps customers really ...

随机推荐

  1. CentOS 7上的进程管理

    一些杂乱的基础概念 程序是一种静态的文件,躺在磁盘上.而进程则是将程序运行起来放置于内存中.因此进程就是运行中的程序,是程序运行起来的一个实例.同一个程序可以运行为多个进程/实例. 进程之间有父子关系 ...

  2. 软帝学院:一万字的Java基础知识总结大全(实用)

    Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨 ...

  3. 防止sql注入的最好方式

    避免 SQL injection 攻击的传统方法之一是,把它作为一个输入合法性检查的问题来处理,只接受列在白名单中的字符,或者识别并避免那些列在黑名单中的恶意数据.白名单方法是一种非常有效方法,它可以 ...

  4. 避免网络爬虫IP被封的策略

    背景 这两天一直在搞Java网络爬虫作为Java课程设计,目标是爬取豆瓣电影top250的影评,之后可能还需要进行情感分析,当然这就不是爬虫的内容了.我的爬虫程序在一开始只是一个页面一个页面的爬取信息 ...

  5. nltk的安装和简单使用

    使用python进行自然语言处理,有一些第三方库供大家使用: ·NLTK(Python自然语言工具包)用于诸如标记化.词形还原.词干化.解析.POS标注等任务.该库具有几乎所有NLP任务的工具. ·S ...

  6. ELK日志分析系统(1)-基本环境搭建

    1. 概述 ELK = Elasticsearch + Logstash + Kibana Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大功能:是一套开放REST和J ...

  7. WebSessionStore: Could not obtain reference to HttpContext

    IBatis.net在多线程中报错“WebSessionStore: Could not obtain reference to HttpContext” 分析: 因为ibatis的ISqlMapSe ...

  8. Java_可变参数类型

    Java方法中的可变参数类型,也称为不定参数类型,是一个非常重要的概念 举栗子 public class TestVarArgus { public static void dealArray(int ...

  9. linux 磁盘分区和挂载看这一篇就够了

    Linux fdisk 和 mount 命令操作指南,linux磁盘管理.新增磁盘.挂载新硬盘(linux运维入门) 首先列出文件系统的整体磁盘空间使用情况.可以用来查看磁盘已被使用多少空间和还剩余多 ...

  10. FTP 代码含义

    vsftpd.config 部分参数含义anonymous_enable=NO #不允许匿名用户登陆 local_enable=YES #vsftpd所在系统的用户可以登录vsftpd write_e ...