标签: saltstack

一旦下载了先决条件文件,您如何执行 cmd.script ?

我有一个非常简单的用例,我正在尝试开始:

我需要从 master 下载并安装一些 tar.gz 源包,然后运行一个脚本来编译和安装它们。

我意识到这可能是一个基本问题,但任何指针将不胜感激。

/usr/local/src/source1.tar.gz:
  file.managed:
    - source: salt://sources/source1.tar.gz
    - user: root
    - group: root
    - mode: 644

/usr/local/src/source2.tar.gz:
  file.managed:
    - source: salt://sources/source2.tar.gz
    - user: root
    - group: root
    - mode: 644

/usr/local/src/source3.tar.gz:
  file.managed:
    - source: salt://sources/source3.tar.gz
    - user: root
    - group: root
    - mode: 644

//I need something like this, but am not sure how to do it
compile_and_install:
  - require: /usr/local/src/source1.tar.gz
  - require: /usr/local/src/source2.tar.gz
  - require: /usr/local/src/source3.tar.gz
  cmd.script:
    - source: salt://scripts/compile_and_install.sh
    - user: root
    - …
Run Code Online (Sandbox Code Playgroud)

saltstack

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

我应该将部署设置保存在单独的存储库中吗?

我正在学习 Salt Stack 以将我的 Python 应用程序部署到 AWS 上的各个生产阶段。现在我在一个大存储库中拥有我所有的源代码和盐状态。

将 minion 状态文件保存在我的源中是否有任何实际或安全考虑?或者我应该把它们分开,为什么?

如果我确实将我的状态文件移动到一个单独的 salt-states 存储库中,我应该在哪里保存我的masterminion配置文件,或者它们不属于版本控制?

deployment version-control saltstack

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

重装盐粒

我想在state.highstate运行期间从外部源下载谷物文件。该文件通常不应更改 - 我仅将其主要用于初始配置。

所以看起来我只想要一个file.managed状态,将正确的内容放入_grains(我使用独立客户端)然后调用saltutil.sync_grains. 但是我如何调用一个函数呢?这将是一个已watch配置的状态,但我没有看到可以帮助我做到这一点的状态。

automation saltstack

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

如何使用盐堆从柱子中创建盐?

让我们以我今天所拥有的为例:https : //gist.github.com/Natim/6548009

我使用支柱来创建一个数据库和一个用户。它在具有其中一个角色的服务器上运行良好,但如果我需要在同一台服务器上使用这两个角色,则只考虑最后一个支柱。

如何创建我的支柱和盐,以便为每个角色创建盐?

我可以做这样的事情:

{% for db in pillar['dbs'] %}
postgresql_db_{{ db['postgresql_db_name'] }}:
    postgres_database.present:
        - name: {{ db['postgresql_db_name'] }}
        - owner: {{ db['postgresql_db_user'] }}
        - encoding: UTF8
        - lc_ctype: en_US.UTF8
        - lc_collate: en_US.UTF8
        - template: template0
        - runas: postgres
        - require:
            - service: postgresql
            - postgres_user: postgresql_user_{{ db['postgresql_db_user'] }}

postgresql_user_{{ db['postgresql_db_user'] }}:
    postgres_user.present:
        - name: {{ db['postgresql_db_user'] }}
        - password: {{ db['postgresql_db_password'] }}
        - require:
            - service: postgresql
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是如何pillar['dbs']用两个文件填充呢?

谢谢

saltstack

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

使用 SaltStack 向文件添加单行

我想将以下行添加到我环境中的所有 /etc/sudoers 文件中:

# Administrators LDAP Group
%Administrators   ALL=(ALL)       ALL
Run Code Online (Sandbox Code Playgroud)

但是,每台服务器都有不同的 /etc/sudoers 文件,从一个位置获取所有这些文件是不切实际的。

Salt 有没有办法确保文件中存在一行(或一组行),而不是管理整个文件?

centos6 saltstack

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

如何为 salt-minion 中的特定用户安装 RVM 和 RUBY

我将 Ubuntu 12.04 用于 salt-master 和 salt-minion。当我尝试使用 salt 在 salt-minion 中安装软件包时,它仅安装在特定系统中。但我需要安装在特定用户中。如何为 salt-minion 中的特定用户安装 RVM 和 RUBY?

