我正在为安装SaltStack公式编写一个AWS应用发现服务。
安装脚本需要某些OS版本--我如何在公式中说明这一点?
map.jinja在redis公式中执行以下操作--这是正确的方法吗?
{% 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'), 操作系统要求:
发布于 2017-01-07 02:30:25
当您在不同的OSes上有不同的值时,需要映射,请查看文档,map.jinja部件中的以下示例--例如,您可以使用以下示例:
{% 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',
},
}) %}上面的代码将使用server、client、service等的值,根据它们将在备注上运行的OS,i删除了下面的merge=salt['pillar.get']('mysql:lookup')
另一个例子是,当您需要在名为apache2的Ubuntu和名为httpd的Centos上启动apache服务时,您需要一个查找表来处理不同的路径和服务名称。
我以前没有机会在一个随机操作系统上尝试一个公式,而不是在OSes中定义的map.jinja,但我认为它会被打破。
为了防止公式在不需要的操作系统上运行,您必须将代码封装在if statement之间,例如,您的要求之一是CentOS 6或CentOS 7,那么CentOS 5呢?您可以执行以下操作:
# This will be matched with CentOS/Redhat 6 or higher
{% if grains.os_family == 'RedHat' and grains.osmajorrelease >= '6' %}
# do something
{% endif %}您可以使用elif添加更多条件,查看更多关于在州中使用金甲的信息,并且不要忘记检查您的仆从的粒度,以便以正确的方式添加条件,使其按预期的方式工作。
https://stackoverflow.com/questions/41479482
复制相似问题