s_tajima:TechBlog

渋谷で働くインフラエンジニアのTechブログです。

Puppet3.6環境でPackageを定義するとWarningが

Puppet3.6環境で、

package {
  "openssl":
    ensure  => installed,
}

のように、packageの定義を記載すると、puppet適用時に

Warning: The package type's allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please explicitly set allow_virtual to false.
(at /usr/share/ruby/vendor_ruby/puppet/type.rb:816:in `set_default')

という警告が表示される。

allow_virtualというオプションの説明をみると
http://docs.puppetlabs.com/references/3.6.latest/type.html#package-attribute-allow_virtual
> Specifies if virtual package names are allowed for install and uninstall.
とのこと。

virtual packageについての説明はこちら。
http://www.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html

RPMのprovidesに記載された名前でパッケージ名をインストールすることができるようになる仕組みの事らしい。

例えば

$ rpm -qp --provides  varnish-3.0.3-1.el6.x86_64.rpm
config(varnish) = 3.0.3-1.el6
libvarnish.so()(64bit)
libvarnishcompat.so()(64bit)
libvcl.so()(64bit)
libvgz.so()(64bit)
libvmod_std.so()(64bit)
varnish = 3.0.3-1.el6
varnish(x86-64) = 3.0.3-1.el6

となっているvarnishのパッケージを

$ sudo yum install "config(varnish)"

でインストールできる仕組み。
この挙動自体は知っていたがvirtual packageという名前なのは初めて知った。

allow_virtual parameter will be changing its default value from false to true in a future release.

とのことなので、将来的にallow_virtualのデフォルト値がfalseからtrueになるよとの警告。

もっときれいな対応があるのかもしれないが、
以下の記述を設定に追加して、allow_virtualを明示的に指定することで出力を抑止。

# avoid allow_virtual warnings.
Package { allow_virtual => true }