当我执行以下操作时收到以下错误消息state.apply:
[ERROR ] Data passed to highstate outputter is not a
valid highstate return: {'sonia9': ['Pillar failed to
render with the following messages:', "Rendering SLS 'users'
failed. Please see master log for details."]}
Run Code Online (Sandbox Code Playgroud)
是否可以看到实际渲染以及失败的地方?
我已经尝试过:
log_level: garbage中/etc/salt/master,重新启动守护进程salt-call -l debug state.apply在奴才上我收到同样无用的错误消息,并且没有有关实际渲染的更多详细信息。
我刚开始使用 saltstack,所以有人可以帮助解决这个问题:如果里面的一个语句失败,如何使整个 state.sls 失败?是必需品吗
要求/观看
适合这个吗?
我想过滤包含或以“foo_”开头的值,并忽略列表中的其他值。
值(无法修改):
TEST:
- foo_a
- foo_b
- bar_a
- bar_b
- test_c
Run Code Online (Sandbox Code Playgroud)
模板 :
{% for value in grains['TEST'] %}
- do something with value that contains "foo_"
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我尝试过:
{% for value in grains['TEST']|map(^foo_) %}
- do something with value that contains "foo_"
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
=> 没有成功
我只是 SaltStack 的初学者。我可以看到有一个 pkgrepo 模块可用于设置包 repo 以便从中安装包。
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.pkgrepo.html
给出的一个例子是:
base:
pkgrepo.managed:
- humanname: Google Chrome
- name: deb http://dl.google.com/linux/chrome/deb/ stable main
- dist: stable
- file: /etc/apt/sources.list.d/chrome-browser.list
- require_in:
- pkg: google-chrome-stable
- gpgcheck: 1
- key_url: https://dl-ssl.google.com/linux/linux_signing_key.pub
Run Code Online (Sandbox Code Playgroud)
我不明白的是我把上面的代码放在哪里?我在 /srv/salt/top.sls 和其他状态的 .sls 文件中尝试过,但这是不对的。它是如何完成的?
我正在尝试构建一个.sls将始终重新启动服务的文件:
systemd-resolved:
service.running:
- restart: True
Run Code Online (Sandbox Code Playgroud)
部署时,这给出了
ID: systemd-resolved
Function: service.running
Result: True
Comment: The service systemd-resolved is already running
Started: 23:46:49.999789
Duration: 53.068 ms
Changes:
Run Code Online (Sandbox Code Playgroud)
这是正确的,服务已经在运行。我试图用这个命令传达的是重新启动它。怎么做?
注意:如果可能的话,我想避免运行显式命令(因为我觉得我不太像盐 - 这应该由适当的模块处理):
'systemctl restart systemd-resolved':
cmd.run
Run Code Online (Sandbox Code Playgroud) 我需要使用版本0.13.0而不是版本0.15.x. 似乎堆栈溢出需要我在这一行下面添加许多行文本,当我想问的是一个简单的问题,如何降级盐奴才找不到任何ppa ...有它或任何东西的存储库.. .
我正在尝试使用salt minion安装Nginx包.但是,我无法安装.我试着.sls在一个名为Nginx的新目录中编写一个文件,如下所示:
/salt/states/base/nginx/init.sls:
nginx:
pkg:
- installed
service:
- running
- watch:
- pkg: nginx
Run Code Online (Sandbox Code Playgroud)
我写的top.sls如下:
base:
'saltminion*':
- nginx
Run Code Online (Sandbox Code Playgroud)
我执行了以下命令:
salt '*' state.highstate
Run Code Online (Sandbox Code Playgroud)
我得到如下输出:
ubuntu:
----------
ID: states
Function: no.None
Result: False
Comment: No Top file or external nodes data matches found
Changes:
Summary
------------
Succeeded: 0
Failed: 1
------------
Total: 1
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
目前我有以下cron.file公式
date > system_cron:
cron.file:
- name: salt://crons/cron_jobs
- source_hash: "md5sum=895dcbbddd27bfa77056ef8c8340549a"
- user: security
Run Code Online (Sandbox Code Playgroud)
但是每次运行highstate时都会更新crontab,尽管cron_jobs文件没有改变,因此状态是相同的.有没有办法在每次使用cron.file时运行highstate时停止创建temp crontab文件
我想通过盐堆栈安装此文件。
# /etc/logrotate.d/foo
/home/foo/log/foo.log {
compress
# ...
postrotate
systemctl restart foo.service
endscript
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,有些旧机器还没有安装系统。
对于那些机器,我需要以下postrotate脚本:
/etc/init.d/foo restart
Run Code Online (Sandbox Code Playgroud)
如何用盐做这件事?
我想我需要这样的东西:
postrotate
{% if ??? %}
/etc/init.d/foo restart
{% else %}
systemctl restart foo.service
{% endif %}
endscript
Run Code Online (Sandbox Code Playgroud)
但是如何实施????
我刚刚开始使用Salt而不是Ansible.我不确定是从主服务器调用以下脚本还是手动将命令输入salt状态.对于后者,任何人都可以建议如何使用cmd.run实现此目的.
#!/bin/bash
. /lib/lsb/init-functions
cd /opt/concourse/bin/
./concourse worker \
--name ci_worker01 \
--bind-ip 0.0.0.0 \
--bind-port 7777 \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-port 2222 \
--tsa-public-key /opt/concourse/.ssh/id_web_rsa.pub \
--tsa-worker-private-key /opt/concourse/.ssh/id_worker_rsa &>/var/log/concourse/concourse_worker.log &
Run Code Online (Sandbox Code Playgroud)