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 $