如何解决Salt:安装包并运行服务名称与包不同
目前正试图将我的头围绕在盐上。
本质上我想安装一个包 (rpm) 并启用和运行服务(如果包安装成功)。
惊喜:服务的调用方式与包不同。
说吧
- 这个包叫做 x
- 但是这个包安装的 (systemd/init) 服务叫做 y
这不起作用
my_state_id:
pkg.installed:
- pkgs:
- x
service.running:
- name: y
- enable: true
- require:
- pkg: x
结果:
Comment: The following requisites were not found:
require:
pkg: x
看起来我必须这样写并引用状态而不是包:
my_state_id:
pkg.installed:
- pkgs:
- x
service.running:
- name: y
- enable: true
- require:
- pkg: my_state_id
但是:require: pkg: my_state_id
是什么意思? =D "如果到此为止的状态没有失败,则运行当前模块"?
解决方法
引用 requisites 文档:
必要目标的一般形式是 <state name>: <ID or name>
。
如果我们拆散您的 my_state_id
ID:
-
my_state_id
是 ID -
pkg
和service
是州名 -
pkg
state 没有name
参数,但是service
state 有参数,它是y
由于 pkg
状态没有 name
参数,我们需要使用它的 ID 将其指定为必需:
- 在左侧,我们将有
pkg
- 右侧是 ID
my_state_id
- require:
- pkg: my_state_id
另一种写法是:
# give the package name in 'name' parameter
my_state_id:
pkg.installed:
- name: x
service.running:
- name: y
- enable: true
- require:
- pkg: x
所以这是一种告诉 Saltstack 有条件地采取行动的方法。在这种情况下,如果包安装失败,则不应尝试启动服务(并失败)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。