我只需要执行一次状态。我找不到一个简单的方法来做到这一点。
我通过 salt 安装了两个 MySQL 服务器。我想让一个人成为另一个人的奴隶。
为了设置从站,我需要在主站安装结束时获取主站状态信息:
SHOW MASTER STATUS;
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用执行mysql.query
函数的自定义状态来获取它。
mysql_master_status:
mystate.query:
- query: SHOW MASTER STATUS
Run Code Online (Sandbox Code Playgroud)
但是每次为我的服务器执行 highstate 时它都会执行。从而每次都给出不同的主信息。
我尝试使用文件存在作为标志:
/tmp/only_once:
file.missing: []
mysql_master_status:
mystate.query:
- query: SHOW MASTER STATUS
- require:
- file: /tmp/only_once
Run Code Online (Sandbox Code Playgroud)
它正在工作,但我并不高兴,因为我现在每次都有两个失败的状态。
我以一个新参数 for 结束mystate
,flag
它在第一次执行时创建一个标志文件,如果文件存在则成功返回:
mysql_master_status:
mystate.query:
- query: SHOW MASTER STATUS
- flag: /tmp/only_once
Run Code Online (Sandbox Code Playgroud)
不过,我想知道是否以及如何只执行一次状态。
我们通过 SaltStack 部署和更改系统服务文件。
例如,如果文件/etc/systemd/system/superfoo.service
被更改,则 systemd 会发出以下警告:
Warning: Unit file of superfoo.service changed on disk,
'systemctl --system daemon-reload' recommended.
Run Code Online (Sandbox Code Playgroud)
如何使用 salt-stack 自动执行此操作?
我有一个由其他人编写的盐脚本,它正在执行一堆命令。它运行了很长时间。我与运行它的机器的连接中断了,但它仍在运行。我如何返回它以查看它的作用?我没有使用screen
.
命令如下所示:
$ salt --subset=1 -C 'G@application:foo and G@roles:application and G@vpc:staging' state.sls foo.commands.application.export
Run Code Online (Sandbox Code Playgroud)
有很多主机都有角色应用程序,而且这些东西运行良好。我正在其他地方监视正在执行的操作(推送到队列)的输出。
我相信我正在寻找某种“检查正在运行的 salt 脚本的状态”,但在文档中找不到。
我跑salt 2014.1.13 (Hydrogen)
的Ubuntu 14.04.1 LTS
。
全部,
我们正在尝试在我们的 Jenkins 设置中进行自动化测试,以在我们的 salt 状态文件 ( .sls
) 中运行“smoke”和“lint”类型的测试。到目前为止,所有 google-foo 都产生了很少的信息。有一种test=True
在命令行中进行测试的方法,但这不适用于无外壳帐户(就像 Jenkin 的帐户通常那样)。
我还没有遇到过对 SaltStack 状态进行这种自动测试的人。所以:
1)有没有可能
2)任何人都知道我可以查看的好资源
TIA。
我正在 Windows Minions(Linux master)上使用 SaltStack。我写了一个简单的 .sls 文件,它复制了 C:/hello_world.txt 中的 hello-world.txt。我还编写了我的 top.sls 并配置了我的 file_roots。Minions 密钥已被接受(并且 test.ping 正在工作)。
我目前的问题是当我打电话(在主人上)时:
salt 'my_minion' state.highstate
Run Code Online (Sandbox Code Playgroud)
我得到一个:
Minion did not return. [no response]
Run Code Online (Sandbox Code Playgroud)
而当我尝试(在奴才上)时:
salt-call state.highstate
Run Code Online (Sandbox Code Playgroud)
一切正常(文件被复制)。我试图在主服务器上添加 -l 调试选项,但我没有得到一些有趣的东西。
有什么调试技巧吗?
Salt Stack Minion 是否可以使用在所有消费者 NAT 路由器中默认打开的标准端口(并且没有公共 DNS 记录或静态 IP)从 NAT/防火墙等后面与 salt master 通信?
我正在完成我的第一个盐教程,这就是我被卡住的地方。
我可以在 Ubuntu salt-master 上配置 iptables。但是我无法控制小兵将坐在后面的路由器/ NAT。
到目前为止,我尝试了这些设置:
/etc/salt/master:
publish_port: 465
ret_port: 443
Run Code Online (Sandbox Code Playgroud)
/etc/salt/minion:
master_port: 465
Run Code Online (Sandbox Code Playgroud)
那没有用。
我有一个定制开发的应用程序,目前在大约 40 台 Kubuntu 笔记本电脑上运行(还有更多计划)。每隔几个月我就必须更新应用程序。(通常这只是替换 .jar 文件,这需要 root 权限。)我还必须运行 Ubuntu 更新和其他一些小事情。我一直在手动操作,使用 Team Viewer 登录每个客户端。
我想极大地改进这个过程。我知道的两个选项是:
使用反向 ssh 隧道和 bash 脚本。我测试了这个并且它有效。但是我没有得到任何报告等,我会得到 Salt Stack。
使用 Salt Stack(或类似的)管理工具。但我需要一个非常简单的工具。我不能在大的学习曲线上投入任何时间。
我查看了 Puppet 和一堆相关工具。我发现的唯一一个对我来说看起来足够简单的(到目前为止)是 Salt Stack。但是我现在卡住了,因为我的仆从无法到达盐主,如上所述。
我很欣赏建议。
如何使用 Salt Stack 在我的所有 Minion 上输出文件的内容?
我能找到的唯一“拉”功能是在这个 minion push commit 中,但这需要在 master 上进行配置更改。
如何使用盐堆栈创建和启用永久的 1GB 交换文件,该文件将在重新启动后起作用?salt.states.mount.swap
不允许定义交换大小。此外,我需要定义swappiness。目前我这样做echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
无法从cmd.run
我的 Salt State分配输出。即使load_avg
minion 中的 并不真正等于或超出 ,条件也始终返回 true threshold
。我还在配置中包含了我尝试过的东西。
# {% set load_avg = salt['cmd.run']('uptime | sed "s/.*load average: //" | cut -d " " -f2 | cut -d . -f1') %} # Not working
# {% set load_avg = salt['cmd.run']('/bin/sh -c "uptime | sed \"s/.*load average: //\" | cut -d \" \" -f2 | cut -d . -f1"') %} # Not working
# {% set load_avg = salt['cmd.run']('echo 0') %} # Not working …
Run Code Online (Sandbox Code Playgroud) 有没有人尝试在 Ubuntu 18.04 上为加密支柱创建 GPG 密钥?
我正在使用以下命令尝试生成密钥:
gpg --gen-key --homedir /etc/salt/gpgkeys
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我会得到一组常见的问题、全名、电子邮件等。但是,当它进入密码短语屏幕时,我似乎无法在不输入密码短语的情况下通过它。我得到一个看起来像这样的 ncurses 显示:
如果我只是按 Enter 键通过它,它会立即弹回。如果我点击“取消”,则会出现以下错误:
gpg: agent_genkey failed: Operation cancelled
Key generation failed: Operation cancelled
Run Code Online (Sandbox Code Playgroud)
有人遇到这个吗?