标签: saltstack

salt-stack : 没有找到顶部文件或外部节点数据匹配

为了测试 salt-stack,我想将一个配置文件复制到另一个远程(我正在本地主机中测试 master 和 minion)

/etc/salt/minion :

master: 127.0.0.1
file_roots:
  base:
    - /srv/salt/base
Run Code Online (Sandbox Code Playgroud)

/etc/salt/master:

interface: 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

/srv/salt 树:

 # tree srv/
srv/
??? salt
?   ??? base
?       ??? env
?           ??? envpy.template
?           ??? init.sls
??? top.sls
Run Code Online (Sandbox Code Playgroud)

和模板文件:

# cat /srv/salt/base/env/envpy.template
This is a test !
Run Code Online (Sandbox Code Playgroud)

这是初始化文件:

#  cat /srv/salt/base/env/init.sls 

/home/myHome/env.py:
  file:
    - managed
    - source: salt://base/env/envpy.template
Run Code Online (Sandbox Code Playgroud)

最后是顶级文件:

# cat  /srv/salt/top.sls 
base:
  '*':
    - base.env
Run Code Online (Sandbox Code Playgroud)

运行盐highstate:

# salt '*' state.highstate 
myHost:
----------
          ID: states
    Function: no.None
      Result: False
     Comment: …
Run Code Online (Sandbox Code Playgroud)

python saltstack

5
推荐指数
1
解决办法
1万
查看次数

在提交之前验证 Salt 状态

我将我的 salt sls 文件存储在一个 git 存储库中,但我有一个长期存在的问题,即我无法验证我的 YAML 是否代表了一组可以应用的有效状态(我也很难验证我的 YAML -- 那是不过要容易得多)。理想情况下,我想要某种方式在提交之前在我的工作站上验证我的状态。如果做不到这一点,某种方式可以检查预接收挂钩,这样我至少可以阻止狡猾的代码访问服务器。

git yaml saltstack

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

Saltstack 遍历二级支柱数据

我可能遗漏了一些东西,或者这可能只是布局支柱数据的错误方式。

我想遍历第二级支柱数据。

支柱示例:

repo:
     Option1:
        version1:
            display_name: "abcde"
        version2:
            display_name: "fghij"
     Option2:
        version1:
            display_name: "klmn"`
Run Code Online (Sandbox Code Playgroud)

SL:

{% for version, versioninfo in salt['pillar.get']('repo', {}).iteritems() %}
{{ versioninfo[] }}{{ versioninfo[]['display_name'] }}
{% endfor %}`
Run Code Online (Sandbox Code Playgroud)

我想返回每个版本和显示名称,有效地忽略第一级支柱数据。显然上面的jinja不起作用,但是有没有办法做到这一点?

python saltstack

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

使用 salt 为非 root 用户生成 ssh 密钥

我需要为用户 helen 生成 ssh 密钥(公共/私有对)。该用户已经在我所有的盐奴中了。如何从我的 salt master 为该用户生成 ssh 密钥?

对于 root 用户,我使用此命令生成了密钥,效果很好:

salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /root/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)

我可以发出以下命令,为 helen 生成 ssh 密钥;但权限和所有权会不同;因此需要再次发出命令来更正权限和所有权:

salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)

salt 有没有办法以用户 helen 而不是 root 的身份运行此命令?

一般来说,salt 有没有办法以非 root 用户身份运行命令?

linux ssh-keys saltstack

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

如何使用 saltstack 为不同的 minion 管理不同的配置文件?

我有两个在 saltstack 下管理的 httpd 服务器的仆从。VirtualHost基于端口需要为它们单独配置。所以/etc/httpd/conf.d/httpd-vhost.conf是这样看的:

httpd:
  pkg.installed: []
  service.running:
    - require:
      - pkg: httpd
    - watch:
      - file: /etc/httpd/conf.d/httpd-vhosts.conf

/etc/httpd/conf.d/httpd-vhosts.conf:
  file.managed:
    - source: salt://webserver/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

