刚开始傀儡。正如其他人都知道的那样,开始做事总是最困难的。为了练习,我想做以下事情:我假设我将它放在init.pp.在发布之前我做了谷歌搜索。其中大多数都没有对版本检查应用if / else循环。大多数只是确保特定版本或只是确保=>最新。
if 'openssl' version == '1.0.2b' or '1.0.2d'
upgrade to 1.1.1e
else
do nothing
目前我的代码看起来像这样
package { 'openssl':
if 'openssl' version == '1.0.2b' or '1.0.2d' {
ensure => '1.1.1e'
}
else {
}
我有几个问题:
1)我不认为我的openssl版本的语法是正确的。当我做简单的谷歌搜索时,我看到人们确保openssl的版本类似于'1.0.1e-15.el6',有时它是'1.0.1e-16.el6_5.7'我很困惑确定' - '之后的内容
3)如何检查openssl的版本?我认为'openssl' version == "xxxx"
的语法不正确。
答案 0 :(得分:1)
根据您的操作系统,您必须找到要安装的软件包的全名。在类似redhat
的系统上,您可以使用yum info openssl
查找完整的包名称。你会看到这样的东西:
[root@puppet-vm ~]# yum info openssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.informatik.hs-fulda.de
* extras: mirror.informatik.hs-fulda.de
* updates: mirror.maeh.org
Installed Packages
Name : openssl
Arch : x86_64
Epoch : 1
Version : 1.0.1e
Release : 42.el7.9
Size : 1.5 M
Repo : installed
From repo : updates
Summary : Utilities from the general purpose cryptography library with TLS implementation
URL : http://www.openssl.org/
License : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications between
: machines. OpenSSL includes a certificate management tool and shared
: libraries which provide various cryptographic algorithms and
: protocols.
其中
Version : 1.0.1e
Release : 42.el7.9
为您提供所需的信息。
这就是告诉puppet安装此特定版本的openssl
或任何其他软件包的方法。
package { 'openssl':
ensure => '1.0.1e-42.el7.9',
}
有关包类型的更多详细信息,请访问here。
Puppet不是为了检查包的存在而设计的,只有在满足特定要求时才升级/降级它们。 Puppet旨在用于定义最终应如何配置服务器。
有办法用exec做你正在尝试的事情,但这不是应该如何使用木偶。