Vagrand, Puppet, Guard (6)

参考にしている Example42 なナニが更新されているのを確認。以下で取得。

git clone --recursive git://github.com/example42/puppet-modules-nextgen.git

実は cucumber 実行する時に以下な warning が出てまして

Dynamic lookup of $operatingsystem at (略) puppet-repo/modules/apache/manifests/params.pp:24 is deprecated. Support will be removed in Puppet 2.8. Use a fully-qualified variable name (e.g., $classname::variable) or parameterized classes.

一体これは何でしょ、というあたりから始まってます。で、色々探してみるに nextgen なナニを発見した訳です。

結論から言うと

  case $apache::operatingsystem {

とか

    $packagename = $operatingsystem ? {

みたいな記述は NG で

  case $::operatingsystem {

みたいな記述にしろよな、ということらしい。
# ってまだ試験していないのでアレですが (を

そりゃ良いとして

取得した nextgen な中の apt なパケジの記述を探してみたのですが導入な apt-get install の記述が無い。例えば jenkins というディレクトリがあったので中身を確認してみたのですが、導入云々は install.pp というマニフェストの以下な記述らしく以下 (一部のみ引用)。

class jenkins::install inherits jenkins {

  case $jenkins::install {

    package: {
      require jenkins::repository
      package { 'jenkins':
        ensure => $jenkins::manage_package,
        name   => $jenkins::package,
      }
    }

jenkins::repository は何処か、と言いつつ探してみたら repository.pp というファイルで中身の一部が以下。

class jenkins::repository inherits jenkins {

  case $::operatingsystem {

    ubuntu , debian: {
      file { 'jenkins.list':
        ensure  => present,
        path    => '/etc/apt/sources.list.d/jenkins.list',
        mode    => '0644',
        owner   => 'root',
        group   => 'root',
        content => 'deb http://pkg.jenkins-ci.org/debian binary/',
        before  => Exec['aptkey_add_jenkins'],
      }
      exec { 'aptkey_add_jenkins':
        command => 'wget -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -',
        unless  => 'apt-key list | grep -q D50582E6',
        path    => '/bin:/usr/bin',
      }
      exec { 'aptget_update_jenkins':
        command   => 'apt-get update',
        subscribe => File['jenkins.list'],
        path      => '/bin:/usr/bin',
      }

    }

ええと jenkins::install が package であるとすると init.pp に以下な記述がありますね。

  ### Managed resources
  # Installation is managed in dedicated class
  require jenkins::install

  if $jenkins::source or $jenkins::template or $jenkins::install == 'package' {
    file { 'jenkins.conf':
      ensure  => $jenkins::manage_file,
      path    => $jenkins::config_file,
      mode    => $jenkins::config_file_mode,
      owner   => $jenkins::config_file_owner,
      group   => $jenkins::config_file_group,
      require => Class['jenkins::install'],
      source  => $jenkins::manage_file_source,
      content => $jenkins::manage_file_content,
      replace => $jenkins::manage_file_replace,
      audit   => $jenkins::manage_audit,
    }
  }

ちょっと手元の環境に盛り込んで試験してみたいのですが、vagrant が動かず guard で云々することができていなかったりしてます。
とりあえず virtualbox だか vagrant だかの問題解決からやらないとorz

類推だらけのエントリ

全く申し訳ない限りなんですが、ご容赦頂ければ幸いです。