标签: salt-stack

在码头工人容器内的盐奴隶?

你在码头工人的容器里经营一个盐奴吗?

或者你只在运行docker容器的服务器上运行一个minion?

我们目前不使用盐,但希望将来使用它.

我们不确定未来如何布局我们的基础设施.

如果您不理解我的问题,请发表评论:-)

architecture salt-stack docker

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

使用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状态的存储库,用于在云中配置我的服务器群集.随着时间的推移,我继续在.sls这个回购中添加更多状态 - 文件.现在我开始挣扎什么是什么,什么在哪里.

我想知道是否有一些软件实用程序/软件包将生成我的状态存储库中的文档,最好是作为html页面,以便我可以浏览它们并查看它们的相互依赖性.

更新:

状态sls文件看起来像这样:

include:
    - states.core.pip

virtualenv:
    pip.installed:
        - require:
            - sls: states.core.pip

virtualenvwrapper:
    pip.installed:
        - require:
            - sls: states.core.pip
Run Code Online (Sandbox Code Playgroud)

还有另一个例子:

{% set user_home = '/home/username' %}

my_executable_virtualenv:
    virtualenv.managed:
        - name: {{ user_home }}/.virtualenvs/my_executable_virtualenv
        - user: username
        - system_site_packages: False
        - pip_pkgs:
            - requests
            - numpy
        - pip_upgrade: True
        - require:
            - sls: states.core

my_executable_supervisor_entry:
    file.managed:
        - name: /etc/supervisor/conf.d/my_executable.conf
        - source: salt://files/supervisor_config/my_executable.conf
        - user: username
        - group: username
        - mode: 644
        - makedirs: False
        - …
Run Code Online (Sandbox Code Playgroud)

salt-stack

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

在盐状态之间传递变量

在Saltstack中,我有以下用例:

有一个状态redis.sls可以包含在其他州.redis.sls的结果应该以不同的方式配置,具体取决于包含redis.sls的状态.

例如:

redis.sls:
--------
{% if x==1 %}
   #do something
{% else %}
   #do something else
{% endif %}


state_a.sls
-----------
{% set x=1 %}
include:
  - redis

state_b.sls
-----------
{% set x=2 %}
include:
  - redis
Run Code Online (Sandbox Code Playgroud)

但*在*state_a*和*state_b*中无法识别x

我也尝试用这样的东西设置支柱值:

{{salt['pillar.set']('x', 1)}}
Run Code Online (Sandbox Code Playgroud)

但那也不起作用.

还有其他想法吗?

salt-stack

7
推荐指数
1
解决办法
3444
查看次数

如何将参数传递给salt状态文件?

我想创建一个组和用户使用salt状态文件,但我不知道组,gid,用户,uid,sshkey,直到我需要执行我想作为参数传入的salt状态文件.

我已经阅读了有关Pillar创建变量的内容.如何在执行前创建支柱?

/srv/salt/group.sls:

{{ name }}:
  group.present:
    - gid: {{ gid }}
    - system: True
Run Code Online (Sandbox Code Playgroud)

命令行:

salt 'SaltStack-01' state.sls group name=awesome gid=123456
Run Code Online (Sandbox Code Playgroud)

python salt-stack

7
推荐指数
3
解决办法
8092
查看次数

(SaltStack)SLS狗中的ID狗不是字典

我一直在尝试在/ etc/modules文件中找到一个模式(bcm2708_wdog),如果没有,则将其添加到底部.每次我尝试这个,我得到"SLS狗的ID狗不是字典".我不知道这是什么意思.这是文件:

dog:
  - file.replace:
    - name: /etc/modules
    - pattern: 'bcm2708_wdog'
    - append_if_not_found: True
Run Code Online (Sandbox Code Playgroud)

salt-stack

7
推荐指数
1
解决办法
5139
查看次数

如何附加到字符串列表中的每个项目?

我有一个包含IP地址的字符串列表.我想为每个人添加一个端口号.在python我会这样做:

ip_list = [(ip + ":" + port) for ip in ip_list]
Run Code Online (Sandbox Code Playgroud)

......但Jinja不支持列表理解.目前,我通过一次建立一个新项目列表来解决问题:

{%- set ip_list = magic() %}
{%- set new_ip_list = [] %}
{%- for ip in ip_list %}
  {%- do new_ip_list.append(ip + ":" + port) %}
{%- endfor %}
Run Code Online (Sandbox Code Playgroud)

这在模板中间是丑陋和恼人的,感觉应该有更好的方法来完成工作.优选地是单衬里.

虽然我知道这可以通过自定义过滤器来完成,但我正在为我没有编写的软件(saltstack)提供模板,所以它们(据我所知)对我来说是不可用的.

jinja2 salt-stack

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

SaltStack:来自SLS文件的数据的属性(计算值)?

我们在salt管理的minions上运行了几个Python虚拟环境.

系统的名称由此架构构建:

project_customer_stage
Run Code Online (Sandbox Code Playgroud)

例:

supercms_favoritcustomer_p
Run Code Online (Sandbox Code Playgroud)

支柱数据:

systems:
  - customer: favoritcustomer
    project: supercms
    stage: p
  - customer: favoritcustomer
    project: supercms
    stage: q 
Run Code Online (Sandbox Code Playgroud)

对于每个virtualenv我们有一个linux用户.到目前为止,我们像这样计算像"home"这样的值:

{% for system in pillar.systems %}
  {% set system_name = system.project + '_' + system.customer + '_' + system.stage %}
  {% set system_home = '/home/' + system_name %}
  ...
Run Code Online (Sandbox Code Playgroud)

但这是多余的.

我们怎么能避免复制+粘贴{% set system_home = ...%}

我就像面向对象编程的工作方式:

  • 您可以为主目录定义属性
  • 如果在特殊情况下需要不同的主目录,那么您可以继承基类并覆盖基类的工作方式.

在盐中你有YAML和模板......两件好事.但就我而言,OOP会很好.

python salt-stack

7
推荐指数
1
解决办法
382
查看次数

Salt minion被接受后没有回复

在设置了盐主人和一个小兵后,我能够接受主人的钥匙.跑步sudo salt-key -L表明它被接受了.但是,当我尝试test.ping命令时,主人显示:

Minion没有回来.[没有反应]

在主服务器上,日志显示:

[错误] [1642]来自minion-01的身份验证尝试失败,挂起的公钥不匹配.这可能是试图破坏Salt集群.

在小兵身上,日志显示:

[错误] [1113] Salt Master已缓存此节点的公钥,此盐爪将在尝试重新验证之前等待10秒

我尝试断开连接并重新连接,包括重新启动两个盒子.

salt-stack

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

Salt:在一台主机上管理100多个virtualenvs

我们如何构建salt状态树,以便能够highstate在主机上运行的大量运行中运行一个virtualenv?

我们使用面料为开发和生产运行virtualenvs.我们想从面料换成盐.一切都很好,除了highstate需要太长时间.我们在一个主机上有100多个virtualenvs,并且caling highstate将更新100+ virtualenvs.

python virtualenv salt-stack

7
推荐指数
1
解决办法
279
查看次数

标签 统计

salt-stack ×10

python ×3

architecture ×1

docker ×1

hash ×1

jinja2 ×1

md5 ×1

virtualenv ×1

web-services ×1