首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许盐堆栈公式仅在某些操作系统版本上运行?

如何允许盐堆栈公式仅在某些操作系统版本上运行?
EN

Stack Overflow用户
提问于 2017-01-05 07:31:02
回答 1查看 1.1K关注 0票数 0

我正在为安装SaltStack公式编写一个AWS应用发现服务

安装脚本需要某些OS版本--我如何在公式中说明这一点?

map.jinja在redis公式中执行以下操作--这是正确的方法吗?

代码语言:javascript
复制
{% set os_map = salt['grains.filter_by']({
    'Debian': {
        'pkg_name': 'redis-server',
        'svc_name': 'redis-server',
        'cfg_name': '/etc/redis/redis.conf',
        'cfg_version': salt['grains.filter_by']({
            'wheezy': '2.4',
            'jessie': '2.8',
            'default': '2.8'
}, grain='oscodename'), 

操作系统要求:

  • Ubuntu 14
  • Amazon 2012.03或2015.03
  • Centos 6或7
  • Redhat 6或7
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-07 02:30:25

当您在不同的OSes上有不同的值时,需要映射,请查看文档,map.jinja部件中的以下示例--例如,您可以使用以下示例:

代码语言:javascript
复制
{% set mysql = salt['grains.filter_by']({
    'Debian': {
        'server': 'mysql-server',
        'client': 'mysql-client',
        'service': 'mysql',
        'config': '/etc/mysql/my.cnf',
        'python': 'python-mysqldb',
    },
    'RedHat': {
        'server': 'mysql-server',
        'client': 'mysql',
        'service': 'mysqld',
        'config': '/etc/my.cnf',
        'python': 'MySQL-python',
    },
    'Gentoo': {
        'server': 'dev-db/mysql',
        'client': 'dev-db/mysql',
        'service': 'mysql',
        'config': '/etc/mysql/my.cnf',
        'python': 'dev-python/mysql-python',
    },
}) %}

上面的代码将使用serverclientservice等的值,根据它们将在备注上运行的OS,i删除了下面的merge=salt['pillar.get']('mysql:lookup')

另一个例子是,当您需要在名为apache2的Ubuntu和名为httpd的Centos上启动apache服务时,您需要一个查找表来处理不同的路径和服务名称。

我以前没有机会在一个随机操作系统上尝试一个公式,而不是在OSes中定义的map.jinja,但我认为它会被打破。

为了防止公式在不需要的操作系统上运行,您必须将代码封装在if statement之间,例如,您的要求之一是CentOS 6或CentOS 7,那么CentOS 5呢?您可以执行以下操作:

代码语言:javascript
复制
# This will be matched with CentOS/Redhat 6 or higher
{% if grains.os_family == 'RedHat' and grains.osmajorrelease >= '6' %}
# do something
{% endif %}

您可以使用elif添加更多条件,查看更多关于在州中使用金甲的信息,并且不要忘记检查您的仆从的粒度,以便以正确的方式添加条件,使其按预期的方式工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41479482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档