Articles of saltstack

使用带有gitfs后端的saltenv时,select一个Salt顶层文件

背景 我有一个configuration了gitfs后端的Salt实例。 默认情况下,这将主分支指定为base环境。 所以,当我执行: salt <minion-id> state.apply top.sls文件是默认执行的。 情况 我想知道是否有一种方法来指定/执行此top.sls文件,同时还指定saltenv (select一个分支): salt <minion-id> state.apply saltenv=<branch> 目前,这返回: minion-id: ———– ID: states Function: no.None Result: False Comment: No Top file or external nodes data matches found. Changes: 我知道我可以在top.sls文件中定义多个环境,但是传递给saltenv值有些dynamic。 它将总是包含一个feature/值,但这是唯一不变的部分。 我试图给top.sls文件添加一个通配环境,但是这会导致编译错误。 我知道我可以有一个两步的过程,function分支合并到一个开发分支,然后合并到主,但我很乐意避免创build一个开发分支只是为了解决这个问题。

file.append的必备条件

是否有可能使盐需要附加一个特定的文件,而不是仅仅存在的文件? 看来我只能要求一个file状态。 源代码看起来像去掉了require属性中的任何方法名称。 在下面的例子中,我只想让foo服务运行,如果我的行被添加到/etc/security/limits.conf。 file.append: – name: /etc/security/limits.conf – text: – root hard nofile 65535 – root soft nofile 65535 foo: service.running: – enable: True – require: – file.append: /etc/security/limits.conf

只有在服务已经运行的情况下,如何使用SaltStack重新启动服务?

假设我有几个服务器上的服务,以集群方式(心跳)控制,禁用(启动时),因为我希望它只在主动节点上运行: haproxy: service.disabled: [] 我想能够更新其configuration文件: /etc/haproxy/haproxy.cfg: file.managed: – source: salt://haproxy.cfg – watch_in: – service: haproxy 通过指定这个文件被haproxy服务监视,如果这个文件被修改,它将触发服务重启。 这是我想要的,除了这个服务应该只运行在集群中的活动服务器。 所以我的问题是:我怎样才能实现我的目标,重新启动configuration修改服务,而不必在所有被动节点上启动它?

如何从MySQL的公式支柱访问数据?

我试图使用MySQL的公式,使用它的支柱来build立一个数据库和用户。 但是,我想在其他地方使用configuration的密码,我还没有想出如何做到这一点。 任何帮助赞赏。 以下是示例柱: https : //github.com/saltstack-formulas/mysql-formula/blob/master/pillar.example,并假设我试图从那里访问frank的密码。

Salt-Stack从salt master复制文件python API到特定的minion

我正在使用CentOS6.5。 我可以通过在主服务器上运行以下命令成功地将一个文件从主服务器复制到使用id = minionId的服务器上: salt minionId cp.get_file salt://fileInMaster.txt /home/johnDoe/fileNowInMinion.txt ##run on master 如果我必须使用python完成同样的事情,我该怎么做呢? 在这个链接之后,我发现所有的方法都是通过在脚本上运行脚本来将文件从主文件复制到副本文件。 我想在master上运行一个python脚本,它使用给定的id将一个文件从master复制到一个特定的minion

salt-manage bootstrap – 无法parsing主机名

我在主机名为HOSTNAME的单台机器上运行我的salt-minion和salt-stack。 当salt-minion的密钥被salt-master服务所接受时,它将localdomain添加到localdomain的主机名。 所以,看起来像这样, Accepted Keys: sk-box.localdomain 我预计, Accepted Keys: sk-box 当我尝试使用命令salt-run manage.bootstrap hosts='sk-box.localdomain'引导列出的名称时,它会引发错误, ssh: Could not resolve hostname : Name or service not known

显示一个盐奴隶的主服务器(S)

我开始玩Saltstack,我还没有find一个方法来显示任何运行时盐细菌的细节。 具体来说,我想要显示一个食盐目前正在使用的盐主服务器。 好像有几个地方可以指定salr主服务器的详细信息,包括/etc/salt/minion /etc/salt/minion.d/configuration文件,位于/etc/salt/minion.d/configuration文件和dynamic地(我承认,我不知道还真不明白)。 我没有看到任何东西在手册页显示这种信息。 这对于帮助解决和“探索”inheritance的安装很有用。

Saltstack:Master和Minion的不同版本

我有一个小问题。 我有一个有数十台服务器的架构,每个人都有不同的操作系统。 我的主人是在Ubuntu服务器14.04和它的版本是0.17.5 。 我的喽罗是不同的版本 ,包括0.17.5 ,例如,在Ubuntu 12.04精确的2015.5.0 。 当Master-Minion具有相同的版本ID时,所有的都被正确执行。 当它们不匹配时,我在调用state.highstate时收到以下消息: No Top file or external nodes data matches found 这个消息很奇怪,因为顶层文件位于正确的位置( /srv/salt/top.sls ),我用正确的语法设置了file_roots: base: – /srv/salt ),并且设置了“ base: '*' ”(使用正确的语法)在我的top file 。 你有什么想法来pipe理不同版本的Master-Minion,或者我怎样才能将我的Minion的旧版本升级到最新的版本? 非常感谢您的支持!

salt stack`os:…`模式不匹配top.sls

我正试图区分我的top.sls文件中的一个Ubuntu盒子和一个Arch盒子,在由vagrant 1.7.4使用salt 2015.8.1 (Beryllium)pipe理的Virtualbox 5.0.4虚拟机中, 这不起作用: base: 'os:Arch': – base.arch 这工作: base: {% if grains['os'] == 'Arch' %} '*': – base.arch {% endif %} 摘自salt-call grains.items : os: Arch os_family: Arch osarch: x86_64 oscodename: osfullname: Arch Linux osrelease: 有没有人有任何见解?

我怎样才能在一个柱子顶部文件循环所有的爪牙?

我想添加一些通用支柱数据的angular色,但也提供了一种方法来定制每台机器的主机名(minion id)。 在我的支柱/ top.sls文件中 base: '*': – pkgs/common-ubuntu-pkg – fail2ban/config 'runit:True': – runit/package 'is_virtual:True': – users/vmuser 'role:database': – match: grain – mysql/defaults 然后我想添加这样的东西: {% for host in pillar %} '{{host}}': include: – {{host}}/passwords {% endfor %} 哪个工作,但只打印出“主”。 我正在使用无盐的ssh,所以我相信这就是为什么名单中的奴才不在柱子里的原因。 我想要一个不同的方式来循环定义的小兵,但我似乎无法轻松地看到盐词典中的内容。 {% for key in salt %} '{{key}}': include: – foobar {% endfor %} 尝试使用类似上面的结果在一个KeyError中进行debugging