标签: salt-stack

如何在jinja模板中获取主机名的IP地址

我们的saltstack基于主机名(webN.,dbN.等).但对于各种事情我需要那些服务器的IP.现在我把它们存放在支柱中,但我需要同步的地方数量增加了.

我试图使用publish + network.ip_addrs,但这有点糟糕,因为它需要完成整个salt-roundtrip才能解析主机名.它也取决于仆从的反应.因此,我正在寻找一种方法将模板中的主机名解析为IP.

我假设我可以为它编写一个模块,但我的python技能非常有限.

python jinja2 salt-stack

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

使用SaltStack设置环境

如何让小兵使用特定的SaltStack环境?

所述GitFS后端教程指出分支将被映射到使用分支名称作为标识符的环境.如何将这些环境暴露给我的仆从?

举个例子,假设我有一个名为"pippy" 的分支.我想把那个分支部署到特定的小兵身上.

好像我可以通过minion的配置文件设置环境.还有其他方法可以从盐主人那里做到吗?

git salt-stack

11
推荐指数
1
解决办法
8568
查看次数

如何避免在盐州重复自己?

我们有两个不同的环境,开发和生产,由一个Salt服务器管理.像这样的东西:

base:
  'dev-*':
    - users-dev
  'prod-*':
    - users-prod
Run Code Online (Sandbox Code Playgroud)

user-devusers-prod状态是几乎相同的,就像这样:

{% for user, data in pillar['users-dev'].items() %}
{{ user }}-user:
  user.present:
    < ...something... >
{{ user }}_ssh_auth:
  ssh_auth.present:
    < ...something... >
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我们不想复制代码,所以我们最初的想法是做这样的事情:

{% users = pillar['users'].items() %}
include:
  - users-common
Run Code Online (Sandbox Code Playgroud)

然后引用usersin users-common,但这不起作用,因为正确的Jinja语法是,set users = pillar['users'].items()并且这不打算跨盐状态包括.

那么,问题是如何正确地做到这一点?

configuration-management salt-stack

10
推荐指数
1
解决办法
471
查看次数

如何在主人的接受之前验证盐爪子的密钥指纹?

当我构建一个新服务器时,我在使用ssh通过网络进行初始连接之前从控制台收集ssh密钥指纹.我希望能够在使用盐时获得相同的带外保证.

使用salt,当新的minion启动时,它会生成一个RSA密钥并向salt-master提交请求.我可以salt-key -p <newminion>用来查看整个键并将其与minion进行比较/etc/salt/pki/minion/minion.pub,但我宁愿使用salt-key -f <newminion>显示的较短指纹.

如何让minion显示自己的密钥指纹?仆从没有salt-key命令......

salt-stack

10
推荐指数
1
解决办法
2805
查看次数

Saltstack:忽略cmd.run的结果

我试图通过Saltstack调用配置命令.如果命令失败,那么我得到状态失败,我不希望它(命令的重新编码无关紧要).

目前我有以下解决方法:

Run something:
  cmd.run:
    - name: command_which_can_fail || true
Run Code Online (Sandbox Code Playgroud)

有没有办法使用salt功能使这种状态忽略retcode?或者我可以从日志中排除这种状态?

salt-stack

10
推荐指数
2
解决办法
3450
查看次数

Salt-stack列出所有可用状态

我已经搜索了文档,但无法找到令人满意的答案.是否有可能获得像salt'machine'state.list这样的东西.获得可能被应用的所有州?

我知道有高状态/顶部/低状态,但如果我想搜索特定状态,我总是需要手动浏览文件夹结构.

salt-stack

10
推荐指数
2
解决办法
4282
查看次数

SaltStack状态安装.deb包文件和依赖项

我有盐配方.在服务器上我正在使用wkhtmltopdf工具.Ubuntu repo有这个工具,但它有一个旧版本.我想使用最新版本.

我正在做以下操作以手动安装在minions上.

$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ sudo apt-get install fontconfig libfontenc1 libjpeg-turbo8 libxfont1 x11-common xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libxrender1
$ sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Run Code Online (Sandbox Code Playgroud)

我能做cmd.run所有这些命令.有没有更好的方法来做这些步骤?

deb salt-stack ubuntu-14.04

9
推荐指数
1
解决办法
5631
查看次数

存储库未签名以在 Ubuntu 上安装软件包

我正在使用 Salt (SaltStack) 在 Ubuntu 18.04 中安装软件包。例如,我想为 docker安装一个公式。当我应用docker状态时,出现无法安装包的错误,因为公式中使用的包存储库未签名。

ID: docker package
Function: pkg.installed
Name: docker-engine
Result: False
Comment: An error was encountered while installing package(s): E: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-bionic/InRelease  403  Forbidden [IP: 13.33.98.216 443]
              E: The repository 'https://apt.dockerproject.org/repo ubuntu-bionic InRelease' is not signed.
Run Code Online (Sandbox Code Playgroud)

当我使用另一个公式时也会发生同样的情况。

我发现如果我通过命令行手动安装一个包,我会使用一个--allow-unauthenticated选项。

但是在使用 Salt 和 salt-formulas 时解决这个问题的方法是什么?如何从未签名的存储库安装软件包?

salt-stack

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

使用file.managed在Salt中下载文件

salt.states.file.managed需要source_hash作为参数来验证下载的文件.这阻止我使用file.managed我无法控制的在线服务器上的文件.该文件也会定期更改.我的配置看起来像这样.

download_stuff:
  file.managed:
    - name: localfile.tar.gz
    - source: http://someserver.net/onlinefile.tar.gz
    - source_hash: ???
Run Code Online (Sandbox Code Playgroud)

我不希望使用cmd.run具有Curlwget因为这将始终下载该文件,甚至当它已经在本地机器上.

我想知道下面的选项之一是否可能/存在:

  • 在线md5计算服务.有没有办法使用免费的Web服务获取文件的md5哈希?我在想类似的东西http://md5service.net?url={url-to-file}.
  • 盐内转换或变通方法.在Salt中可以处理这个问题吗?也许以source_hash某种方式遗漏?
  • 替代国家.Salt中是否有其他状态可以执行此类操作,而不会失去仅在需要时下载文件的好处?

hash md5 web-services salt-stack

8
推荐指数
1
解决办法
6188
查看次数

配置Salt API - Java

我试图用Salt-Api,所以我创建了一个salt-api.conf/etc/salt/master.d/如下:

external_auth:
  pam:
    saltuser:
      - .*
      - '@wheel'   # to allow access to all wheel modules
      - '@runner'  # to allow access to all runner modules
      - '@jobs'    # to allow access to the jobs runner and/or wheel module

rest_cherrypy:
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/certs/localhost.key
  disable_ssl: True
  webhook_disable_auth: True
  webhook_url: /hook
Run Code Online (Sandbox Code Playgroud)

用户输入/etc/salt/master设置为user: root.因此,当我尝试使用pam本地身份验证时,它可以工作:

sudo salt -a pam '*' test.ping
username: saltuser
password: saltuser

minion:
    True
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用curl时,它会失败:

curl …
Run Code Online (Sandbox Code Playgroud)

python java salt-stack

8
推荐指数
1
解决办法
915
查看次数