我有一个非常简单的用例,我正在尝试开始:
我需要从 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) 我正在学习 Salt Stack 以将我的 Python 应用程序部署到 AWS 上的各个生产阶段。现在我在一个大存储库中拥有我所有的源代码和盐状态。
将 minion 状态文件保存在我的源中是否有任何实际或安全考虑?或者我应该把它们分开,为什么?
如果我确实将我的状态文件移动到一个单独的 salt-states 存储库中,我应该在哪里保存我的master和minion配置文件,或者它们不属于版本控制?
我想在state.highstate运行期间从外部源下载谷物文件。该文件通常不应更改 - 我仅将其主要用于初始配置。
所以看起来我只想要一个file.managed状态,将正确的内容放入_grains(我使用独立客户端)然后调用saltutil.sync_grains. 但是我如何调用一个函数呢?这将是一个已watch配置的状态,但我没有看到可以帮助我做到这一点的状态。
让我们以我今天所拥有的为例: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']用两个文件填充呢?
谢谢
我想将以下行添加到我环境中的所有 /etc/sudoers 文件中:
# Administrators LDAP Group
%Administrators ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
但是,每台服务器都有不同的 /etc/sudoers 文件,从一个位置获取所有这些文件是不切实际的。
Salt 有没有办法确保文件中存在一行(或一组行),而不是管理整个文件?
我将 Ubuntu 12.04 用于 salt-master 和 salt-minion。当我尝试使用 salt 在 salt-minion 中安装软件包时,它仅安装在特定系统中。但我需要安装在特定用户中。如何为 salt-minion 中的特定用户安装 RVM 和 RUBY?
我们正在使用adcli join. 现在我们开始将其作为 saltstack 设置的一部分,但我们无法弄清楚如何确定机器是否已经加入域?执行多个连接似乎没有任何问题,但这确实需要一些时间并且看起来有点不干净。如果机器已经加入,我们可以查看什么?adcli套件中的任何东西似乎都不起作用。
使用的 Linux 发行版是 CentOS(6.6 和 7),域是 2008R2 功能级别。
编辑:我见过一些人检查 的存在/etc/krb5.keytab,但在我看来,这仅表示机器是否已加入。如果我从 AD 中删除机器帐户,文件仍然存在,但机器实际上不再加入。
我有一个连接到盐主的盐仆从。我最近将一个大的 .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) 在 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) 我想将文件从 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 ×10
automation ×1
centos6 ×1
deployment ×1
git ×1
gpg ×1
linux ×1
reposync ×1
rvm ×1
ubuntu-12.04 ×1