私は人形のドキュメントを調べています。演習の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つ目はpackage {$build_packages:
です。これは、アレイの各メンバーのリソースに展開され、アレイ内の各パッケージがインストールされます。
ただし、配列のnotify
は$build_packages
が文字列であると想定しているため、配列はmessage
リソースを破壊することに注意してください。