问题是这两个 Minion 有自己的服务器名称,httpd-vhost.conf应该像ServerName www.example1.com和一样不同www.example2.com。Saltstackgrains模块只适用于 .sls 文件而不是托管文件。那么有什么建议可以让它发挥作用吗?

saltstack

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

Salt - Rejected 和 Denied 有什么区别?

所以我在我的基础设施中的服务器上运行了 salt master,那里有一些密钥,要么被接受,要么不被接受,或者……要么被拒绝,要么被拒绝。我的问题是:

被拒绝或被拒绝的密钥有什么区别?:

Denied Keys:
server1
...
Rejected Keys:
server2
Run Code Online (Sandbox Code Playgroud)

只是为了让您知道,我已经进行了一些搜索,但没有找到有关这些含义的任何信息。我不断提出与完全不同的东西有关的结果。

keys saltstack

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

Salt-Stack 将目录从 salt master 复制到 minion

背景:我一直致力于设置盐环境,并且达到了不仅要分发文件而且要分发目录的地步。我发现最明智的方法是将我想要复制的目录/srv/salt/path_to_dir放在主服务器上,然后使用cp.get_dir命令分发它。

我所做的:为了测试我创建的设置和命令,/srv/salt/tmp/foo并在其中放置了两个文件。然后当我salt minion_name cp.get_dir salt://tmp/foo /tmp/foo在主服务器上运行命令时,有一行输出正好读取minion_name:. 有点奇怪,除了minion 名称之外没有任何输出,甚至错误,但是好吧,我去检查minion 看看是否发生了任何事情。

在仆从还没有出现/tmp/,并且在没有新的内容/etc/salt//var/cache/salt/任。我登记了/var/log/salt/minion,但除了我一小时前试图找出为什么我不能使用file.copy递归设置为 true 来分发文件之外,什么也没有。

我的问题:有什么明显的我做错了吗?根据文档,我发现我所做的应该有效。似乎也没有任何错误输出。我应该尝试使用不同的命令或方法来通过 salt 分发包含来自 master 的内容的文件夹吗?

附加信息:master 和所有minions 都是Debian 系统。盐的已安装的版本是salt 2014.1.3 (Hydrogen)在主及salt-minion 0.17.5salt-minion 2015.5.3对爪牙我曾尝试这种方法。

saltstack

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

SaltStack:如何解决“file.recurse 不保留权限”?

如何解决递归目录管理不保留权限的问题

我想将(本地)中的所有文件复制/monitoring/files/etc/etc小黄人上。

copy_files_in_etc:
  file.recurse:
    - source:
      - salt://monitoring/files/etc
    - name: /etc
    - template: jinja
Run Code Online (Sandbox Code Playgroud)

上面的代码片段有效,但我缺少某些文件的可执行位。

例如 /etc/cron.daily 中的脚本应该是可执行的。

解决这个问题最简单的方法是什么?

我搜索一种方法使与此表达式匹配的所有文件都可执行:

/etc/cron.(daily|hourly|monthly|weekly/)
Run Code Online (Sandbox Code Playgroud)

chmod saltstack

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

我应该如何备份 SaltStack 的支柱数据?

将 salt 状态备份到 git repo 是有意义的,因为那里不应该有任何敏感数据。

但是支柱数据呢?我应该为此创建一个单独的 git 存储库,还是将其放入 S3 存储桶中,或者以某种方式加密数据?

saltstack

3
推荐指数
1
解决办法
784
查看次数

在 minions 上线后对其应用状态

想象一下,您想在一组 Minion 上应用一些状态,例如所有 ubuntu 客户端。到我们申请时,可能会显示一些 Minion 处于离线状态。

状态在消息总线中保留多长时间以推送到 Minion?你有什么策略来解决这个问题并在他们重新上线时改变他们的状态?有没有比 running 更好的方法来使 minion pull 状态salt-call state.highstate

saltstack

3
推荐指数
1
解决办法
2080
查看次数

标签 统计

saltstack ×10

python ×2

chmod ×1

git ×1

keys ×1

linux ×1

ssh-keys ×1

yaml ×1