連載
» 2016年06月24日 05時00分 公開

実際に検証済み!OSS徹底比較(4)サーバ構築自動化【後編】:OSSのサーバ構築自動化ツール、4製品徹底検証 2016年版 (2/8)

[森元敏雄,TIS]

Puppetのプロフィール

 PuppetPuppet Labsが開発した製品で、2005年のPuppet Labs創設とともに、最初のStable版がリリースされている。ライセンスはApache License Ver 2.0で、現在の最新の安定バージョンは2016年4月26日にリリースされた4.4.2となっている。

 3.x系は全てRubyで作成されていたが、4.x系からHTTP API部分がJavaで開発されたpuppetserverに変更された。3.x系と4.x系の両方を使ってみたが、4.x系の方が処理が速く感じられた。ただ、4.x系からはpush型のpuppet kickコマンドが廃止されているので、本コマンドを使用したい場合は3.x系を選択する必要がある。Puppet 3.8.7でpuppet kickを使用する検証記事も用意しているので、必要であればご一読いただきたい。

Puppetのインストール

 今回の検証では、CentOS 7.2に最新の4.4.2をインストールしている。PuppetはJavaおよびRubyで開発されおり、サーバの設定を行うmanifestはPuppet独自形式のファイルを使用している。Puppet本体のインストールやmanifestの作成方法は、公式のドキュメントサイトに記載されている。3.x系と4.x系ではインストール手順が若干異なるので、インターネット上で情報を調べる場合は、注意が必要である。今回の検証におけるインストール手順は以下の通りだ。

サーバ側のインストール処理

1.インストール済みパッケージの更新

$ sudo yum update -y

2.puppetlabsリポジトリのインストール

$ sudo rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

※最新の4.x系のリポジトリとなる。3.x系を使用したい場合は、http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpmをインストールする必要がある。

3.puppetserverのインストール

$ sudo yum install -y puppetserver

4.site.ppファイルの作成

$ sudo touch /etc/puppetlabs/code/environments/production/manifests/site.pp

5.puppetserverのサービスの起動と自動起動の設定

$ sudo systemctl start puppetserver
$ sudo systemctl enable puppetserver

6.puppetserverのポートの解放

$ sudo firewall-cmd --add-port=8140/tcp --zone=public --permanent
$ sudo firewall-cmd --reload

node側のインストール処理

1.インストール済みパッケージの更新

$ sudo yum update -y

2.puppetlabsリポジトリのインストール

$ sudo rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

3.puppet-agentのインストール

$ sudo yum -y install puppet-agent

4.puppet agentの実行

 nodeのcertをサーバ側に登録することが目的となる。certが登録されていないため、処理自体はエラーとなる。

$ sudo /opt/puppetlabs/bin/puppet agent --test --server tissvv097
Info: Creating a new SSL key for tissvv096
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for tissvv096
Info: Certificate Request fingerprint (SHA256): 65:AC:2B:34:F9:7D:96:C5:8B:DE:B8:A7:93:05:0F:3C:13:12:68:DC:76:57:E4:72:02:43:FD:FC:FB:AD:74:B5
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled

※項番4.まではnode側だが、certの登録はサーバ側に戻る必要がある。Puppetはサーバ→node→サーバ→nodeと4回移動しながらインストールを完了させる必要がある。

サーバ側でのnodeのcertの登録

1.node側のcertの登録を確認

$ sudo /opt/puppetlabs/bin/puppet cert list tissvv096
  "tissvv096" (SHA256) AC:E0:52:7E:C8:61:BC:75:A8:EE:89:DA:5F:95:9E:9D:27:3D:3E:D3:89:EB:DE:AD:0E:DE:16:C4:CC:93:FF:EA

2.node側のcertを有効化

$ sudo /opt/puppetlabs/bin/puppet cert sign tissvv096
Notice: Signed certificate request for tissvv096
Notice: Removing file Puppet::SSL::CertificateRequest tissvv096 at '/etc/puppetlabs/puppet/ssl/ca/requests/tissvv096.pem'

3.node側のcertを有効化を確認

$ sudo /opt/puppetlabs/bin/puppet cert list tissvv096
+ "tissvv096" (SHA256) CE:4B:5F:F3:62:55:03:24:A0:32:C9:18:42:C6:10:5A:9D:57:3D:03:D2:4C:22:E2:7A:00:F0:BB:39:74:90:6F

node側でpuppet agentの実行を確認

1.puppet agentの実行

 今度はcertが登録されているため、処理は正常に終了する。ただsite.ppは空であるため、何も処理はされない。

$ sudo /opt/puppetlabs/bin/puppet agent --test --server tissvv097
Info: Caching certificate for tissvv096
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for tissvv096
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for tissvv096
Info: Applying configuration version '1463045733'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.01 seconds

 これでサーバ側、node側のpuppetのインストールと基本的な設定が完了し、サーバの構築と設定を行うmanifestを作成、実行することが可能となる。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。