6. 第1日 ハンズオンガイド No.2
Webサーバの導入・設定 (1)
■
起動した仮想マシンインスタンス上で、Puppetを利用して、Webサーバを導入・設定
します。
- Puppetマニフェスト「~/work/apache.pp」を作成します。
●
マニフェストファイルの内容は次ページを参照。
●
演習環境に用意されたファイルを次のコマンドでダウンロードしても構いません。
# mkdir ~/work
# cd ~/work
# curl http://reposerver/files/apache.pp > apache.pp
- 「--noop」オプションでマニフェストを適用して、文法エラーが無いことを確認します。
●
演習環境では実行に少し時間がかかります。最終的に「Finished catalog run in x.xx seoncds」と表示されれ
ば成功です。
# cd ~/work
# puppet apply apache.pp --noop
Notice: Compiled catalog for test-99.openstacklocal in environment production in 2.26 seconds
Notice: /Stage[main]/Main/Package[httpd]/ensure: current_value absent, should be latest (noop)
Notice: /Stage[main]/Main/File[/var/www/html/index.html]/ensure: current_value absent, should be
file (noop)
Notice: /Stage[main]/Main/Service[httpd]/ensure: current_value stopped, should be running (noop)
Notice: /Stage[main]/Main/Exec[fw-http]/returns: current_value notrun, should be 0 (noop)
Notice: Class[Main]: Would have triggered 'refresh' from 4 events
Notice: Stage[main]: Would have triggered 'refresh' from 1 events
Notice: Finished catalog run in 3.63 seconds
6
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
8. 第1日 ハンズオンガイド No.2
Webサーバの導入・設定 (3)
- マニフェストを実際に適用します。
# puppet apply apache.pp
Notice: Compiled catalog for test-99.openstacklocal in environment production in 2.15 seconds
(中略)
Notice: /Stage[main]/Main/Service[httpd]/ensure: ensure changed 'stopped' to 'running'
Notice: /Stage[main]/Main/Exec[fw-http]/returns: executed successfully
Notice: Finished catalog run in 22.43 seconds
- httpdプロセスが起動していることを確認します。
# ps -ef | grep httpd
root
3214
1 0 19:16 ?
apache
3215 3214 0 19:16 ?
apache
3216 3214 0 19:16 ?
(以下省略)
00:00:00 /usr/sbin/httpd -DFOREGROUND
00:00:00 /usr/sbin/httpd -DFOREGROUND
00:00:00 /usr/sbin/httpd -DFOREGROUND
- ホストLinuxのデスクトップでFirefoxを開いて、導入したWebサーバーにアクセスします。仮想
マシンインスタンスのフローティングIPにアクセスすると、「This is test-□.」のメッセージが
表示されます。
●
先の演習で、セキュリティグループ「default」に80番ポートへのアクセス許可を追加しています。まだ追加
していない場合は、追加した後にアクセスしてください。
8
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
9. 第1日 ハンズオンガイド No.2
PostgreSQLサーバの導入・設定 (1)
■
先ほどと同じ仮想マシンインスタンス上で、Puppetを利用して、PostgreSQLサーバー
を導入・設定します。
- Puppetマニフェスト「~/work/pgsql.pp」と配布用設定ファイル「~/work/pg_hba.conf」を作
成します。
●
●
マニフェストファイルの内容は次ページを参照。
このマニフェストでは、次の設定ファイル「pg_hba.conf」を「/var/lib/pgsql/data/pg_hba.conf」に配布
します。
~/work/pg_hba.conf
# TYPE
local
host
host
●
DATABASE
all
all
all
USER
all
all
all
CIDR-ADDRESS
127.0.0.1/32
::1/128
METHOD
md5
md5
md5
演習環境に用意されたファイルを次のコマンドでダウンロードしても構いません。
# cd ~/work
# curl http://reposerver/files/pgsql.pp > pgsql.pp
# curl http://reposerver/files/pg_hba.conf > pg_hba.conf
9
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
10. 第1日 ハンズオンガイド No.2
PostgreSQLサーバの導入・設定 (2)
- Puppetマニフェスト「pgsql.pp」の内容は図の通りです。
exec {
'initdb':
path
command
logoutput
creates
notify
;
class pgsql_install {
package { 'postgresql-server':
ensure => latest,
}
}
class pgsql_service {
service { 'postgresql':
ensure
=> running,
hasrestart => true,
hasstatus => true,
enable
=> true,
}
}
class pgsql_init {
file { '/var/lib/pgsql/data/pg_hba.conf':
owner
=> 'postgres',
group
=> 'postgres',
Facter変数
mode
=> '0600',
source => "$manifest_dir/pg_hba.conf",
require => [Exec['initdb'], Exec['init_pw']],
}
=>
=>
=>
=>
=>
['/sbin', '/bin'],
'postgresql-setup initdb',
true,
'/var/lib/pgsql/data/PG_VERSION',
Exec['init_pw'],
'init_pw':
path
command
}
;
=> ['/sbin', '/bin'],
=> 'service postgresql start &&
su - postgres -c "psql -w -c
"ALTER USER postgres encrypted password 'pas4pgsql'"" &&
service postgresql stop',
logoutput
=> true,
refreshonly => true,
}
include 'pgsql_install'
include 'pgsql_init'
include 'pgsql_service'
Class['pgsql_install'] -> Class['pgsql_init'] ~> Class['pgsql_service']
Class['pgsql_install'] ~> Class['pgsql_service']
10
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
11. 第1日 ハンズオンガイド No.2
PostgreSQLサーバの導入・設定 (3)
- 「--noop」オプションでマニフェストを適用して、文法エラーが無いことを確認します。
●
環境変数「FACTER_manifest_dir」で、Facter変数「$manifest_dir」を設定しています。
●
最終的に「Finished catalog run in x.xx seoncds」と表示されれば成功です。
# export FACTER_manifest_dir=~/work
# cd ~/work
# puppet apply pgsql.pp --noop
Notice: Compiled catalog for test-99.openstacklocal in environment production in 2.33 seconds
Notice: /Stage[main]/Pgsql_install/Package[postgresql-server]/ensure: current_value absent,
should be latest (noop)
Notice: Class[Pgsql_install]: Would have triggered 'refresh' from 1 events
(中略)
Notice: Class[Pgsql_service]: Would have triggered 'refresh' from 1 events
Notice: Stage[main]: Would have triggered 'refresh' from 3 events
Notice: Finished catalog run in 4.00 seconds
- マニフェストを実際に適用します。
# puppet apply pgsql.pp
Notice: Compiled catalog for test-99.openstacklocal in environment production in 2.30 seconds
Notice: /Stage[main]/Pgsql_install/Package[postgresql-server]/ensure: created
Notice: /Stage[main]/Pgsql_init/Exec[initdb]/returns: Initializing database ... OK
Notice: /Stage[main]/Pgsql_init/Exec[initdb]/returns: executed successfully
(中略)
Notice: /File[/var/lib/pgsql/data/pg_hba.conf]/seluser: seluser changed 'unconfined_u' to
'system_u'
Notice: /Stage[main]/Pgsql_service/Service[postgresql]/ensure: ensure changed 'stopped' to
'running'
Notice: Finished catalog run in 29.27 seconds
11
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
16. 第1日 ハンズオンガイド No.2
演習内容
■
この演習では、次の作業を行います。
- 「第10回 All-in-one構成による導入演習」で構築したOpenStackのクラウド上で、仮想マシン
インスタンスを起動します。この際、「カスタマイズデータ」を利用して、GitHubからのマニ
フェスト取得と適用をゲストOS起動時に自動実行します。
●
具体的には、Webサーバを自動構築します。
OPST0-□
仮想マシン
インスタンス
GitHub
接続
172.16.□.10
eth0
GitHubからマニフェストを
取得して適用
eth1
IPマスカレード
external01 172.16.0.0/16
ホストLinux
emX
外部ネットワーク
16
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
17. 第1日 ハンズオンガイド No.2
仮想マシンインスタンスの起動 (1)
■
仮想マシンインスタンスを起動します。この際、カスタマイズスクリプトにマニフェス
トの取得と適用を行うスクリプトを入力します。
- 「第1日 ハンズオンガイド No.1」の「仮想マシンインスタンスの起動」と同じ手順で、Fedora
19の仮想マシンインスタンスの起動手順を進めます。
●
インスタンスタイプは「m1.small」を使用します。その他の項目は、下図の通りです。
17
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
18. 第1日 ハンズオンガイド No.2
仮想マシンインスタンスの起動 (2)
- 「作成後」タブで、「カスタマイズ・スクリプト」に下図のシェルスクリプトを入力して、「起
動」をクリックします。
●
setenforceコマンドは、Fedora 19のCloud-Initの既知の問題で、一時的にSELinuxを無効化する必要がある
ために入っています。
#!/bin/sh -x
GitRepository=https://github.com/enakai00/apache_puppet
ConfigTag=f18
setenforce 0
yum -y install puppet git
RepoName=${GitRepository##*/}
mkdir -p /tmp/gittmp
cd /tmp/gittmp
git clone $GitRepository
cd $RepoName
git checkout $ConfigTag
puppet apply main.pp
setenforce 1
18
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
19. 第1日 ハンズオンガイド No.2
仮想マシンインスタンスの起動 (3)
- 仮想マシンインスタンスが起動した後にコンソール画面を開いてしばらく待つと、カスタマイズ
スクリプトが実行される様子が確認できます。
●
演習環境では、カスタマイズスクリプトの実行にはしばらく時間がかかります。
このあたりのメッセージが
表示されたら完了です。
19
Copyright (C) 2014 National Institute of Informatics, All rights reserved.
20. 第1日 ハンズオンガイド No.2
Webサーバへのアクセス
■
ホストLinuxから自動構築したWebサーバに接続します。
- 仮想マシンインスタンスにフローティングIPを割り当てた後、ホストLinuxのデスクトップで
Firefoxを起動して「http://<フローティングIP>」にアクセスします。
●
●
■
先の演習で、セキュリティグループ「default」に80番ポートへのアクセス許可を追加しています。まだ追加
していない場合は、追加した後にアクセスしてください。
Nested KVM環境では、まれに、仮想マシンインスタンスの動作が不安定になる場合があります。Puppetの実
行に失敗した場合は、仮想マシンインスタンスを削除して、再度、試してください。
以上で演習は終了です。
- 起動中の仮想マシンインスタンスは、削除しておいてください。
20
Copyright (C) 2014 National Institute of Informatics, All rights reserved.