lpic303 Puppet 01

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 で。

もうちょっと色々な事をしてみようと思います。

 

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です