Salt:安装包和 运行 服务(名称与包不同)
Salt: install package and run service (name different than package)
目前正在努力思考 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 文档:
The generalized form of a requisite target is <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 有条件地采取行动 的方法。在这种情况下,如果包安装失败,则不应尝试启动服务(并且失败)。
目前正在努力思考 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 文档:
The generalized form of a requisite target is
<state name>: <ID or name>
.
如果我们拆散你的my_state_id
ID:
my_state_id
是IDpkg
和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 有条件地采取行动 的方法。在这种情况下,如果包安装失败,则不应尝试启动服务(并且失败)。