OSSのサーバ構築自動化ツール、4製品徹底検証 2016年版:実際に検証済み!OSS徹底比較(4)サーバ構築自動化【後編】(2/8 ページ)
サーバ構築・運用自動化ソフトの中でも特に利用者の多い、「Chef」「Ansible」「Puppet」「Itamae」の4製品をピックアップ。「各ソフトの実行環境の構築手順」「OSSのBlog/CMS基盤であるWordPressの構築」を通じて、その違いを探り、体感いただく本連載。後編ではPuppet、Itamaeを紹介する。
Puppetのプロフィール
PuppetはPuppet 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.