随着centos7的不断稳定和新的特性吸引,公司慢慢开始用centos6向centos7迁移。因为早起写了很多专用于centos6的sls最近抽时间把一部分地方进行了修改,例如centos6的MysqL到cnetos7默认变为了“mariadb”pkg.installd在centos7进行安装的时候就会失败,很多软件是源码安装启动脚本位置不同系统会不同。

为了解决这个不兼容的问题,我在这是使用pillar定义了变量通过不同系统版本选择不同的软件名或者脚本路径。当然你也可以使用grains来达到这种目的,但是这样会使你陷入无限的if...else里面,导致你以后越发的难以维护

下面是一个grains的sls使centos6~7通用的sls

Nginx-server:
file.managed:
{%ifgrains['osmajorrelease'][0]=='6'%}
-name:/etc/init.d/Nginx
-source:salt://web/files/Nginx-init
{%elifgrains['osmajorrelease'][0]=='7'%}
-name:/usr/lib/systemd/system/Nginx.service
-source:salt://web/files/Nginx.service
{%endif%}
-mode:755
-user:root
-group:root
service.enabled:
-name:Nginx
-enable:True
-require:
-file:Nginx-server
service.running:
-name:Nginx
-reload:True
-watch:
-file:/usr/local/Nginx/conf/Nginx.conf



下面直接粘贴我的pillar的sls文件,这里类似于建立一个系统通用性变量库,通过你自定义的条件使你的变量获取想要的内容

[root@salt-node1states]#catbase/pillar/pkg/packages.sls
pkg-common:
{%ifgrains['osmajorrelease']=='6'%}
MysqL_lib:MysqL-libs
MysqL_devel:MysqL-devel
MysqL:MysqL
zabbix_agent:zabbix20-agent
Nginx_init:Nginx-init
Nginx_init_path:/etc/init.d/Nginx
keepalived_init:keepalived.init
keepalived_init_path:/etc/init.d/keepalived
{%elifgrains['osmajorrelease']=='7'%}
MysqL_lib:mariadb-libs
MysqL_devel:mariadb-devel
MysqL:mariadb
zabbix_agent:zabbix22-agent
Nginx_init:Nginx-systemd
Nginx_init_path:/usr/lib/systemd/system/Nginx.service
keepalived_init:keepalived-systemd
keepalived_init_path:/usr/lib/systemd/system/keepalived.service
{%endif%}


下面通过pillar获取到你定义的变量,这样你就不用每个Nginx都写一堆if..else,简单清晰还容易维护,何乐不为。

Nginx-server:
file.managed:
-name:{{pillar['pkg-common']['Nginx_init_path']}}
-source:salt://Nginx/files/{{pillar['pkg-common']['Nginx_init']}}
-mode:755
-user:root
-group:root
service.enabled:
-name:Nginx
-enable:True
-require:
-file:Nginx-server


当然pillar的用法还有好多,例如你的一个服务的ip如果出现在很多的地方可以直接配置pillar里面,使用jinja模版直接调用,这样你只需要修改pillar的配置即可,这里就直说这些了,大家如果有疑问可以直接评论

SaltStack使用教程六:管理服务妙用pillar实现centos6和centos7通配的更多相关文章

  1. Vue项目打包并部署nginx服务器的详细步骤

    vue项目开发好之后需要部署到服务器上进行外网访问,下面这篇文章主要给大家介绍了关于Vue项目打包并部署nginx服务器的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  2. ubuntu中利用nginx部署vue项目的完整步骤

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行,下面这篇文章主要给大家介绍了关于ubuntu中利用nginx部署vue项目的相关资料,需要的朋友可以参考下

  3. 使用Node.js配合Nginx实现高负载网络

    这篇文章主要介绍了使用Node.js配合Nginx实现高负载网络,Node的异步加上Nginx的反向代理在性能上实在是给力!需要的朋友可以参考下

  4. CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)

    这篇文章主要介绍了CentOS 7.2 mini版本下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

  5. Symfony2在Nginx下的配置方法图文教程

    这篇文章主要介绍了Symfony2在Nginx下的配置方法,结合图文形式较为详细的分析了Symfony2在Nginx下的配置方法与具体操作步骤,需要的朋友可以参考下

  6. windows7配置Nginx+php+mysql的详细教程

    这篇文章主要介绍了windows7配置Nginx+php+mysql的详细教程 的相关资料,需要的朋友可以参考下

  7. 一文教会你用nginx+uwsgi部署自己的django项目

    uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议,下面这篇文章主要给大家介绍了关于用nginx+uwsgi部署自己的django项目的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  8. nginx+php-fpm配置文件的组织结构介绍

    nginx+php-fpm配置文件的组织结构介绍,需要的朋友可以参考下

  9. php + nginx项目中的权限详解

    这篇文章主要给大家介绍了关于php + nginx项目中权限的相关资料,文章介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

  10. nginx下安装php7+php5

    本文给大家分享的是在nginx下安装php7,并且实现与php5共存,非常的实用,有需要的小伙伴可以参考下

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部