标签: salt-stack

根据文件/目录的存在来定义状态

怎么可能得到以下运行:

{% if not exist('/tmp/dummy/') then %}
dummy:
  file.touch:
    - name: /tmp/dummy/tmp.txt

...
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我需要它来从ZI​​P文件安装软件.我想解开minions,但在那里我不想要任何许可证文件的遗留物,我只需要安装,左边.

salt-stack

4
推荐指数
2
解决办法
2463
查看次数

如何执行Sitecore的无人参与安装?

我的团队正在尝试使用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)

installation sitecore salt-stack sitecore-instance-manager

4
推荐指数
1
解决办法
892
查看次数

Saltstack创建用户:未设置密码

我正在尝试使用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)

salt-stack

4
推荐指数
1
解决办法
5740
查看次数

盐堆:向minion或top file添加谷物

在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

  • 将它简单地添加到grain file(/etc/salt/grains)或minion文件(/etc/salt/minion)

python jinja2 salt-stack

4
推荐指数
1
解决办法
5115
查看次数

防火墙需要哪些开放端口才能允许盐堆远程执行?

关于salt-master-> salt-minion所需的端口,Saltstack上的文档似乎不清楚(显然不需要)。这表明只需要从salt-minion-> salt-master打开端口。(请参阅:http : //docs.saltstack.com/en/latest/topics/tutorials/firewall.html

但是,如果在以小仆为目标的盐主机上远程执行命令,则主机肯定需要能够将其推送到小兵中,因此需要允许网络开放。

因此,我的问题是是否需要在两个方向上都打开Saltstack端口(4505&4506),或者是否通过其他协议触发了远程命令?

[背景知识:我的团队希望盐堆设置可以在非常严格的网络中管理服务器环境,在该网络中,在安全概念中需要请求每个单独的网络路由。这不受我们公司的控制,我需要明确请求所有必需的路线以及各个方向的信息。]

firewall network-protocols zeromq salt-stack

4
推荐指数
1
解决办法
3938
查看次数

使用SaltStack时"状态"是什么?

我在使用Puppet一段时间后尝试使用SaltStack,但我无法理解他们使用"状态"这个词.

我的理解是,例如,灯开关有两种可能的状态 - 开或关.当我编写SLS配置时,我正在描述服务器应该处于什么状态.当我要求SaltStack配置服务器时,我发出命令salt '*' state.highstate.我知道服务器可以在highstate(如我的配置中所述)或不在.到目前为止都很好.

但是这个页面描述了其他州.据介绍lowstate,highstateoverstate(其中包括)的.这是否意味着服务器通过几个州来到达州?或者所有州都作为图层同时维护?或者我可以在我的SLS中配置多个可能的状态并在它们之间切换SaltStack吗?或者他们只是SaltStack的层,名称中有"状态",我感到困惑?

我可能错过了一些显而易见的事情,如果有人能够朝着正确的方向推动我,我想很多文档都会让我清楚!

salt-stack

4
推荐指数
2
解决办法
3390
查看次数

如何从SaltStack公式实现'pillar.example'?

如果这个解释存在于某个地方,我花了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)

salt-stack

4
推荐指数
1
解决办法
1292
查看次数

SaltStack 模块与状态

在搜索 SaltStack 的功能时,通常会出现一个状态和一个模块(例如,当搜索“saltstack user”时,会得到salt.states.usersalt.modules.user)。

阅读文档,我的印象是状态以某种方式调用模块或模块中的函数,以实现设置状态。但我不是很清楚。因此有以下问题:

SaltStack 中的模块和状态有什么区别?

python salt-stack

4
推荐指数
1
解决办法
2431
查看次数

使用jinja2比较版本号

我正在使用jinja2模板来安装/升级包.

逻辑是为当前安装的版本设置变量,并将其与可用版本进行比较.它工作正常,但一旦我们传入10.x,比较退出工作.

是否可以转换变量,以便正确识别10.9.8是否大于9.8.7?

谢谢

current_version=['9.8.7']

{% if current_version < '10.9.8' %}

jinja2 salt-stack ansible

4
推荐指数
1
解决办法
3540
查看次数

Salt State Rendering:我能看到Jinja阶段的输出吗?

题:

在尝试解析为 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

4
推荐指数
1
解决办法
1232
查看次数