Puppetのマニフェストを書いていてrequireが2つ必要な場面がありました。
記述法を調べてみて結果うまくいったのでそのメモです。
公式のFAQドキュメントにそのまんまの回答がありました。
要件
例えば、
- zabbix-sender
というパッケージをインストールするマニフェストを例にします。
『zabbix-sender』のインストールには事前に以下の2点が必要です。
- zabbix用のyumリポジトリファイルがあること
- zabbix-agentがインストールされていること
これら2つのマニフェストは以下のようになっています。
zabbix用のyumリポジトリファイル
file { '/etc/yum.repos.d/zabbix2.0.repo': content => template("/etc/puppet/manifests/templates/etc/yum.repos.d/zabbix2.0.repo"), owner => 'root', group => 'root', mode => 644, }
zabbix-agentのインストール
package { 'zabbix-agent': ensure => latest, require => File['/etc/yum.repos.d/zabbix2.0.repo'], }
require2つの記述例
上記2つをrequireとして定義して書く例です。
package { 'zabbix-sender': ensure => latest, require => [ File['/etc/yum.repos.d/zabbix2.0.repo'], Package['zabbix-agent'] ], }