特定版本检查+ if和else循环

时间:2015-07-10 19:18:19

标签: puppet

刚开始傀儡。正如其他人都知道的那样,开始做事总是最困难的。为了练习,我想做以下事情:我假设我将它放在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"的语法不正确。

1 个答案:

答案 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做你正在尝试的事情,但这不是应该如何使用木偶。