すずけんメモ

技術メモです

unless文の使い方

unlessというのを知ったのでメモ。たとえばmysqlのインストールをサクッとしたいという場合にrootパスワードを設定したくなる。そこでunlessを使うことによって、既にrootユーザにパスワードが設定されているかどうかを調べることができる。

class mysql-server::config {
  $password = "pass"

  exec { "Set MySQL server root password":
    subscribe => Package["mysql-server"],
    refreshonly => true,
    unless => "mysqladmin -uroot -p$password status",
    path => "/bin:/usr/bin",
    command => "mysqladmin -uroot password $password",
  }
}

execだとどうしても実行しっぱなしで冪等性担保しづらくなりがちだけど、unlessうまく使えばいい感じにできるかもしれない。

http://docs.puppetlabs.com/puppet/3/reference/lang_conditional.html#unless-statements