Puppet?
Puppetをやろうず!というわたしもそんなに把握していないので、まずはシステム管理ツールと呼ばれているPuppetで何ができるん?というところから。
システムの構築の過程をざっくりと書きだすと
1.H/Wの準備・ネットワークの接続・ネットワーク設定・OSのインストール
2.パッケージ導入・OSインストール後のいろいろ・ソフトウェアのインストール・セットアップ
3.セキュリティアップデート・ソフトウェアのチューニング
こんな流れでしょうか。
Puppetが管理できるのは2番目からのようですが、それならインストール後にやっとけスクリプトでもできるやん!と思いますが、大きく違う点があるようです。
やっとけスクリプトは手続き型で、書いた通りにやるだけなので
システムの状態をなんでもは知らないけれど、知ってる事なら分かるというものだと思います。
Puppetは宣言型で、そのマニフェストを作った人だったら、システムの状態だったら何でも知っているという状態だと思います。
以下のページではもっと詳しく色々な事を書いてらっしゃるのでどうぞ。
Puppetのススメ Slideshare
インストールメモ
Puppetのマニフェストは独自の言語のようで、後半でやろうと思います。
サーバー・クライアント型のシステムなので、とりあえずインストールメモから入ります。
インストールはepelの2.7でも古いバージョンらしく、PuppetLabsのリポジトリを入れるのが望ましいとのことだ。
クライアント側はpuppetだけのインストールでOK。
# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-11.noarch.rpm
http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-11.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.LyLCpo: ヘッダ V4 RSA/SHA1 Signature, key ID 4bd6ec30: NOKEY
準備中... ########################################### [100%]
1:puppetlabs-release ########################################### [100%]
# yum install puppet puppet-server
Dependencies Resolved
====================================================================================================
Package Arch Version Repository Size
====================================================================================================
Installing:
puppet noarch 3.7.2-1.el6 puppetlabs-products 1.6 M
puppet-server noarch 3.7.2-1.el6 puppetlabs-products 24 k
Installing for dependencies:
augeas-libs x86_64 1.0.0-5.el6_5.1 sl-security 309 k
facter x86_64 1:2.3.0-1.el6 puppetlabs-products 97 k
hiera noarch 1.3.4-1.el6 puppetlabs-products 23 k
libselinux-ruby x86_64 2.0.94-5.3.el6_4.1 sl 98 k
ruby-augeas x86_64 0.4.1-3.el6 puppetlabs-deps 21 k
ruby-irb x86_64 1.8.7.352-13.el6 sl-security 313 k
ruby-rdoc x86_64 1.8.7.352-13.el6 sl-security 376 k
ruby-shadow x86_64 1:2.2.0-2.el6 puppetlabs-deps 13 k
rubygem-json x86_64 1.5.5-3.el6 puppetlabs-deps 763 k
rubygems noarch 1.3.7-5.el6 sl 206 k
Transaction Summary
====================================================================================================
Install 12 Package(s)
起動して、簡単なマニフェストを動かしてまいる
参考サイト
SouceForge.jp Puppetで行うLinuxシステムの自動設定と設定管理
設定ファイルはそのままで動くらしいので、とりあえず起動させてみる。
# service puppetmaster start
puppetmaster を起動中: [ OK ]
クライアントの方は初回はエラーが出るらしく、エラーが出た。
# puppet agent --test --server 192.168.0.1
Info: Creating a new SSL key for hogerock
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for hogerock
Info: Certificate Request fingerprint (SHA256): 70:F9:39:BA:FD:19:CD:8A:34:55:2F:4E:F7:77:1E:0B:21:B0:34:76:15:34:FB:2C:FE:47:B8:F6:2C:7F:17:10
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
証明書が勝手に登録されるらしいので、サーバー側で署名すればいいようだ。
# puppet cert list
"hogerock" (SHA256) 70:F9:39:BA:FD:19:CD:8A:34:55:2F:4E:F7:77:1E:0B:21:B0:34:76:15:34:FB:2C:FE:47:B8:F6:2C:7F:17:10
# puppet cert sign hogerock
Notice: Signed certificate request for hogerock
Notice: Removing file Puppet::SSL::CertificateRequest hogerock at '/var/lib/puppet/ssl/ca/requests/hogerock.pem'
では、もう1度クライアントを起動させてみるる。
DNSがどうのこうの、なんやかんやと文句を言われたけど/etc/hostsに登録して解決した。
Info: Caching catalog for hogerock
Info: Applying configuration version '1414975461'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.02 seconds
では、マニフェストを作ってみよう。
参考サイト
@iT 新人インフラ技術者のためのサーバー構築/運用自動化入門(3)
順調かに思えましたが、サーバー・クライアントと挟んだところで上手くいかなくなりました。
ただサーバー側のhostnameがどうもおかしいようでどうにもならない状態に。
別の問題としてじっくり今度やりたいと思います(´・ω・`)
おかしさを強調するかのように、サーバーとクライアントを逆にしてみたらさくっと上手くいきました。
重要なポイントだったのは時刻が同期しているか、DNSかhosts正引きができるかで、hostnameが上手くひけないとうまくいかないようです。
hostnameが何かおかしい場合は何回やってもダメです。
後は、/etc/sysconfig/puppet へは書き込まずに /etc/puppet/puppet.conf に書き込んだ方がうまくうごきました。
ローカル接続の場合、iptables等はローカルが空いていれば問題ないです。
# puppet agent --test --server hoge-net
Info: Caching certificate for hogex_server
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for hogex_server
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for hogex_server
Info: Applying configuration version '1414985041'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.02 seconds
うまくいけばこんな感じになります。
2回目以降で、何か更新があればまたこんな風になります。
# puppet agent --test --server hogex
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for hogex_server
Info: Applying configuration version '1414985857'
Notice: Finished catalog run in 0.02 seconds
サーバーからクライアントの場合、接続するIPアドレスで適用するマニフェストを絞ったりすることもできるので、マニフェストを管理していれば何台あっても同じものが作れます。
台数が大量になってくると、やっとけスクリプトでは難しいですね。さすがはPuppet=操り人形というだけある。
うーん。
時間がかかった割にちょっと納得できない出来なので次回もPuppet で。
もうちょっと色々な事をしてみようと思います。