如何在 SaltStack 状态文件中检查服务器上不存在包?
How to check that package is not present on server in SaltStack state file?
我正在尝试在 Ubuntu 机器上使用 saltstack 版本 2015.5.2 自动安装 Aerospike 数据库。
以下是我想自动化的手动安装过程。 (为了简单起见,我只提关键步骤)
下载 Aerospike
wget -O aerospike.tgz
http://aerospike.com/download/server/latest/artifact/ubuntu12
解压包内容
tar -xvf aerospike.tgz
安装 Aerospike 服务器和工具
cd aerospike-server-community-3.5.15-ubuntu12.04
./asinstall
启动 Aerospike
/etc/init.d/aerospike start
第 3 步执行实际安装,包括安装 2 个软件包:aerospike-server-community 和 aerospike-tools.
现在在 saltstack 状态文件中我想检查这两个包是否已经存在于服务器上,在这种情况下不要执行步骤 3 中的 ./asinstall
命令。
我怎样才能在我的自动化流程中包含该条件?
我建议您在继续之前阅读 requisites in salt,因为您可以在那里找到很多有趣的东西。
此外,我认为您真正需要的是:UNLESS
,因为如果您的系统上已经有这些软件包,则不应安装它们。除非可以与 pkg
关键字一起使用,但对您来说 rpm -q package_name
可能同样有效。
它应该看起来像这样:
start_process:
cmd.run:
- name: 'write here your command'
- unless:
- rpm -q package1,package2
我想对答案做个小评论,但是我的名誉不允许,所以我提前为此道歉。
这一行:
- rpm -q package1,package2
实际上应该是:
- rpm -q package1 package2
我正在尝试在 Ubuntu 机器上使用 saltstack 版本 2015.5.2 自动安装 Aerospike 数据库。
以下是我想自动化的手动安装过程。 (为了简单起见,我只提关键步骤)
下载 Aerospike
wget -O aerospike.tgz http://aerospike.com/download/server/latest/artifact/ubuntu12
解压包内容
tar -xvf aerospike.tgz
安装 Aerospike 服务器和工具
cd aerospike-server-community-3.5.15-ubuntu12.04 ./asinstall
启动 Aerospike
/etc/init.d/aerospike start
第 3 步执行实际安装,包括安装 2 个软件包:aerospike-server-community 和 aerospike-tools.
现在在 saltstack 状态文件中我想检查这两个包是否已经存在于服务器上,在这种情况下不要执行步骤 3 中的 ./asinstall
命令。
我怎样才能在我的自动化流程中包含该条件?
我建议您在继续之前阅读 requisites in salt,因为您可以在那里找到很多有趣的东西。
此外,我认为您真正需要的是:UNLESS
,因为如果您的系统上已经有这些软件包,则不应安装它们。除非可以与 pkg
关键字一起使用,但对您来说 rpm -q package_name
可能同样有效。
它应该看起来像这样:
start_process:
cmd.run:
- name: 'write here your command'
- unless:
- rpm -q package1,package2
我想对答案做个小评论,但是我的名誉不允许,所以我提前为此道歉。
这一行:
- rpm -q package1,package2
实际上应该是:
- rpm -q package1 package2