web-dev-qa-db-ja.com

puppetの値として配列を渡すと、パッケージがインストールされますか?

私は人形のドキュメントを調べています。演習の1つは、いくつかの条件付きロジックを使用して、一般的なインストールマニフェストを作成することです。

演習:$ Operatingsystemファクトを使用して、Debianベース(「debian」、「ubuntu」)およびEnterprise Linuxベース(「centos」、「redhat」)のマシンにビルド環境をインストールするマニフェストを作成します。 (どちらのタイプのシステムにもgccパッケージが必要ですが、Debianタイプのシステムにもbuild-essentialが必要です。)

動作するコードを作成しましたが、私のマシンはcentosマシンであるため、ブランチが動作するかどうかを確認する方法がありません。

$build_packages = $::operatingsystem ? {
  /(?i)centos|redhat/ => 'gcc',
  /(?i)debian|ubuntu/ => ['gcc','build-essential'],
  default => undef
}

notify {"build_packages":
  message => "Build packages for ${::operatingsystem} are: ${build_packages}\n",
  before => Package['build']
}

package {'build':
  ensure => installed,
  name => $build_packages
}

私の質問は、私がdebianまたはubuntuシステムを使用していた場合、これは機能するでしょうか?具体的には、$build_packagesを配列に設定した場合、パッケージリソースは正しいことを行い、2つのパッケージをインストールしますか?または、そのリソースを次のように再定義する必要がありますか?:

package {$build_packages:
    ensure => installed
}
2
Avery Chan

2つ目はpackage {$build_packages:です。これは、アレイの各メンバーのリソースに展開され、アレイ内の各パッケージがインストールされます。

ただし、配列のnotify$build_packagesが文字列であると想定しているため、配列はmessageリソースを破壊することに注意してください。

4
Shane Madden