ksaitoの日記

日々試したことの覚え書き

puppetで必要なパッケージをインストールする

移転しました。

自動的にリダイレクトします。

Debian/Ubuntuを初期設定するときに毎回インストールするパッケージがいくつかあります。
こうしたパッケージをpuppetで自動的にインストールするように設定してみました。
パッケージがインストールされていないと勝手にインストールされます。

class debianBase {
  package { "popularity-contest":
    name => "popularity-contest",
    ensure => installed
  }
  package { "screen":
    name => "screen",
    ensure => installed
  }
  package { "emacs":
    name => "emacs",
    ensure => installed
  }
}

node 'ubuntu' {
  include debianBase
}

packageのensureで使えるのは、下記のマニュアルによるとabsent,present(or installed), latestのみっつがあるようです。
http://puppet.reductivelabs.com/reference/typedocs.html#package
absentは、インストールされていたらアンインストールするパッケージを指定します。
telnetは、セキュアじゃないから禁止、sshを使おうという場合は、telnetをabsentというような使い方でしょうか。
installedは、必須でインストールするパッケージ、latestは、多分、最新があればアップグレードではないかと...(試していませんが)
以下は、telnetをabsentしたときの実行ログです。

$ sudo aptitude install telnetd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
Reading state information... 完了
Reading extended state information
Initialising package states... 完了
Building tag database... 完了
The following NEW packages will be installed:
  telnetd
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 64.4kB of archives. After unpacking 184kB will be used.
Writing extended state information... 完了
Get:1 http://jp.archive.ubuntu.com edgy/main telnetd 0.17-29 [64.4kB]
Fetched 64.4kB in 0s (79.5kB/s)
未選択パッケージ telnetd を選択しています。
(データベースを読み込んでいます ... 現在 113675 個のファイルとディレクトリがインストールされています。)
(.../telnetd_0.17-29_i386.deb から) telnetd を展開しています...
telnetd (0.17-29) を設定しています ...

ksaito@ubuntu:~$ dpkg -l | grep telnetd
ii  telnetd                                     0.17-29                              The telnet server

次に/etc/puppet/manifests/site.ppを下記のようにします。

class pkgabsentSample {
        package { "telnetd":
                name => "telnetd",
                ensure => absent
        }
}

node 'ubuntu' {
        include pkgabsentSample 
}

これでpuppetを実行するとtelnetパッケージはremoveされます。

$ sudo puppetd --test
Password:
info: Caching configuration at /etc/puppet/localconfig.yaml
notice: Starting configuration run
notice: //ubuntu/pkgabsentSample/package=telnetd/ensure: removed
notice: Finished configuration run in 1.90 seconds
$ dpkg -l | grep telnetd
rc  telnetd                                     0.17-29                              The telnet server
$