怎么可能得到以下运行:
{% if not exist('/tmp/dummy/') then %}
dummy:
file.touch:
- name: /tmp/dummy/tmp.txt
...
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我需要它来从ZIP文件安装软件.我想解开minions,但在那里我不想要任何许可证文件的遗留物,我只需要安装,左边.
我的团队正在尝试使用Sitecore可执行文件通过Salt自动安装Sitecore.我们更喜欢使用.exe而不是手动安装zip包,因为安装向导会通过修改注册表来将Sitecore注册为已安装的程序.从理论上讲,盐会让盐知道"状态"已经实现.
用/?运行可执行文件时?参数,显示以下选项列表:
/? or /help : this help screen
/i : install (default)
/x : uninstall
/q : force silent (no UI) mode
/qb : force basic UI mode
/nq : force full UI mode
/nosplash : do not display splash screen
/Log : enable logging
/LogFile [path] : specify log file
/ConfigFile [path] : specify configuration file
/ExtractCab : extract embedded components
/DisplayCab : display a list of embedded components
/DisplayConfig : display a list of configurations …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Saltstack自动创建用户.
我创建了一个支柱conf:
users:
homer:
fullname: Homer Simpson
uid: 1007
gid: 1007
groups:
- sudo
- adm
crypt: $6H7kNJefhBeY
pub_ssh_keys:
- ssh-rsa ...
Run Code Online (Sandbox Code Playgroud)
在我的州,我使用以下内容:
{% for username, details in pillar.get('users', {}).items() %}
{{ username }}:
group:
- present
- name: {{ username }}
- gid: {{ details.get('gid', '') }}
user:
- present
- fullname: {{ details.get('fullname','') }}
- name: {{ username }}
- shell: /bin/bash
- home: /home/{{ username }}
- uid: {{ details.get('uid', '') }}
- gid: {{ details.get('gid', '') …Run Code Online (Sandbox Code Playgroud) 在saltstack文档中说,添加:
{% set node_type = salt['grains.get']('node_type', '') %}
{% if node_type %}
'node_type:{{ self }}':
- match: grain
- {{ self }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
至
/srv/salt/top.sls
Run Code Online (Sandbox Code Playgroud)
将创造一个叫做的谷物 node_type
我将下面的代码添加到顶层文件中,我想知道为什么我node_type在我的小兵中看不到:
myHost ~ # service salt-master restart; service salt-minion restart;
myHost ~ # salt '*' grains.get "node*"
Run Code Online (Sandbox Code Playgroud)
最后一个命令什么都不返回 我认为这是正常的,因为我还没有定义node_type的/etc/salt/grains
这让我提出一个问题:有什么区别:
top.sls文件中声明node_type和
/etc/salt/grains)或minion文件(/etc/salt/minion)关于salt-master-> salt-minion所需的端口,Saltstack上的文档似乎不清楚(显然不需要)。这表明只需要从salt-minion-> salt-master打开端口。(请参阅:http : //docs.saltstack.com/en/latest/topics/tutorials/firewall.html)
但是,如果在以小仆为目标的盐主机上远程执行命令,则主机肯定需要能够将其推送到小兵中,因此需要允许网络开放。
因此,我的问题是是否需要在两个方向上都打开Saltstack端口(4505&4506),或者是否通过其他协议触发了远程命令?
[背景知识:我的团队希望盐堆设置可以在非常严格的网络中管理服务器环境,在该网络中,在安全概念中需要请求每个单独的网络路由。这不受我们公司的控制,我需要明确请求所有必需的路线以及各个方向的信息。]
我在使用Puppet一段时间后尝试使用SaltStack,但我无法理解他们使用"状态"这个词.
我的理解是,例如,灯开关有两种可能的状态 - 开或关.当我编写SLS配置时,我正在描述服务器应该处于什么状态.当我要求SaltStack配置服务器时,我发出命令salt '*' state.highstate.我知道服务器可以在highstate(如我的配置中所述)或不在.到目前为止都很好.
但是这个页面描述了其他州.据介绍lowstate,highstate与overstate(其中包括)的层.这是否意味着服务器通过几个州来到达州?或者所有州都作为图层同时维护?或者我可以在我的SLS中配置多个可能的状态并在它们之间切换SaltStack吗?或者他们只是SaltStack的层,名称中有"状态",我感到困惑?
我可能错过了一些显而易见的事情,如果有人能够朝着正确的方向推动我,我想很多文档都会让我清楚!
如果这个解释存在于某个地方,我花了3个月试图找到它,但失败了.我来自Puppet背景,但由于各种原因,我真的想尝试用Salt替换它.
我已经得到了一个基本设置,我可以编写自己的状态,看到它们没有任何问题.关于此的文档非常清楚.我被困在哪里试图实施社区盐配方.我可以使用它的基本设置包含公式,它们工作正常,但我无法弄清楚如何覆盖我的支柱数据的默认值.这似乎是Salt文档最薄弱的地方.
文档说明您应该检查pillar.example以了解如何配置公式.pillar.example清楚地给出了配置部分,但是更详细的文档或柱子.示例告诉您如何将其包含在您的支柱数据中.
在我的情况下,我正在尝试使用snmp-formula.我有一个基本的盐文件结构设置,您可以从我的文件根目录中看到:
file_roots:
base:
- /srv/salt/base
- /srv/formulas/snmp-formula
Run Code Online (Sandbox Code Playgroud)
在基地内我有两个支柱:
base/
top.sls
common.sls
Run Code Online (Sandbox Code Playgroud)
top.sls非常简单:
base:
'*':
- common
Run Code Online (Sandbox Code Playgroud)
common.sls具有所有常见配置:
include:
- snmp
- snmp.conf
- snmp.trap
- snmp.conftrap
tcpdump:
pkg.latest:
- name: tcpdump
telnet:
pkg.latest:
- name: telnet
htop:
pkg.latest:
- name: htop
snmp:
conf:
location: 'Office'
syscontact: 'Example.com Admin <admin@example.com>'
logconnects: false
# vacm com2sec's (map communities into security names)
com2sec:
- name: mynetwork
source: 192.168.0.13/31
community: public
# vacm group's (map security names …Run Code Online (Sandbox Code Playgroud) 在搜索 SaltStack 的功能时,通常会出现一个状态和一个模块(例如,当搜索“saltstack user”时,会得到salt.states.user和salt.modules.user)。
阅读文档,我的印象是状态以某种方式调用模块或模块中的函数,以实现设置状态。但我不是很清楚。因此有以下问题:
SaltStack 中的模块和状态有什么区别?
我正在使用jinja2模板来安装/升级包.
逻辑是为当前安装的版本设置变量,并将其与可用版本进行比较.它工作正常,但一旦我们传入10.x,比较退出工作.
是否可以转换变量,以便正确识别10.9.8是否大于9.8.7?
谢谢
current_version=['9.8.7']
{% if current_version < '10.9.8' %}
在尝试解析为 YAML 之前,有没有办法查看 Jinja 阶段的输出?
我试图调试一个 Salt 问题,在那里我收到了这个错误:
local:
Data failed to compile:
----------
Rendering SLS ':test.sls' failed: mapping values are not allowed in this context
Run Code Online (Sandbox Code Playgroud)
不是很有帮助:没有行号?什么是“映射值”?等等。
问题归结为这样的事情:
{%- for x in [1, 2] -%}
Test {{ x }}:
cmd.run:
- name: echo Test {{ x }}
{%- endfor -%}
Run Code Online (Sandbox Code Playgroud)
经验丰富的 Salt 人员会认识到我弄乱了空格,因此 Jinja 产生了以下输出:
Test 1:
cmd.run:
- name: echo Test 1 Test 2:
cmd.run:
- name: echo Test 2
Run Code Online (Sandbox Code Playgroud)
然而,在一组复杂的状态中发现没有关于问题发生在哪里的信息,甚至没有明确描述问题是什么,这令人沮丧。
在调试过程中,我了解到您可以使用 获取 YAML 树slsutil.renderer,如下所示: …
salt-stack ×10
jinja2 ×2
python ×2
ansible ×1
firewall ×1
installation ×1
sitecore ×1
zeromq ×1