OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2

2,425 views
2,376 views

Published on

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,425
On SlideShare
0
From Embeds
0
Number of Embeds
480
Actions
Shares
0
Downloads
245
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2

  1. 1. OpenStackクラウド基盤構築ハンズオンセミナー 第1日 ハンズオンガイド No.2 Ver1.4 2014/02/25 1 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  2. 2. 第1日 ハンズオンガイド No.2 目次 ■ Puppetの利用 ■ Cloud-Initとの連携 注意:本テキストで扱うOpenStackは、RDO(Grizzly)がベースとなります。 2 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  3. 3. 第1日 ハンズオンガイド No.2 Puppetの利用 3 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  4. 4. 第1日 ハンズオンガイド No.2 演習内容 ■ この演習では、次の作業を行います。 - 「第1日 ハンズオンガイド No.1」で構築したOpenStackのクラウド上で、仮想マシンインスタ ンスを起動します。 - 仮想マシンインスタンス上で、Puppetのマニフェストを利用して、WebサーバとPostgreSQL サーバの導入・設定を行います。 Webサーバと PostgreSQLサーバを 導入・設定 OPST0-□ 仮想マシン インスタンス 接続 172.16.□.10 eth0 eth1 external01 172.16.0.0/16 IPマスカレード ホストLinux emX 外部ネットワーク 4 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  5. 5. 第1日 ハンズオンガイド No.2 仮想マシンインスタンスの起動 ■ 先の演習と同じ手順で、仮想マシンインスタンスを起動して、フローティングIPを割り 当てます。 - 仮想マシンインスタンスの名前は「test-□」で、インスタンスタイプは「m1.small」を使用し ます。 ● □はユーザ番号(1〜7)を入れて下さい。 - フローティングIPを割り当てたら、仮想マシン#0(OPST0-□)からログインして、puppetの パッケージをインストールします。 # ssh -i ~/mykey.pem fedora@172.16.1.51 [fedora@test-□ ~]$ sudo -i [root@test-□ ~]# yum -y install puppet - 次のコマンドでfirewalldサービスを導入して、起動しておきます。 ● 本来は、この設定もPuppetマニフェストで行うことができます。ここでは、単純なマニフェストでの練習の ため、手動で設定しています。 [root@test-□ ~]# yum -y install firewalld [root@test-□ ~]# systemctl start firewalld.service 5 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  6. 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.
  7. 7. 第1日 ハンズオンガイド No.2 Webサーバの導入・設定 (2) - Puppetマニフェスト 「apache.pp」の内容は右図の 通りです。コメントは入力しな くても構いません。 httpdパッケージを導入 httpdサービスを起動 コンテンツファイルを作成 iptablesの設定を変更 リソースの依存関係 (適用順序) package { 'httpd': ensure => latest, } # 最新バージョンを導入 service { 'httpd': ensure => running, enable => true, hasrestart => true, hasstatus => true, } # # # # サービスを起動 サーバー起動時の自動起動を設定 「service xxxx restart」が利用可能 「service xxxx status」が利用可能 file { '/var/www/html/index.html': owner => 'apache', # ファイルオーナー group => 'apache', # ファイルグループ mode => '0600', # アクセス権 content => "<h1>This is $hostname.</h1>", } # ファイルの内容 exec { 'fw-http': path => '/usr/bin', # コマンドのパス command => 'firewall-cmd --add-service=http', } Package['httpd'] -> File['/var/www/html/index.html'] -> Service['httpd'] -> Exec['fw-http'] # 実行するコマンド 7 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  8. 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. 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. 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. 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.
  12. 12. 第1日 ハンズオンガイド No.2 PostgreSQLサーバの導入・設定 (4) - PostgreSQLサーバが稼働していることを確認します。 # psql -U postgres -l ユーザ postgres のパスワード: 「pas4pgsql」を入力 データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+----------+-------------------+----------------------postgres | postgres | EUC_JP | ja_JP | ja_JP | template0 | postgres | EUC_JP | ja_JP | ja_JP | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | EUC_JP | ja_JP | ja_JP | =c/postgres + | | | | | postgres=CTc/postgres (3 行) ■ 以上で「Puppetの利用」は終了です。 - 起動中の仮想マシンインスタンスは、削除しておいてください。 12 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  13. 13. 第1日 ハンズオンガイド No.2 メモとしてお使いください 13 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  14. 14. 第1日 ハンズオンガイド No.2 メモとしてお使いください 14 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  15. 15. 第1日 ハンズオンガイド No.2 Cloud-Initとの連携 15 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  16. 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. 17. 第1日 ハンズオンガイド No.2 仮想マシンインスタンスの起動 (1) ■ 仮想マシンインスタンスを起動します。この際、カスタマイズスクリプトにマニフェス トの取得と適用を行うスクリプトを入力します。 - 「第1日 ハンズオンガイド No.1」の「仮想マシンインスタンスの起動」と同じ手順で、Fedora 19の仮想マシンインスタンスの起動手順を進めます。 ● インスタンスタイプは「m1.small」を使用します。その他の項目は、下図の通りです。 17 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  18. 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. 19. 第1日 ハンズオンガイド No.2 仮想マシンインスタンスの起動 (3) - 仮想マシンインスタンスが起動した後にコンソール画面を開いてしばらく待つと、カスタマイズ スクリプトが実行される様子が確認できます。 ● 演習環境では、カスタマイズスクリプトの実行にはしばらく時間がかかります。 このあたりのメッセージが 表示されたら完了です。 19 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  20. 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.
  21. 21. 第1日 ハンズオンガイド No.2 メモとしてお使いください 21 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  22. 22. 第1日 ハンズオンガイド No.2 メモとしてお使いください 22 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  23. 23. 23 Copyright (C) 2014 National Institute of Informatics, All rights reserved.

×