2015/12/30変更
ツール説明等はGitHub側に引っ越したので、こっちはtipsぽい内容に変更しました。
引越し先:https://github.com/kijibato/puppet-manifest-maker
説明は、README.ja.mdに記載しています。
puppet resource
puppet resourceコマンドを使うと、現在のリソースをPuppetのコードで表示することができます。
uesrリソースの中から、guestユーザを表示する例です。
# puppet resource user guest
user { 'guest':
ensure => 'present',
gid => '1000',
home => '/home/guest',
password => '$6$YtdVuKy6$qoKZLThvlBfSwc8hDj2sWAMx9/CM4Sss61nqOdjV9Zp2iI4QKD5jQgBuX5cKhflQFoRizNDh95nl55e8sqhAN1',
password_max_age => '99999',
password_min_age => '0',
shell => '/bin/bash',
uid => '1000',
}
fileリソースの中から、/etc/httpd/conf/httpd.confを表示する例です。
# puppet resource file /etc/httpd/conf/httpd.conf
file { '/etc/httpd/conf/httpd.conf':
ensure => 'file',
content => '{md5}3b1c36bd33644c783e13f634861b20c2',
ctime => '2015-10-29 13:07:35 +0000',
group => '0',
mode => '644',
mtime => '2015-10-29 13:07:35 +0000',
owner => '0',
type => 'file',
}
リファレンスによると利用可能なタイプを表示するにはtypeとありますが、表示されたタイプ全部がpuppet resourceで表示できるわけではないようです。
# puppet resource --types
また、user, groupなどは、タイプまでの指定で全ユーザ、全グループが表示されますが、fileなどはエラーになるなど、タイプごとにばらつきがあります。
# puppet resource user
user { 'adm':
...略...
}
user { 'apache':
...略...
}
...略...
# puppet resource file
Error: Could not run: Listing all file instances is not supported. Please specify a file or directory, e.g. puppet resource file /etc
ちなみに、puppet resourceコマンドのオプション指定などで値を書き換えると、実際にサーバの設定を変えることができたりします。
puppet resourceを活用する
このままだとちょっと足りないですが、サーバの状態をpuppet定義として表示する機能は便利なので、puppet resourceの結果を組み立ててマニフェスト化するツールを作りました。
GitHubで公開中です。公開場所は投稿の上部に記載しています。
Puppetマニフェストを作るとき、事前に設定確認のためにサーバを構築して、その後マニフェストにすることがたびたびあります。どうせなら手で設定したサーバから手軽にマニフェストが作れたら便利かなと。
ゼロベースからマニフェストを作るより、既存サーバの設定を有効活用してみようかなというものです。マニフェスト作成や、サーバからの設定ファイル類の回収が”ちりつも”でめんどうなので、その辺を自動化しています。