• Like
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
Upcoming SlideShare
Loading in...5
×

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

  • 1,058 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,058
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
184
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. OpenStackクラウド基盤構築ハンズオンセミナー 第1日 ハンズオンガイド No.2 Ver1.4 2014/02/25 1 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 2. 第1日 ハンズオンガイド No.2 目次 ■ Puppetの利用 ■ Cloud-Initとの連携 注意:本テキストで扱うOpenStackは、RDO(Grizzly)がベースとなります。 2 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 3. 第1日 ハンズオンガイド No.2 Puppetの利用 3 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 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. 第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. 第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. 第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. 第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.
  • 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. 第1日 ハンズオンガイド No.2 メモとしてお使いください 13 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 14. 第1日 ハンズオンガイド No.2 メモとしてお使いください 14 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 15. 第1日 ハンズオンガイド No.2 Cloud-Initとの連携 15 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.
  • 21. 第1日 ハンズオンガイド No.2 メモとしてお使いください 21 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 22. 第1日 ハンズオンガイド No.2 メモとしてお使いください 22 Copyright (C) 2014 National Institute of Informatics, All rights reserved.
  • 23. 23 Copyright (C) 2014 National Institute of Informatics, All rights reserved.