【问题标题】:Puppet - Variable for package name failsPuppet - 包名称的变量失败
【发布时间】:2013-05-11 13:36:35
【问题描述】:

我是 puppet 的新手,我很困惑。

我正在安装 gcc、gcc-c++、openssl 和 openssl-devel。

在显示的代码中,$openssl_devel 有效,但 $c_plus 未定义。

为什么 puppet 将 $c_plus 设置为 'undef' ?

Cent OS 6

class torque::prerequisites {
case $operatingsystem {
      centos,redhat: {$openssl_devel    = 'openssl-devel'}
      centos,redhat: {$c_plus           = 'gcc-c++'}

      debian,ubuntu: {$openssl_devel    = 'libssl-dev'}
      debian,ubuntu: {$c_plus           = 'build-essential'}

      default:{fail("Unable identify opperating system. $operatingsytem not recognized") }
    }

    package {'openssl':
      ensure => latest,
    }
    package {$openssl_devel:
      ensure   => latest,
      require => Package['openssl'],
    }
    package {'gcc':
        ensure => installed,
    }
    package {$c_plus:
        ensure => installed,
        require => Package['gcc'],
    }
}

class {'torque::prerequisites':}

傀儡应用扭矩_先决条件

错误:/Stage[main]/Torque::Prerequisites/Package[undef]/ensure:从不存在更改为存在失败:找不到包 undef

【问题讨论】:

  • 每组操作系统有两个案例。它会找到第一个,执行它,然后停止。您应该将$openssl_devel$c_plus 声明放在同一组花括号中。就像您在下面的答案中所做的那样。

标签: puppet


【解决方案1】:

我仍然不知道为什么原来的语法不起作用,但是这个语法确实起作用:

class torque::prerequisites {
case $::osfamily {
    Redhat: {
      $openssl_devel = 'openssl-devel'
      $c_plus_compiler  = 'gcc-c++'
    }
    Debian: {
      $openssl_devel = 'libssl-dev'
      $c_plus_compiler = 'build-essential'
    }

  default:{fail("Unable identify opperating system. $operatingsytem not recognized") }
}

package {'openssl':
  ensure => latest,
}
package {$openssl_devel:
  ensure   => latest,
  require => Package['openssl'],
}
package {'gcc':
    ensure => installed,
}
package {$c_plus_compiler:
    ensure => installed,
    require => Package['gcc'],
}
}

class {'torque::prerequisites':}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多