OSC 2014 Kansai@Kyoto 1 openstack Open source software to build public and private clouds. 外部APIを利用したシステム構築自動化の一例 20140730 Hideki Saito TwitterID: @saito_hideki Internet Initiative Japan Inc.
May 24, 2015
OSC 2014 Kansai@Kyoto
1
openstackOpen source software to build public and private clouds.
外部APIを利用したシステム構築自動化の一例
2014-07-30Hideki Saito
TwitterID: @saito_hidekiInternet Initiative Japan Inc.
目次
• はじめにü インフラの管理を自動化する[ちょっと大袈裟(^^;]
• 外部APIを利用した仮想マシン構築の自動化1. IaaS基盤を管理する2. システム構築を自動化する
2
はじめに
3
OpenStackのインストールは苦行ですその苦行の後、ようやく動いた時...
その感動は凄まじくしばしば本来の目的を見失いますw
本来の目的って...
我々は、OpenStackのインストールをしたかったのではなく、本来の目的は...
1. ITサーバ群を効率的に活用したい(構成管理)
2. オペレーションを省力化したい(自動化)
3. 現状よりも、より進んだ便利な機能を利用者に提供したい
のような、それなりに高尚な目的だったはずです。
4
ITインフラ構築・運用管理の自動化
ITインフラエンジニアの典型的な業務は、このような感じでしょうか。
• ネットワーク機器を設定するp ポートを設定するp サーバのNICを物理的に接続するp wikiなどでドキュメントを更新する
• サーバを構築するp OSをインストールするp リモートログイン可能な状態にするp 追加パッケージのインストールや設定等の基本構築を行うp ミドルウェアのインストール&設定を行うp サービスに投入するp wikiなどのドキュメントを更新する
このような日常業務を省力化する方法の1つを紹介します。
6
前提①
7
• OpenStackを利用するOpenStackのクラウド基盤を操作するには、3つの方法があります。
• Horizonが提供するDashboard• OpenStackの主要な機能のみを提供するWebUI
• 各コンポーネントが提供するコマンドラインインターフェイス• 管理者用コマンド• 一般利用者用コマンド
CLI
• RESTful APIでOpenStackの全ての機能を利用可能• Pythonのライブラリとしても提供されるAPI
前提②
APIによる操作OpenStackのようなクラウド基盤管理システムを利用した自動化を進めるにあたって、外部プログラムからの制御は必須の要件となります。OpenStackの各コンポーネントは、外部プログラムから制御されることを想定したAPIを提供しています。
8
デモ 〜~ 動くOpenStack
9
デモ内容
1)基本構築 – 5分
2)Web/AP/DBの3層構成のサーバの構築 – 10分
Ansibleモジュール、Playbook、サンプルアプリケーションについては、以下のURLを参考にしてください。
p http://www.slideshare.net/h-saito/openstack-37557806
10
基本構築
11
サーバ単体を構築してみる(5分)
OpenStackの各コンポーネントが提供するWebUI/CLIで仮想マシンを構築する流れは、概ね以下のような流れです。
今回はOpenStackの外部APIを利用するAnsibleに作業を代行させてみます。
12
4. 仮想マシンにフローティングIPを付与してInternetに接続する
3. 仮想マシンを作成する
2. Internet接続用にフローティングIPを払い出す
1.事前準備(公開鍵登録やセキュリティグループ作成など)
現在のシステム構成
サーバ単体を構築してみる(5分)
13
Router
test-server
Ext-Net
JOSUG-netw
ork
10.0.0.0/24
10.0.0.1
10.0.0.N
OpenStackのAPIを利用した外部プログラムで仮想マシンを作成します
グローバルIP
外部APIを利用した仮想マシン構築の自動化(応用)
14
現在のシステム構成
初期状態
15
Router
step-server
Instance
OpenStackや仮想マシンに対する操作はstep-server上から行います
Ext-Net
JOSUG-netw
ork
10.0.0.0/24
10.0.0.1
10.0.0.N
グローバルIP
現在のシステム構成
シナリオ - web/ap/dbの3層構造をお手軽に構築
16
Router
step-server
Instance
Ext-Net
JOSUG-netw
ork
10.0.0.0/24
10.0.0.1
10.0.0.N
web10.0.0.N
rest10.0.0.N
グローバルIP db10.0.0.N
シナリオ - web/ap/dbの3層構造をお手軽に構築
WEB/ReST/DBの3台の仮想マシンを構築して、それぞれ役割ごとにアプリケーションをインストールしてみましょう。
17
Ansibleについて
18
Ansibleについて①
Ansibleの特徴AnsibleはPythonで書かれた*作業*だけなく*仕事*を自動化するためのツールで、OpenStackと組み合わせることにより、OS・ミドルウェア・アプリケーションのインストール・設定作業を自動化することが可能です。
ü 作業の一連の流れを1つにまとめるPlaybookを持つü 多数の外部モジュールが標準・オプションで提供されているü 必要な機能を提供するモジュールは自身で開発することが可能ü 作業の冪等性が担保されているü push型でエージェントレスであるü 動作に必要な要件が少ない
Ø SSHログイン可能Ø Python実行環境(2.4以降)といくつかのライブラリが存在する
19
Ansibleについて②
Ansibleの挙動以下にAnsibleの動きを図示します
20
Ansible
実行可能ファイル
実行可能ファイル
pingモジュール
setupモジュール
Inventoryファイル
sshd1
2
3
指定されたモジュールをインポートするターゲットノードにsftp/scpで実行可能ファイルを転送してssh経由でログインし実行する
指定されたグループのホスト群に関する情報を取得する モジュールから実行ファイル
を生成です
Ansibleについて③
仕事をまとめるPlaybookここまでは、ansibleコマンドにより単発の仕事をAnsibleに実行させてきましたが、現実ではこのようが仕事が複数集まって手順として実施されることになります。Ansibleは、下記のような手順をPlaybookとして定義して実行することが可能です。以降ではAnsibleのPlaybook機能を利用して、手順書にしたがった作業を自動化してみましょう。
21
パッケージインストール
設定変更
デーモン再起動
実行順序は常に保証される必要がある
AnsiblePlaybook
1
2
3
まとめ
22
まとめ
Ansibleを利用したOpenStackが提供する外部APIの活用方法をご紹介しました。Ansibleでなくても簡単なコマンドを並べたシェルスクリプトだけでも省力化の効果は得られます。
OpenStackは、ほぼ全ての機能を外部プログラムから管理可能なAPIを提供しており、Ansibleなどの自動化ツールを利用すれば、同時大量構築やオートスケールなどの拡張機能を独自実装可能です。
23
ご静聴ありがとうございました
24