rvm ubuntu-12.04 saltstack

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

查找 linux 机器是否已加入域

我们正在使用adcli join. 现在我们开始将其作为 saltstack 设置的一部分,但我们无法弄清楚如何确定机器是否已经加入域?执行多个连接似乎没有任何问题,但这确实需要一些时间并且看起来有点不干净。如果机器已经加入,我们可以查看什么?adcli套件中的任何东西似乎都不起作用。

使用的 Linux 发行版是 CentOS(6.6 和 7),域是 2008R2 功能级别。

编辑:我见过一些人检查 的存在/etc/krb5.keytab,但在我看来,这仅表示机器是否已加入。如果我从 AD 中删除机器帐户,文件仍然存在,但机器实际上不再加入。

linux active-directory saltstack

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

Salt top.sls 不会使用 gitfs 在 `salt-run fileserver.update` 上更新

我有一个连接到盐主的盐仆从。我最近将一个大的 .sls 从“webserver.sls”重命名为“jetty.sls”。我使用带有 pygit2 和 ssh 的 gitfs 后端。我只启用了 gitfs 后端。 /etc/salt/master

fileserver_backend:
#  - roots
  - git

gitfs_provider: pygit2
gitfs_remotes:
  - git@bitbucket.org:Groomblecom/[repo].git:
    - pubkey: /root/salt-credentials/id_rsa.pub
    - privkey: /root/salt-credentials/id_rsa
Run Code Online (Sandbox Code Playgroud)

但是,每当我运行时,都会salt-run fileserver.update && salt '*' state.highstate出现错误:

Data failed to compile:
----------
    No matching sls found for 'webserver' in env 'base'
Run Code Online (Sandbox Code Playgroud)

运行salt '*' state.show_sls jetty给出了预期的(长)输出,与我在 bitbucket 存储库中看到的一致。运行salt '*' state.show_top给出以下内容:

----------
    base:
        - common
        - ingress
        - webserver
Run Code Online (Sandbox Code Playgroud)

这与 bitbucket repo 中的 top.sls 不一致:

base:
  '*': …
Run Code Online (Sandbox Code Playgroud)

git configuration-management saltstack

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

如何重新同步 saltstack?reposync 失败,并显示错误消息“由于缺少 GPG 密钥,正在删除 [...]。”

在 RHEL 7.4 系统上,我添加了 salt-latest 存储库,如下所示:

yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
Run Code Online (Sandbox Code Playgroud)

请注意,除其他事项外,这会创建以下两个 GPG 密钥文件:

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
/etc/pki/rpm-gpg/saltstack-signing-key
Run Code Online (Sandbox Code Playgroud)

为了供以后参考,请注意 CentOS 密钥的指纹以 f4a80eb5 结尾:

# gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt

pub  4096R/F4A80EB5 2014-06-23 CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>
      Key fingerprint = 6341 AB27 53D7 8A78 A7C2  7BB1 24C6 A8A7 F4A8 0EB5
Run Code Online (Sandbox Code Playgroud)

尝试重新同步下载:

mkdir /root/foobar

reposync --gpgcheck --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata
Run Code Online (Sandbox Code Playgroud)

它失败并出现如下错误:

Removing babel-0.9.6-8.el7.noarch.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.i686.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.x86_64.rpm, due to …
Run Code Online (Sandbox Code Playgroud)

gpg saltstack reposync

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

如何在salt-stack上将文件从master复制到minions?

我想将文件从 salt stack 主服务器复制到 minion 服务器。我从/sf/ask/1938152051/找到了一个脚本。但我得到了一个错误。

copy_my_files:
  file.recurse:
    - source: salt://srv/salt/nginx.conf
    - target: /etc/nginx
    - makedirs: True
Run Code Online (Sandbox Code Playgroud)

错误:-

  ID: copy_my_files
    Function: file.recurse
      Result: False
     Comment: Specified file copy_my_files is not an absolute path
     Started: 09:46:24.850682
    Duration: 1.473 ms
     Changes:
Run Code Online (Sandbox Code Playgroud)

我已经为两者提供了正确的路径。

saltstack

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