Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
OpenStackをさらに”使う”技術
Docker/Ansible編
パート1 概要と基本操作
@irix_jp
openstackOpen source software to build public and private clou...
Table of Contents
 講義
 OpenStackが注目される背景
 全体概要
 利用方法と自動化を支援する機能
 自動化の重要性
 演習
 踏み台サーバーの作成
 画面の確認と操作方法
 リソースの作成(ネット...
講義
 OpenStackが注目される背景
 全体概要
 利用方法と自動化を支援する機能
 自動化の重要性
3
OpenStackが注目される背景
4
OpenStackが注目される背景
 世界、国内において年々OpenStackへの注目度が増加
 合わせて市場規模も拡大傾向
5
2010
2014
2015 Spring Vancouver 6000
2015 Autumn Tokyo ...
IT市場の変遷
 現在はオープンシステムからクラウドシステムへの移行時期
 システムの作り方、考え方が大きく変わるタイミング
6
Main Frame
1970~
Open System
1990~
Cloud
2010~
a few bi...
変革を誘発した原因
 コモディティ化の進行による価値観の変化
7
UnitPriceofITResources
Passage of Time
One of the Price Point
Point of Changing Business...
Good/Cheap/Fast から Fast/Fast/Fastへ
 OpenStack Sumit 2014
 Walt Disney Company
 社内ITインフラとしてOpenStackを導入
 コンシューマー向けITサービ...
システムアーキテクチャのパラダムシフト
9
http://www.slideshare.net/gmccance/cern-data-centre-evolution
全体概要
10
OpenStackとは?
 OSSで開発されるCloudOS
 様々なITリソースを抽象化し、標準的な操作手法を提供
11
http://www.openstack.org/software/
OpenStackの特徴
 様々なITリソースを抽象化して、標準的な操作APIを提供
 演算リソース、データ格納リソース、ネットワーキングリソースを中心にそ
の周辺リソースを対象範囲とする。
 マイクロコントローラー構造
 機能単位でコ...
マイクロコントローラー構造
 本講義では、赤線部分のIaaS機能にフォーカスします。
13
Nova Glance Cinder SwiftNeutron
仮想ネットワーク制御
ハイパーバイ
ザー制御
イメージ
SnapShot管理
ブロック...
プラグイン・ドライバ構造
14
OpenStack
(novaの例)
KVM用
ドライバ
Xen用
ドライバ
商用製品用
ドライバ
KVMサーバ Xenサーバ
VMwareサーバ
Hyper-Vサーバ
OpenStack API
Amazon互...
ユーザーのプラグイン・ドライバの選択傾向
15
2015 Oct User Survey
http://www.openstack.org/assets/survey/Public-User-Survey-Report.pdf
利用方法と自動化を支援する
機能
16
OpenStackの操作方法
 OpenStackでは以下の3つの操作方法が提供されています。
 Dashboard(Horizon)
 最も簡単で直感的。ただし一部複雑な操作はできない
 コマンドライン
 最も一般的で利便性が高い。...
Dashboard(Horizon)
 コンポーネントの一つであるHorizonが提供する、Webのダッ
シュボードです。
 簡易的な操作が一通り行えますが、複雑な作業はできません。
 主に、コマンドラインやREST APIを利用して作成...
コマンドライン
 OpenStackのコンポーネントに対応したコマンドです。代表的なコマンドは以下です。
 nova
 neutron
 glance
 cinder
 keystone
 swift
 これらのコマンドはPyt...
REST API
 OpenStackが提供する最も基本の機能です。
 それぞれのコンポーネントが独自のAPIサーバープロセスを持ち(nova-api, neutron-api
等)、そのプロセスへREST形式のアクセスを行うことで、操作を...
OpenStackが提供する機能
 ユーザーはプロジェクト(テナント)に属します。
 ユーザーはプロジェクトに与えられたクォータ内で自由な環境を構築することができます。
 仮想マシン(もしくはベアメタルサーバー)
 仮想ネットワーク、仮...
キーペア
 事前に作成したキーペアの公開鍵を、起動するインスタンスへ
設定する機能です。
 シンプルな機能ですが、自動化の実現とセキュリティを確保す
る上で極めて重要な機能になります。
 10台程度までは毎回ログインすることも可能かもしれ...
userdata
 起動するインスタンスに対して、実行するスクリプトを与えることができます。
 既にここまでの演習でも利用しています。
 様々なスクリプトを準備しておくことで、起動時に共通の設定等を入れ込む事が可能に
なります。
 環境...
metadata
 インスタンスに対して特定のデータを与えることが可能です。
 key=value形式でデータを与えます。
 インスタンス内部から http://169.254.169.254/ へアクセスすることでいつでもデータが参
照...
config-drive
 config-driveを利用すると、metadataサーバーに与えたデータをディスク経
由で受け取る事が可能です。
 ディスク領域としてOSにマウントされます。
 metadataはkey=valueのデータ...
cloud-init
 OpenStackの標準機能ではありませ
んが、クラウド上でインスタンスの各
種初期設定を行うためのデファクト
パッケージです。
 RH系Linuxや、Ubuntu、Windows等
で幅広く動作します。
 インス...
自動化の重要性
27
インフラコストと人件費
 インフラリソースの単価が下がり続ける事で、使用されるリソース量は増加の一途
 一方で、そのリソースを制御する人件費は、リソース量に比例して増加してしまう。
 自然な考え方として、「インフラの操作を自動化してコスト...
自動化のメリット
 自動化することで様々なメリットが得られます。
 特に繰り返しや品質の向上という人間では限界のある作業に対して、
効果を発揮します。
 自動化によって、従来はコスト的に難しかった事が実現可能になります。
 本番環境と同...
自動化のデメリット
 一方で自動化のデメリットも存在しています。
 自動化の仕組みを作りこむ必要がある。
 単純な追加コストとして発生します。
 標準化されていない環境での自動化は高コスト。
 作りこみに手間がかかる
 再利用性が低...
適用シーン
 より大規模に利用する。
31
業務A用
自動化
プログラム
業務B用
自動化
プログラム
業務C用
自動化
プログラム
業務A用
手順書
業務B用
手順書
業務C用
手順書
業務A 業務B 業務C 業務A 業務B 業務C
ope...
適用シーン
 ライフサイクル全体に適用する。
32
開発用
自動化
プログラム
本番用
自動化
プログラム
運用用
自動化
プログラム
開発用
手順書
本番用
手順書
運用用
手順書
開発 本番 運用
openstack
開発本番運用共通
自...
OpenStackの効用
 自動化をより大規模に、ライフサイクル全体で、標準化して利
用することで効果を最大化できます。
33
開発 本番 運用
システムA
システムB
システムC
・
・
・
☺
構築に含まれる要素
 環境を構築するという作業を分解していくと、下図のように分
類できます。
 仮想マシンや仮想ネットワークを構成し、そこでOpenStackから戻る値
(IPアドレス)等を利用して、アプリケーション内部の設定を行っていき
...
更なる効率化
 クラウドに対する操作も、アプリケーションに対する操作も、両
方を行えるツールを利用することで、データを受け渡しを簡略
化し、更に高度な自動化が実現可能です。
35
インフラリソースを
構成する
アプリケーションを
構成する
構...
各種ツールの特性
 様々なツールが存在していますが、絶対的にどれが優れている
というのはありません。
 ツールごとに根底の思想があり、その思想に適合した使い方
をすればとても有益ですが、思想に反した使い方をするととて
も使いにくくなります。...
演習
 踏み台サーバーの作成
 画面の確認と操作方法
 リソースの作成(ネットワーク、ボリューム)
 UserdataとMetadataを使った自動化
 後片付け(次の演習に向けて)
37
踏み台サーバーの準備
38
演習の概要
 OpenStackのダッシュボードを操作して自分用の踏み台サー
バーを構築します。
 コマンドラインを利用して簡単なサーバー構築を行います。
 OpenStackの基本機能を用いた自動化に挑戦します。
39
サポート環境へのアクセス
 講師の指示するアドレスへブラウザでアクセスしてください。
 アクセス先にOpenStackのダッシュボードアドレスと、ログイン情報が確
認できます。
40
http://192.168.253.48/p/ood2...
環境へのログイン
 OpenStackのダッシュボードへログインしてください。
41
ログイン画面 ログイン後初期画面
初期状態の確認
 初期状態では、外部ネットワークに接続された1つの仮想ルーター
Ext-Routerと、この仮想ルーターへ接続された、テナントネットワー
ク work-net が存在しています。
 確認できない方は講師に連絡してください。
...
仮想マシン作成の準備
 作成する仮想マシンへ設定するキーペアを準備します。
43
(3)
Create Key Pair を選択
(4)
key-for-step を入力
(5)
Create Key Pair を選択
(2)
Key Pai...
仮想マシン作成の準備
 作成する仮想マシンへ設定するキーペアを準備します。
44
作成したキーペアの秘密鍵のダウンロード
が始まります。
後で使いますのでわかりやすい場所に保存
しておいてください。
秘密鍵は再ダウンロード出来ませんのでご
注...
仮想マシンを作成
 仮想マシンを作成していきます。
45
(1)
Instances を選択
(2)
Launch Instance を選択
インスタンスのパラメーター1
 以下に従い、パラメーターの指定と確認を行います。
46
step-server を入力
m1.small を選択
Boot from image を選択
CentOS7 を選択
インスタンスのパラメーター2
 以下に従い、パラメーターの指定と確認を行います。
47
key-for-step を選択
default にチェックを入れる
Selected networks に work-net が含ま
れている事を確認
...
インスタンスのパラメーター3
 以下に従い、パラメーターの指定と確認を行います。
48
Direct Input を選択
以下を入力
#!/bin/bash
echo "Hello World" > /hello.txt
Launch を押下...
作成したインスタンスの確認
 インスタンスの作成に成功すると、作成したインスタンスの状
態がACTIVEになります。
49
Floating IPの割当て
 作成したインスタンスは、OpenStack内部のネットワーク接続
されており、このままでは外部からアクセスすることができませ
ん。
 そこで、踏み台サーバーへFloating IP を割当てて外部からの
ア...
Floating IPの割当て
51
+ を押下
ext-net_1214 を選択
Allocate IP を押下
IPアドレスが取得されていることを確認
(アドレスは毎回かわります)
Associate を押下
Floating IPの割当てを確認
 Floating IPの割当てに成功すると、インスタンスの一覧から
割り当てたアドレスが確認できます。
52
Instances を選択して、リロード
先ほど割り当てたIPが確認でき
るはずです。
インスタンスへのアクセス
 作成したインスタンスへSSHでアクセスします。
 先ほどダウンロードしたSSH秘密鍵を使って、Floating IPのアドレスへ接続
してください。
 ログインユーザ名は centos になります。
 ログイ...
OpenStackクライアント環境の整備
 作成した踏み台サーバーから各種OpenStackコマンドを実行
できるようにします。
54
[centos@step-server ~]$ sudo -i
[root@step-server ~]#...
コマンドのテスト
 踏み台サーバーからコマンドが実行できるかを確認します。
55
[centos@step-server ~]$ source openrc
[centos@step-server ~]$ nova list
+-------...
画面の確認と操作方法
56
演習の概要
 OpenStackのダッシュボードで行える操作を体験していきます。
57
Overview
 テナント内の利用状況を確認できます。
 テナントにはクォータが設定されており、そのクォータに対して、どの程度の
リソースを消費しているかを確認できます。
58
選択
Instances
 インスタンスの一覧を確認できます。
 ここでは起動したインスタンスの状態や、割当てられたIPが確認でき
ます。
 また、各インスタンスの削除や、コンソールの確認、起動ログの確認
といった操作が行えます。
59
選択
...
Volumes
 作成したボリューム一覧の確認と、ボリュームに対する各種操
作が行えます。
 今回はまだボリュームは作成されていません。
60
選択
Images
 利用できるイメージの一覧が確認できます。
 ここには、作成したインスタンスのスナップショットも表示されま
す。
61
選択
Access & Security
 セキュリティグループの一覧です。セキュリティグループは簡易的なファイ
アーウォールを提供しています。
 defaultはテナント作成時に自動で作成され、今回の環境ではSSH, HTTP通信が
許可される...
Access & Security
 取得したFloating IPの一覧を確認、操作可能です。
 またAPIのエンドポイントの確認と、コマンドラインを実行する
ための環境変数設定ファイル等のダウンロードが可能です。
63
選択
選択
Network Topology
 ネットワークの接続や全体概要を確認できます。
 各オブジェクトをクリックすると、そのオブジェクトの詳細を確認可能です。
 今回の環境では、外部ネットワークに接続された仮想ルーターと、この仮想ルーターに
...
Networks
 作成した仮想ネットワークの確認と操作が行えます。
 今回の work-net は講師によって作成されています。
65
選択
Routers
 作成した仮想ルーターと操作が行えます。
 Ext-Routerは講師によって作成されています。
66
選択
リソースの作成
 ネットワーク
 ボリューム
67
仮想ネットワークの作成
 OpenStackではユーザが自由に仮想ネットワークを構築できます。
 他のユーザとアドレス帯やIPアドレスそのものが重複していても問題はあり
ません。
 Neutronの仮想ネットワーク機能が、個々のネットワー...
仮想ネットワークの作成
 172.16.200.0/24 のサブネットを持つ my-network を作成します。
69
my-network を入力
Next を押下
my-subnet を入力
172.16.200.0/24 を入力
17...
仮想ネットワークの作成
 入力内容に問題がなければ仮想ネットワークが作成できます。
 このネットワークは自分のテナント内専用で、他のテナントユーザーから利
用されることはありません。
70
何も入力しません。
ここでは必要に応じで、DHCP...
仮想ボリュームの作成
 続いて仮想ボリュームを作成してインスタンスへ接続します。
71
選択
仮想ボリュームの作成
 1GBの新規ボリュームを作成します。
72
my-vol を入力
1 を入力
仮想ボリュームの作成
 作成したボリュームをインスタンスへ接続します。
73
Manage Attachment を
選択
step-server を選択
Attach Volume
を選択
仮想ボリュームの作成
 接続したボリュームをインスタンスから確認してみます。
 OSからは、このボリュームは通常のディスクとして操作可能です。
74
$ ssh -i key-for-step.pem centos@192.168.253....
Userdata と Metadata を利用
した簡単な自動化
75
概要
 ここでは、Etherpad環境をUserdata, Metadaの2つを使って
自動構築を試してみます。
 既に自動化のスクリプトは作成済みですので、スクリプトを実
行しながら、中身を見ていきます。
76
自動構築の実行
 スクリプトをダウンロードして実行します。
77
[centos@step-server ~]$ curl -o 1st_etherpad.sh http://reposerver/handson/20151214-ood20...
構築の確認
 スクリプトが完了したらブラウザで割当てられたFloating IPを確認
し、ブラウザでアクセスしてください。
 問題がなければ、Etherpad の初期画面が表示されます。
78
[centos@step-server ~]...
スクリプトの解説
79
#!/bin/bash
function if_error_exit() { echo "Error: $1"; exit 1; }
function get_uuid () { cat - | grep " id " ...
スクリプトの解説
80
~~~~(省略)~~~~
## Nginx
FIP=`curl -S -s http://169.254.169.254/openstack/latest/meta_data.json | python -c "impo...
まとめ
 このように、簡単な環境であればOpenStack標準機能のみで
自動化が可能です。
 しかし、サーバー台数が2台、3台と増えていくに従い、標準
機能だけでの構築は難しくなってきます。
 そのような場合には、OpenStackと連...
後片付け(次の演習に向け
て)
82
続く演習を行うために
 踏み台サーバーの導入と、OpenStackクライアントコマンドの導入までは完了
しているひつようがあります。
 踏み台サーバーから nova list や、 neutron net-list 等が実行可能になっている...
84
Part1は以上になります
Upcoming SlideShare
Loading in …5
×

OpenStackをさらに”使う”技術 概要と基礎操作

2,845 views

Published on

OOD2015ハンズオン資料です。

Published in: Technology

OpenStackをさらに”使う”技術 概要と基礎操作

  1. 1. 1 OpenStackをさらに”使う”技術 Docker/Ansible編 パート1 概要と基本操作 @irix_jp openstackOpen source software to build public and private clouds.
  2. 2. Table of Contents  講義  OpenStackが注目される背景  全体概要  利用方法と自動化を支援する機能  自動化の重要性  演習  踏み台サーバーの作成  画面の確認と操作方法  リソースの作成(ネットワーク、ボリューム)  UserdataとMetadataを使った自動化  後片付け 2
  3. 3. 講義  OpenStackが注目される背景  全体概要  利用方法と自動化を支援する機能  自動化の重要性 3
  4. 4. OpenStackが注目される背景 4
  5. 5. OpenStackが注目される背景  世界、国内において年々OpenStackへの注目度が増加  合わせて市場規模も拡大傾向 5 2010 2014 2015 Spring Vancouver 6000 2015 Autumn Tokyo 5000 2016 Spring Austin 2016 Autumn Barcelona Attendees of OpenStack Summit IDC Japan 株式会社「国内OpenStackエコシステム市場予測」2015年10月26日 http://www.idcjapan.co.jp/Press/Current/20151026Apr.html
  6. 6. IT市場の変遷  現在はオープンシステムからクラウドシステムへの移行時期  システムの作り方、考え方が大きく変わるタイミング 6 Main Frame 1970~ Open System 1990~ Cloud 2010~ a few billion yen 7 to 10 years 1 year a few million yen 3 to 5 years a few months a few hundred yen a few hour a few minutes Unit Price of Resources Depreciation Term Time to Prepare
  7. 7. 変革を誘発した原因  コモディティ化の進行による価値観の変化 7 UnitPriceofITResources Passage of Time One of the Price Point Point of Changing Business Model Before the Cloud After the Cloud Singularity
  8. 8. Good/Cheap/Fast から Fast/Fast/Fastへ  OpenStack Sumit 2014  Walt Disney Company  社内ITインフラとしてOpenStackを導入  コンシューマー向けITサービスと同じスピード感で  社内ITサービスを提供 8 https://www.youtube.com/watch?v=SREEnNQ6zqg Before After
  9. 9. システムアーキテクチャのパラダムシフト 9 http://www.slideshare.net/gmccance/cern-data-centre-evolution
  10. 10. 全体概要 10
  11. 11. OpenStackとは?  OSSで開発されるCloudOS  様々なITリソースを抽象化し、標準的な操作手法を提供 11 http://www.openstack.org/software/
  12. 12. OpenStackの特徴  様々なITリソースを抽象化して、標準的な操作APIを提供  演算リソース、データ格納リソース、ネットワーキングリソースを中心にそ の周辺リソースを対象範囲とする。  マイクロコントローラー構造  機能単位でコンポーネントが分離しており、それぞれ独立動作する。  プラグイン・ドライバ構造  各コンポーネントは、制御対象に合わせてプラグイン、ドライバ構造を採 用しており、制御対象に合わせて組み合わせ可能  ほぼ100% Pyhton 実装  一部の機能(ダッシュボード等)にJS等の別言語が利用されています が、基本的には全てPythonによって実装されています。 12
  13. 13. マイクロコントローラー構造  本講義では、赤線部分のIaaS機能にフォーカスします。 13 Nova Glance Cinder SwiftNeutron 仮想ネットワーク制御 ハイパーバイ ザー制御 イメージ SnapShot管理 ブロック ストレージ制御 オブジェクト ストレージ VPNaaS L3 L2/LBaaS FWaaS Heat オーケストレーションTrove DBaaS Ceilometer 統計情報の収集・アラート発信 Keystone 認証・認可 Sahara DPaaS Ironic ベアメタル プロビジョニング
  14. 14. プラグイン・ドライバ構造 14 OpenStack (novaの例) KVM用 ドライバ Xen用 ドライバ 商用製品用 ドライバ KVMサーバ Xenサーバ VMwareサーバ Hyper-Vサーバ OpenStack API Amazon互換API ユーザやプログラムは、 OpenStackの利用方法だけを 知っていれば環境の操作が可能 コンテナ用 ドライバ LXC Docker
  15. 15. ユーザーのプラグイン・ドライバの選択傾向 15 2015 Oct User Survey http://www.openstack.org/assets/survey/Public-User-Survey-Report.pdf
  16. 16. 利用方法と自動化を支援する 機能 16
  17. 17. OpenStackの操作方法  OpenStackでは以下の3つの操作方法が提供されています。  Dashboard(Horizon)  最も簡単で直感的。ただし一部複雑な操作はできない  コマンドライン  最も一般的で利便性が高い。ほぼ全ての操作が可能。ただし高度な自動化には限界があ る。  REST API  最も柔軟性があり全ての操作が可能。他のプログラムから連携することが前提で、高度な 自動化を実現したい場合に利用する。  これらの関係は以下の通り。  どの操作方法も、最終的にはREST APIをコールしている。 17 openstack openstack clent library CLI Dashboard Other Programs/Tools Direct Call REST API REST API REST API
  18. 18. Dashboard(Horizon)  コンポーネントの一つであるHorizonが提供する、Webのダッ シュボードです。  簡易的な操作が一通り行えますが、複雑な作業はできません。  主に、コマンドラインやREST APIを利用して作成した環境の 確認に利用します。 18
  19. 19. コマンドライン  OpenStackのコンポーネントに対応したコマンドです。代表的なコマンドは以下です。  nova  neutron  glance  cinder  keystone  swift  これらのコマンドはPythonのクライアントライブラリを含んでおり、導入するとこのライブ ラリも利用可能になります。 19 $ nova list (見やすいように整形しています) +--------------------------------------+------------------+--------+------------+-------------+-----------------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+------------------+--------+------------+-------------+-----------------------------------------------+ | 5173dd67-abd0-41b5-b41f-ff89ed7e3311 | console | ACTIVE | - | Running | work-net=192.168.100.4, 157.1.141.210 | | 75c6d969-fbb0-4082-a56c-f0532339d9ef | openstack-single | ACTIVE | - | Running | floating-net=172.16.100.100, | | | | | | | 172.16.100.101, 172.16.100.102, | | | | | | | 172.16.100.103, 172.16.100.104; | | | | | | | work-net=192.168.100.10 | +--------------------------------------+------------------+--------+------------+-------------+-----------------------------------------------+ $ neutron net-list +--------------------------------------+--------------+-------------------------------------------------------+ | id | name | subnets | +--------------------------------------+--------------+-------------------------------------------------------+ | fc8869b7-aca1-4e06-84c0-94a831374753 | floating-net | 722ba04e-66db-4035-9da2-44b3edf95209 172.16.100.0/24 | | 359235e4-7090-40f5-93dc-be105041d46a | work-net | a01624a3-c340-475b-b124-006fdc30bd11 192.168.100.0/24 | | 63c67570-ba92-463a-b34c-2b9c1fff628c | public | a2f49fe1-ac9b-4189-86da-2ef24328a883 | +--------------------------------------+--------------+-------------------------------------------------------+
  20. 20. REST API  OpenStackが提供する最も基本の機能です。  それぞれのコンポーネントが独自のAPIサーバープロセスを持ち(nova-api, neutron-api 等)、そのプロセスへREST形式のアクセスを行うことで、操作を行います。  以下は仮想マシンの一覧を取得する例です。  実行するとJSON形式の応答が返ります。 20 $ curl -g -i -X GET http://157.1.141.7:8774/v2/243f55729ce9487e933c1608c6673f6b/servers/detail -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X- Auth-Token: {SHA1}27c18d7e2b198f8b04eec2e8140f3e00d8c5931a" {"servers": [{"status": "ACTIVE", "updated": "2015-11-18T06:33:08Z", "hostId": "a39630fb6d291f98e2ca123f727e816d4caaa6799d4eaa54f9079ced", "addresses": {"work-net": [{"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:65:39:84", "version": 4, "addr": "192.168.100.10", "OS-EXT-IPS:type": "fixed"}], "floating-net": [{"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.100", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.101", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.102", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.103", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:15:aa", "version": 4, "addr": "172.16.100.104", "OS-EXT-IPS:type": "fixed"}]}, "links": [{"href": "http://157.1.141.7:8774/v2/243f55729ce9487e933c1608c6673f6b/servers/6bfdf459-0519-46e0-b690-e1357cc6e25b", "rel": "self"}, {"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/servers/6bfdf459-0519-46e0-b690-e1357cc6e25b", "rel": "bookmark"}], "key_name": "my-key", "image": {"id": "a3d7276a-5c77-4c05-9919-1d16106a6fde", "links": [{"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/images/a3d7276a-5c77-4c05-9919-1d16106a6fde", "rel": "bookmark"}]}, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2015-11-18T06:33:08.000000", "flavor": {"id": "4", "links": [{"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/flavors/4", "rel": "bookmark"}]}, "id": "6bfdf459-0519-46e0-b690-e1357cc6e25b", "security_groups": [{"name": "default"}, {"name": "default"}], "OS-SRV-USG:terminated_at": null, "OS-EXT-AZ:availability_zone": "nova", "user_id": "335b60ff72424ab4b387ed001729d26d", "name": "openstack-single", "created": "2015-11-18T06:32:58Z", "tenant_id": "243f55729ce9487e933c1608c6673f6b", "OS- DCF:diskConfig": "MANUAL", "os-extended-volumes:volumes_attached": [], "accessIPv4": "", "accessIPv6": "", "progress": 0, "OS-EXT-STS:power_state": 1, "config_drive": "", "metadata": {}}, {"status": "ACTIVE", "updated": "2015-11-16T16:57:25Z", "hostId": "3fa7ae0361a6f19fe2e1b22e0621191a7994e9ceed8c41d03a51dd50", "addresses": {"work- net": [{"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:d5:a2:92", "version": 4, "addr": "192.168.100.4", "OS-EXT-IPS:type": "fixed"}, {"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:d5:a2:92", "version": 4, "addr": "157.1.141.210", "OS-EXT-IPS:type": "floating"}]}, "links": [{"href": "http://157.1.141.7:8774/v2/243f55729ce9487e933c1608c6673f6b/servers/5173dd67-abd0-41b5-b41f-ff89ed7e3311", "rel": "self"}, {"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/servers/5173dd67-abd0-41b5-b41f-ff89ed7e3311", "rel": "bookmark"}], "key_name": "key-for-console", "image": {"id": "818afbad-6f61-462f-aade-1482b0312f85", "links": [{"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/images/818afbad-6f61-462f-aade- 1482b0312f85", "rel": "bookmark"}]}, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2015-11-16T16:57:25.000000", "flavor": {"id": "2", "links": [{"href": "http://157.1.141.7:8774/243f55729ce9487e933c1608c6673f6b/flavors/2", "rel": "bookmark"}]}, "id": "5173dd67-abd0-41b5-b41f-ff89ed7e3311", "security_groups": [{"name": "default"}], "OS-SRV-USG:terminated_at": null, "OS-EXT-AZ:availability_zone": "nova", "user_id": "335b60ff72424ab4b387ed001729d26d", "name": "console", "created": "2015-11-16T16:56:41Z", "tenant_id": "243f55729ce9487e933c1608c6673f6b", "OS-DCF:diskConfig": "AUTO", "os-extended- volumes:volumes_attached": [], "accessIPv4": "", "accessIPv6": "", "progress": 0, "OS-EXT-STS:power_state": 1, "config_drive": "", "metadata": {"role": "console- server"}}]}
  21. 21. OpenStackが提供する機能  ユーザーはプロジェクト(テナント)に属します。  ユーザーはプロジェクトに与えられたクォータ内で自由な環境を構築することができます。  仮想マシン(もしくはベアメタルサーバー)  仮想ネットワーク、仮想ルーター  ブロックストレージ、バックアップ、スナップショット  イメージ操作、バックアップ  他のOpenStackプロジェクトを組み込むと更に多数の機能が利用可能になります。 21 プロジェクトA プロジェクトB 仮想ルーター 仮想ネットワーク 仮想サーバー (or ベアメタルサーバー) ブロックストレージ 外部ネットワーク
  22. 22. キーペア  事前に作成したキーペアの公開鍵を、起動するインスタンスへ 設定する機能です。  シンプルな機能ですが、自動化の実現とセキュリティを確保す る上で極めて重要な機能になります。  10台程度までは毎回ログインすることも可能かもしれませんが、100台、 200台となった場合には手動での作業はオーバーヘッドが大きくなりすぎ てしまいます。 22 novaに登録された公開鍵を インスタンス作成時に自動設定 ペアとなる秘密鍵を持つユーザ、もしくは プログラムは、認証情報を知らなくてもログインして 各種操作が可能
  23. 23. userdata  起動するインスタンスに対して、実行するスクリプトを与えることができます。  既にここまでの演習でも利用しています。  様々なスクリプトを準備しておくことで、起動時に共通の設定等を入れ込む事が可能に なります。  環境を作成しなおす場合にも、このスクリプトに設定項目を記述しておくことで、何度でも作りなおしが 可能です。  設定できる形式は、従来のシェルスクリプト形式と、cloud-config形式が選択できます。  同時に利用することもできます。その場合はMIMEのマルチパート形式で2つを結合したファイルを起 動時に与えます。  与えたファイルは、後述するcloud-initから実行されます。 23 [fedora@console ~]$ nova boot --flavor m1.large --image "CentOS7-1509" ¥ --user-data userdata_pre_openstack.txt ¥ --key-name my-key --security-groups open_all ¥ --nic port-id=${PORTID1} --nic port-id=${PORTID2} openstack-single #!/bin/bash setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config dnf update -y -q LANG=C dnf groupinstall -y -q "LXDE Desktop" LANG=C dnf groupinstall -y japanese-support LANG=C dnf langinstall -y ja_JP dnf install -y firefox vim dnf install -y git #cloud-config password: password chpasswd: { expire: False } ssh_pwauth: True cloud-config 形式はyaml形式で定義さ れたコマンドとデータを記述していきます。 詳細についてに公式ドキュメントを参照ください。 https://cloudinit.readthedocs.org/en/latest/
  24. 24. metadata  インスタンスに対して特定のデータを与えることが可能です。  key=value形式でデータを与えます。  インスタンス内部から http://169.254.169.254/ へアクセスすることでいつでもデータが参 照できます。  典型的な使い方として、1台目にDBサーバーを起動して、2台目にAPサーバーを起動 する際に、APサーバーに対して接続先のDBサーバーIPを与える、といった利用方法が あります。  前述のuserdataと合わせるて、高度な自動化が可能となります。  またuserdata自身もmetadataの一部として格納されています。 24 DBサーバーIP APサーバーの設定 ファイル DBサーバーIP DBサーバーIP APサーバーの設定 ファイル DBサーバーIP 人が設定を確認 手動で設定 APIからIPを受け取る metadataに IPをセットして起動 DBサーバーIP metadataサーバ userdataの スクリプトで値 を受け取って 設定
  25. 25. config-drive  config-driveを利用すると、metadataサーバーに与えたデータをディスク経 由で受け取る事が可能です。  ディスク領域としてOSにマウントされます。  metadataはkey=valueのデータしか与えられませんが、config-driveには ファイルを直接格納してインスタンスに渡すことも可能です。  config-driveはインスタンス内でネットワーク設定で行われる前にデータ参 照が可能となるため、ネットワーク設定そのものを操作する場合に利用す る事が可能です。  その他、直接ファイルを渡せるため、スクリプトでファイルを生成するのが難 しい(数が多くて大変な)ケースでも利用できます。 25 metadataサーバ config-drive http://169.254.169.254 同じデータが参照可 能 ファイルを直接渡す ことも可能。
  26. 26. cloud-init  OpenStackの標準機能ではありませ んが、クラウド上でインスタンスの各 種初期設定を行うためのデファクト パッケージです。  RH系Linuxや、Ubuntu、Windows等 で幅広く動作します。  インスタンスが初回起動されたのか、 2回目の起動なのか?もしくは複製 された環境なのか、を判断してスクリ プトの実行等を制御します。  Metadataと連携して動作します。  userdataの実行もcloud-initにより 実行されています。  デフォルトの動作は、 /etc/cloud/cloud.cfgで定義されて います。 26 users: - default disable_root: 1 ssh_pwauth: 0 mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2'] resize_rootfs_tmp: /dev ssh_deletekeys: 0 ssh_genkeytypes: ~ syslog_fix_perms: ~ cloud_init_modules: - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups - ssh cloud_config_modules: - mounts - locale - set-passwords - yum-add-repo ~~~(省略)~~~
  27. 27. 自動化の重要性 27
  28. 28. インフラコストと人件費  インフラリソースの単価が下がり続ける事で、使用されるリソース量は増加の一途  一方で、そのリソースを制御する人件費は、リソース量に比例して増加してしまう。  自然な考え方として、「インフラの操作を自動化してコストを削減できないか?」という発 想が生まれ定着しつつある。 28 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ メインフレーム オープン クラウド
  29. 29. 自動化のメリット  自動化することで様々なメリットが得られます。  特に繰り返しや品質の向上という人間では限界のある作業に対して、 効果を発揮します。  自動化によって、従来はコスト的に難しかった事が実現可能になります。  本番環境と同一な開発環境、テスト環境、検証環境 29 同じ作業の繰り返しでもコストが発生 1度自動化すれば同じ作業はコスト0 作業者の気分や状態に品質が依存する 何度繰り返しても同じ結果が得られる 作業ミスの再発防止が困難 (2重チェック?3重チェック??) ミスの特定と対策が明確 変更履歴の管理が困難 変更履歴の管理が容易
  30. 30. 自動化のデメリット  一方で自動化のデメリットも存在しています。  自動化の仕組みを作りこむ必要がある。  単純な追加コストとして発生します。  標準化されていない環境での自動化は高コスト。  作りこみに手間がかかる  再利用性が低い 30 自動化の作り 込みに必要なコ スト 自動化によって 削減可能なコ スト 自動化の作り 込みに必要なコ スト 自動化によって 削減可能なコ スト 自動化の作り 込みに必要なコ スト 自動化によって 削減可能なコ スト 自動化の効果が薄い 自動化の効果が高い
  31. 31. 適用シーン  より大規模に利用する。 31 業務A用 自動化 プログラム 業務B用 自動化 プログラム 業務C用 自動化 プログラム 業務A用 手順書 業務B用 手順書 業務C用 手順書 業務A 業務B 業務C 業務A 業務B 業務C openstack 業務ABC共通 自動化 プログラム 業務A 業務B 業務C openstack 手動作業 手動作業をそのまま自動化 標準化して自動化
  32. 32. 適用シーン  ライフサイクル全体に適用する。 32 開発用 自動化 プログラム 本番用 自動化 プログラム 運用用 自動化 プログラム 開発用 手順書 本番用 手順書 運用用 手順書 開発 本番 運用 openstack 開発本番運用共通 自動化 プログラム openstack 手動作業 手動作業をそのまま自動化 標準化して自動化 開発 本番 運用 開発 本番 運用
  33. 33. OpenStackの効用  自動化をより大規模に、ライフサイクル全体で、標準化して利 用することで効果を最大化できます。 33 開発 本番 運用 システムA システムB システムC ・ ・ ・ ☺
  34. 34. 構築に含まれる要素  環境を構築するという作業を分解していくと、下図のように分 類できます。  仮想マシンや仮想ネットワークを構成し、そこでOpenStackから戻る値 (IPアドレス)等を利用して、アプリケーション内部の設定を行っていき ます。  更にこれらが、複数インスタンスに渡るような場合は、受け渡すデータが 増えて複雑化していきます。 34 インフラリソースを 構成する アプリケーションを 構成する 構成された仮想マシンの 情報を渡す クラウド基盤に対する操作 仮想マシン上での操作
  35. 35. 更なる効率化  クラウドに対する操作も、アプリケーションに対する操作も、両 方を行えるツールを利用することで、データを受け渡しを簡略 化し、更に高度な自動化が実現可能です。 35 インフラリソースを 構成する アプリケーションを 構成する 構成された仮想マシンの 情報を渡す クラウド基盤に対する操作 仮想マシン上での操作 外部ツール
  36. 36. 各種ツールの特性  様々なツールが存在していますが、絶対的にどれが優れている というのはありません。  ツールごとに根底の思想があり、その思想に適合した使い方 をすればとても有益ですが、思想に反した使い方をするととて も使いにくくなります。  やりたいこと、実現したいことに合わせてツールを選択すること が重要です。 36
  37. 37. 演習  踏み台サーバーの作成  画面の確認と操作方法  リソースの作成(ネットワーク、ボリューム)  UserdataとMetadataを使った自動化  後片付け(次の演習に向けて) 37
  38. 38. 踏み台サーバーの準備 38
  39. 39. 演習の概要  OpenStackのダッシュボードを操作して自分用の踏み台サー バーを構築します。  コマンドラインを利用して簡単なサーバー構築を行います。  OpenStackの基本機能を用いた自動化に挑戦します。 39
  40. 40. サポート環境へのアクセス  講師の指示するアドレスへブラウザでアクセスしてください。  アクセス先にOpenStackのダッシュボードアドレスと、ログイン情報が確 認できます。 40 http://192.168.253.48/p/ood2015
  41. 41. 環境へのログイン  OpenStackのダッシュボードへログインしてください。 41 ログイン画面 ログイン後初期画面
  42. 42. 初期状態の確認  初期状態では、外部ネットワークに接続された1つの仮想ルーター Ext-Routerと、この仮想ルーターへ接続された、テナントネットワー ク work-net が存在しています。  確認できない方は講師に連絡してください。 42
  43. 43. 仮想マシン作成の準備  作成する仮想マシンへ設定するキーペアを準備します。 43 (3) Create Key Pair を選択 (4) key-for-step を入力 (5) Create Key Pair を選択 (2) Key Pairs を選択 (1) Access & Security を選択
  44. 44. 仮想マシン作成の準備  作成する仮想マシンへ設定するキーペアを準備します。 44 作成したキーペアの秘密鍵のダウンロード が始まります。 後で使いますのでわかりやすい場所に保存 しておいてください。 秘密鍵は再ダウンロード出来ませんのでご 注意ください。
  45. 45. 仮想マシンを作成  仮想マシンを作成していきます。 45 (1) Instances を選択 (2) Launch Instance を選択
  46. 46. インスタンスのパラメーター1  以下に従い、パラメーターの指定と確認を行います。 46 step-server を入力 m1.small を選択 Boot from image を選択 CentOS7 を選択
  47. 47. インスタンスのパラメーター2  以下に従い、パラメーターの指定と確認を行います。 47 key-for-step を選択 default にチェックを入れる Selected networks に work-net が含ま れている事を確認 Access & Security を選択 Networking を選択
  48. 48. インスタンスのパラメーター3  以下に従い、パラメーターの指定と確認を行います。 48 Direct Input を選択 以下を入力 #!/bin/bash echo "Hello World" > /hello.txt Launch を押下 Post-Creation を選択
  49. 49. 作成したインスタンスの確認  インスタンスの作成に成功すると、作成したインスタンスの状 態がACTIVEになります。 49
  50. 50. Floating IPの割当て  作成したインスタンスは、OpenStack内部のネットワーク接続 されており、このままでは外部からアクセスすることができませ ん。  そこで、踏み台サーバーへFloating IP を割当てて外部からの アクセスを可能にします。 50 Associate Floating IPを選 択
  51. 51. Floating IPの割当て 51 + を押下 ext-net_1214 を選択 Allocate IP を押下 IPアドレスが取得されていることを確認 (アドレスは毎回かわります) Associate を押下
  52. 52. Floating IPの割当てを確認  Floating IPの割当てに成功すると、インスタンスの一覧から 割り当てたアドレスが確認できます。 52 Instances を選択して、リロード 先ほど割り当てたIPが確認でき るはずです。
  53. 53. インスタンスへのアクセス  作成したインスタンスへSSHでアクセスします。  先ほどダウンロードしたSSH秘密鍵を使って、Floating IPのアドレスへ接続 してください。  ログインユーザ名は centos になります。  ログインが成功したら、pre-script で実行したファイルを確認します。  Puttyはpem形式の秘密鍵を利用できませんので、以下の手順を参考に 鍵の形式を変換してください。  http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/putty.html  以下はアクセス例になります。 53 $ ssh -i key-for-step.pem centos@192.168.253.96 The authenticity of host '192.168.253.96 (192.168.253.96)' can't be established. ECDSA key fingerprint is SHA256:W1Dt5pJyKsu3eBfy9b5/ayamLgf0LEq/jSByo1PEo5Y. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.253.96' (ECDSA) to the list of known hosts. [centos@step-server ~]$ hostname step-server [centos@step-server ~]$ cat /hello.txt Hello World 先ほど入力したスクリプトが実行 されていることが確認できます。
  54. 54. OpenStackクライアント環境の整備  作成した踏み台サーバーから各種OpenStackコマンドを実行 できるようにします。 54 [centos@step-server ~]$ sudo -i [root@step-server ~]# curl 157.7.53.150/ip_addr.txt >> /etc/hosts [root@step-server ~]# mkdir -p /root/temp [root@step-server ~]# mv /etc/yum.repos.d/* /root/temp [root@step-server ~]# cd /etc/yum.repos.d [root@step-server yum.repos.d]# curl -o /etc/yum.repos.d/edubase-liberty.repo http://reposerver/repo/7/edubase-liberty.repo [root@step-server yum.repos.d]# yum clean all [root@step-server yum.repos.d]# yum repolist [root@step-server yum.repos.d]# yum install python-openstackclient python-novaclient python-cinderclient ¥ python-neutronclient python-glanceclient python-keystoneclient [root@step-server yum.repos.d]# exit [centos@step-server ~]$ vi openrc export OS_REGION_NAME=RegionOne export OS_AUTH_URL=http://10.1.253.203:5000/v2.0 export OS_TENANT_NAME=opst-project-xxxx export OS_USERNAME=student-xxxx export OS_PASSWORD=pass-xxxx 演習用のリポジトリを設定します。 OpenStackクライアントを導入 します。 xxxx 部分は自分のユーザー番 号と読み替えてください。
  55. 55. コマンドのテスト  踏み台サーバーからコマンドが実行できるかを確認します。 55 [centos@step-server ~]$ source openrc [centos@step-server ~]$ nova list +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | a6a0b553-45ca-41e8-8cf9-4077fa02e5d9 | step-server | ACTIVE | - | Running | work-net=172.16.100.2, 192.168.253.96 | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ [centos@step-server ~]$ neutron net-list +--------------------------------------+--------------+------------------------------------------------------+ | id | name | subnets | +--------------------------------------+--------------+------------------------------------------------------+ | 6c72bb66-7173-4900-9388-9a077428ade8 | ext-net_1215 | 7d6556ac-5218-4bb4-980d-e8e65e2e969b | | ed033537-3073-4801-bcc2-b4694314979c | ext-net_1214 | be6f2a33-b9e8-4e93-b492-909ed45bc9cb | | cbec6b58-4de0-4491-98c3-fdaad6ae5f34 | work-net | e551a592-a6b1-4d27-8ee7-b606d0522b94 172.16.100.0/24 | +--------------------------------------+--------------+------------------------------------------------------+ 先ほど作成した環境変数ファイル を読み込みます。 この二つのコマンドがエラーなく実行できれば導入は 成功しています。
  56. 56. 画面の確認と操作方法 56
  57. 57. 演習の概要  OpenStackのダッシュボードで行える操作を体験していきます。 57
  58. 58. Overview  テナント内の利用状況を確認できます。  テナントにはクォータが設定されており、そのクォータに対して、どの程度の リソースを消費しているかを確認できます。 58 選択
  59. 59. Instances  インスタンスの一覧を確認できます。  ここでは起動したインスタンスの状態や、割当てられたIPが確認でき ます。  また、各インスタンスの削除や、コンソールの確認、起動ログの確認 といった操作が行えます。 59 選択 操作メニューの表 示
  60. 60. Volumes  作成したボリューム一覧の確認と、ボリュームに対する各種操 作が行えます。  今回はまだボリュームは作成されていません。 60 選択
  61. 61. Images  利用できるイメージの一覧が確認できます。  ここには、作成したインスタンスのスナップショットも表示されま す。 61 選択
  62. 62. Access & Security  セキュリティグループの一覧です。セキュリティグループは簡易的なファイ アーウォールを提供しています。  defaultはテナント作成時に自動で作成され、今回の環境ではSSH, HTTP通信が 許可されるように、管理者によって設定されます。  キーペアは既に利用した公開鍵と秘密鍵の管理機能です。 62 選択 選択
  63. 63. Access & Security  取得したFloating IPの一覧を確認、操作可能です。  またAPIのエンドポイントの確認と、コマンドラインを実行する ための環境変数設定ファイル等のダウンロードが可能です。 63 選択 選択
  64. 64. Network Topology  ネットワークの接続や全体概要を確認できます。  各オブジェクトをクリックすると、そのオブジェクトの詳細を確認可能です。  今回の環境では、外部ネットワークに接続された仮想ルーターと、この仮想ルーターに 接続された1つの仮想ネットワークが確認できます。さらに、仮想ネットワークには先程 作成した踏み台サーバーが接続されています。 64 選択
  65. 65. Networks  作成した仮想ネットワークの確認と操作が行えます。  今回の work-net は講師によって作成されています。 65 選択
  66. 66. Routers  作成した仮想ルーターと操作が行えます。  Ext-Routerは講師によって作成されています。 66 選択
  67. 67. リソースの作成  ネットワーク  ボリューム 67
  68. 68. 仮想ネットワークの作成  OpenStackではユーザが自由に仮想ネットワークを構築できます。  他のユーザとアドレス帯やIPアドレスそのものが重複していても問題はあり ません。  Neutronの仮想ネットワーク機能が、個々のネットワークを隔離してくれる ためです。 68 選択
  69. 69. 仮想ネットワークの作成  172.16.200.0/24 のサブネットを持つ my-network を作成します。 69 my-network を入力 Next を押下 my-subnet を入力 172.16.200.0/24 を入力 172.16.200.254 を入力 Next を押下
  70. 70. 仮想ネットワークの作成  入力内容に問題がなければ仮想ネットワークが作成できます。  このネットワークは自分のテナント内専用で、他のテナントユーザーから利 用されることはありません。 70 何も入力しません。 ここでは必要に応じで、DHCPのON/OFFや、サブネット アドレス帯の利用できるアドレスの範囲、DHCPで割り当 てるDNSサーバーアドレス等を指定できます。 Create を押下
  71. 71. 仮想ボリュームの作成  続いて仮想ボリュームを作成してインスタンスへ接続します。 71 選択
  72. 72. 仮想ボリュームの作成  1GBの新規ボリュームを作成します。 72 my-vol を入力 1 を入力
  73. 73. 仮想ボリュームの作成  作成したボリュームをインスタンスへ接続します。 73 Manage Attachment を 選択 step-server を選択 Attach Volume を選択
  74. 74. 仮想ボリュームの作成  接続したボリュームをインスタンスから確認してみます。  OSからは、このボリュームは通常のディスクとして操作可能です。 74 $ ssh -i key-for-step.pem centos@192.168.253.96 [centos@step-server ~]$ sudo -i [root@step-server ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 20G 0 disk └─vda1 253:1 0 20G 0 part / vdb 253:16 0 1G 0 disk [root@step-server ~]# mkfs.ext4 /dev/vdb [root@step-server ~]# mkdir -p /mnt/cinder [root@step-server ~]# mount /dev/vdb /mnt/cinder [root@step-server ~]# cp /etc/hosts /mnt/cinder/ [root@step-server ~]# ls -alF /mnt/cinder/ total 24 drwxr-xr-x. 3 root root 4096 Dec 10 05:10 ./ drwxr-xr-x. 3 root root 19 Dec 10 05:10 ../ -rw-r--r--. 1 root root 184 Dec 10 05:10 hosts drwx------. 2 root root 16384 Dec 10 05:10 lost+found/ 踏み台サーバーへ接続し、 rootユーザーとして操作します。 接続したディスクが認識してい ることが確認できます。 ディスクをフォーマットし、マウン トした後にファイルをコピーして います。 ディスクが機能していることが確 認できます。
  75. 75. Userdata と Metadata を利用 した簡単な自動化 75
  76. 76. 概要  ここでは、Etherpad環境をUserdata, Metadaの2つを使って 自動構築を試してみます。  既に自動化のスクリプトは作成済みですので、スクリプトを実 行しながら、中身を見ていきます。 76
  77. 77. 自動構築の実行  スクリプトをダウンロードして実行します。 77 [centos@step-server ~]$ curl -o 1st_etherpad.sh http://reposerver/handson/20151214-ood2015/1st_etherpad.sh [centos@step-server ~]$ bash 1st_etherpad.sh [centos@step-server ~]$ watch -n 10 nova console-log --length 30 my-etherpad cloud-init[728]: ci-info: | 1 | 169.254.169.254 | 172.16.100.254 | 255.255.255.255 | eth0 | UGH | cloud-init[728]: ci-info: | 2 | 172.16.100.0 | 0.0.0.0 | 255.255.255.0 | eth0 | U | cloud-init[728]: ci-info: +-------+-----------------+----------------+-----------------+-----------+-------+ CentOS Linux 7 (Core) Kernel 3.10.0-229.14.1.el7.x86_64 on an x86_64 my-etherpad login: cloud-init[2153]: Cloud-init v. 0.7.5 running 'modules:config' at Wed, 09 Dec 2015 05:29:52 +0000. Up 14.64 seconds. cloud-init[2159]: Cloud-init v. 0.7.5 running 'modules:final' at Wed, 09 Dec 2015 05:29:52 +0000. Up 15.00 seconds. ci-info: ++++++++++Authorized keys from /home/centos/.ssh/authorized_keys for user centos+++++++++++ ci-info: +---------+-------------------------------------------------+---------+-------------------+ ci-info: | Keytype | Fingerprint (md5) | Options | Comment | ci-info: +---------+-------------------------------------------------+---------+-------------------+ ci-info: | ssh-rsa | 45:71:8e:61:e6:97:e4:e3:2a:93:05:16:06:a9:e0:2d | - | Generated-by-Nova | ci-info: +---------+-------------------------------------------------+---------+-------------------+ ec2: ec2: ############################################################# ec2: -----BEGIN SSH HOST KEY FINGERPRINTS----- ec2: 256 5f:1c:9e:9e:14:41:d2:5c:58:47:1c:04:f2:cf:4c:d5 (ECDSA) ec2: 256 5c:89:e2:6b:e6:9b:69:75:a9:b5:89:3f:c8:c7:74:c1 (ED25519) ec2: 2048 79:50:f3:5c:4e:84:f4:a8:8f:b7:1f:cd:eb:c1:59:c8 (RSA) ec2: -----END SSH HOST KEY FINGERPRINTS----- ec2: ############################################################# -----BEGIN SSH HOST KEY KEYS----- ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIscyNoBmrlBVsixmbFuhZAnWVyptnDp5Fc8wCAYioHDef/bcnJn/mcCfUIQKh5XnOokJcakTik5vFWBnxbNhQA= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF/2a4golvNQR7ClJ/56Wj3OqDcspazu7oTxOtQQrjgn ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr4yzecpdEAcnWviij17I1FAsg6avhoSHy9NIMjPvXdc1T3ALOYOhj1JJH0WCFlXV9EFSgpY5O2cIJiWMx+y5NH72Oh/2dfOyl+ViN8yvF6DA76h/jJUli1y8rh600eZO9i6o yY6BNehIBgJiUohlJB1OLL4t/Gb8fH2w/7tj6Rvh mHMNJrbjF8+JViUT4tlrP55hHRnanPb8rl9La4Uz/iZtYU8GljpduCFcum0iepUy/pBXy6GKHPp1RRfMpCQXUw+HsywRpSZTGrQ7kO+kz+/B+J4X78zC2ju5sY6qbf4peafyR3DBpRTDooKbiJrNh7dtnXl3ZFLbl8G zksKrR -----END SSH HOST KEY KEYS----- cloud-init[2159]: Cloud-init v. 0.7.5 finished at Wed, 09 Dec 2015 05:29:53 +0000. Datasource DataSourceOpenStack [net,ver=2]. Up 15.24 seconds スクリプトが完了したら、起動した インスタンスの状態を表示します。 ログインプロンプトが表示されたら 完了です。
  78. 78. 構築の確認  スクリプトが完了したらブラウザで割当てられたFloating IPを確認 し、ブラウザでアクセスしてください。  問題がなければ、Etherpad の初期画面が表示されます。 78 [centos@step-server ~]$ nova list +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | 570d141c-a15d-48af-b939-67b59a98f2ea | my-etherpad | ACTIVE | - | Running | work-net=172.16.100.3, 192.168.253.98 | | a6a0b553-45ca-41e8-8cf9-4077fa02e5d9 | step-server | ACTIVE | - | Running | work-net=172.16.100.2, 192.168.253.96 | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ インスタンスへ割当てられている Floating IPを確認します。
  79. 79. スクリプトの解説 79 #!/bin/bash function if_error_exit() { echo "Error: $1"; exit 1; } function get_uuid () { cat - | grep " id " | awk '{print $4}'; } source openrc || if_error_exit curl -o userdata_etherpad_centos7.txt http://reposerver/handson/20151214-ood2015/userdata_etherpad_centos7.txt nova list || if_error_exit echo "新たなキーペア key-for-etherpad を作成します" nova keypair-add key-for-etherpad | tee key-for-etherpad.pem chmod 600 key-for-etherpad.pem echo "Floaitng IPを取得します" export FIP=`nova floating-ip-create ext-net_1214 | grep ext-net_1214 |grep "[0-9]¥+¥.[0-9]¥+¥.[0-9]¥+¥.[0-9]¥+" | awk -e '{print $4}'` echo ${FIP} sleep 3 echo "使用するネットワーク work-net のUUIDを取得します" export MY_WORK_NET=`neutron net-show work-net | get_uuid` echo ${MY_WORK_NET} echo "インスタンスを起動します" nova boot --flavor m1.small --image "CentOS7" ¥ --key-name key-for-etherpad --security-groups default ¥ --nic net-id=${MY_WORK_NET} ¥ --user-data userdata_etherpad_centos7.txt ¥ --meta fip=${FIP} ¥ my-etherpad ~~~~(省略)~~~~ このスクリプトではOpenStackコマンドを実行する ので、最初に環境変数を読み込みます。 インスタンス起動時に与える userdata をダウン ロードしています。 Floating IPを取得し、変数FIPに格納していま す。 インスタンス起動時に、先ほどダウンロードしたuserdataを指定し、 更に metadata fip に 変数FIPの内容をセットしています。 これでインスタンス起動時に、userdata_etherpad_centos7.txt が実 行されます。 1st_etherpad.sh
  80. 80. スクリプトの解説 80 ~~~~(省略)~~~~ ## Nginx FIP=`curl -S -s http://169.254.169.254/openstack/latest/meta_data.json | python -c "import json,sys; print json.load(sys.stdin).get('meta').get('fip')"` cat << EOF > /etc/nginx/conf.d/eplite.conf server { listen 80; server_name ${FIP}; access_log /var/log/nginx/eplite.access.log; error_log /var/log/nginx/eplite.error.log; location / { proxy_pass http://localhost:9001/; proxy_set_header Host ¥$host; proxy_pass_header Server; proxy_buffering off; proxy_set_header X-Real-IP ¥$remote_addr; proxy_set_header Host ¥$host; proxy_http_version 1.1; proxy_set_header Upgrade ¥$http_upgrade; proxy_set_header Connection ¥$connection_upgrade; } } map ¥$http_upgrade ¥$connection_upgrade { default upgrade; '' close; } EOF systemctl enable nginx.service systemctl start nginx.service ~~~~(省略)~~~~ userdata_etherpad_centos7.txt Metadataサーバーへアクセスし、fipの値を取り出 しています。 JSON形式のデータが返されるので、Pythonの標 準モジュールを利用してパースしてからデータを取り 出しています。 Nginxの設定ファイルを生成しています。 ここでは、FIPに対してアクセスするリクエストを、 http://localhost:9001/へ転送する設定を 行っています。 http://localhost:9001/ は Enterpadが起 動しているポートになります。
  81. 81. まとめ  このように、簡単な環境であればOpenStack標準機能のみで 自動化が可能です。  しかし、サーバー台数が2台、3台と増えていくに従い、標準 機能だけでの構築は難しくなってきます。  そのような場合には、OpenStackと連携する自動化支援ツー ル等を活用することで、よりシンプルに環境構築が可能となり ます。  パート2以降では、OpenStackと周辺ツールと連携した例に ついて見ていきます。 81
  82. 82. 後片付け(次の演習に向け て) 82
  83. 83. 続く演習を行うために  踏み台サーバーの導入と、OpenStackクライアントコマンドの導入までは完了 しているひつようがあります。  踏み台サーバーから nova list や、 neutron net-list 等が実行可能になっている状態  余分なリソースを削除しておきます。 83 [centos@step-server ~]$ nova list +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | 570d141c-a15d-48af-b939-67b59a98f2ea | my-etherpad | ACTIVE | - | Running | work-net=172.16.100.3, 192.168.253.98 | | a6a0b553-45ca-41e8-8cf9-4077fa02e5d9 | step-server | ACTIVE | - | Running | work-net=172.16.100.2, 192.168.253.96 | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ [centos@step-server ~]$ nova delete my-etherpad Request to delete server my-etherpad has been accepted. [centos@step-server ~]$ nova floating-ip-list +--------------------------------------+----------------+--------------------------------------+--------------+--------------+ | Id | IP | Server Id | Fixed IP | Pool | +--------------------------------------+----------------+--------------------------------------+--------------+--------------+ | 84c1d28e-37f9-4952-94ef-4a95bac5b1b1 | 192.168.253.96 | a6a0b553-45ca-41e8-8cf9-4077fa02e5d9 | 172.16.100.2 | ext-net_1214 | | 8c958b30-24c0-49bd-92a9-3521c528abb8 | 192.168.253.98 | - | - | ext-net_1214 | +--------------------------------------+----------------+--------------------------------------+--------------+--------------+ [centos@step-server ~]$ nova floating-ip-delete 192.168.253.98 [centos@step-server ~]$ nova list +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ | a6a0b553-45ca-41e8-8cf9-4077fa02e5d9 | step-server | ACTIVE | - | Running | work-net=172.16.100.2, 192.168.253.96 | +--------------------------------------+-------------+--------+------------+-------------+---------------------------------------+ [centos@step-server ~]$ nova floating-ip-list +--------------------------------------+----------------+--------------------------------------+--------------+--------------+ | Id | IP | Server Id | Fixed IP | Pool | +--------------------------------------+----------------+--------------------------------------+--------------+--------------+ | 84c1d28e-37f9-4952-94ef-4a95bac5b1b1 | 192.168.253.96 | a6a0b553-45ca-41e8-8cf9-4077fa02e5d9 | 172.16.100.2 | ext-net_1214 | +--------------------------------------+----------------+--------------------------------------+--------------+--------------+ 先ほど作成したインスタンスを削 除しておきます。 1つのインスタンス、1つのFloating IP という状態にしておきます。
  84. 84. 84 Part1は以上になります

×