Top Banner
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.
23

OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

May 24, 2015

Download

Technology

Hideki Saito

オープンソースカンファレンス2014 KANSAI@Kyotoで行ったOpenStackとAnsibleによる自動化デモンストレーション
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

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.

Page 2: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

目次

•  はじめにü  インフラの管理を自動化する[ちょっと大袈裟(^^;]

•  外部APIを利用した仮想マシン構築の自動化1.  IaaS基盤を管理する2.  システム構築を自動化する

2

Page 3: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

はじめに

3

OpenStackのインストールは苦行ですその苦行の後、ようやく動いた時...

その感動は凄まじくしばしば本来の目的を見失いますw

Page 4: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

本来の目的って...

我々は、OpenStackのインストールをしたかったのではなく、本来の目的は...

1.  ITサーバ群を効率的に活用したい(構成管理)

2. オペレーションを省力化したい(自動化)

3. 現状よりも、より進んだ便利な機能を利用者に提供したい

のような、それなりに高尚な目的だったはずです。

4

Page 5: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

ITインフラ構築・運用管理の自動化

ITインフラエンジニアの典型的な業務は、このような感じでしょうか。

•  ネットワーク機器を設定するp  ポートを設定するp  サーバのNICを物理的に接続するp  wikiなどでドキュメントを更新する

•  サーバを構築するp  OSをインストールするp  リモートログイン可能な状態にするp  追加パッケージのインストールや設定等の基本構築を行うp  ミドルウェアのインストール&設定を行うp  サービスに投入するp  wikiなどのドキュメントを更新する

このような日常業務を省力化する方法の1つを紹介します。

6

Page 6: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

前提①

7

•  OpenStackを利用するOpenStackのクラウド基盤を操作するには、3つの方法があります。

• Horizonが提供するDashboard• OpenStackの主要な機能のみを提供するWebUI

• 各コンポーネントが提供するコマンドラインインターフェイス• 管理者用コマンド• 一般利用者用コマンド

CLI

• RESTful  APIでOpenStackの全ての機能を利用可能• Pythonのライブラリとしても提供されるAPI

Page 7: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

前提②

APIによる操作OpenStackのようなクラウド基盤管理システムを利用した自動化を進めるにあたって、外部プログラムからの制御は必須の要件となります。OpenStackの各コンポーネントは、外部プログラムから制御されることを想定したAPIを提供しています。

8

Page 8: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

デモ  〜~  動くOpenStack

9

Page 9: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

デモ内容

1)基本構築  –  5分

2)Web/AP/DBの3層構成のサーバの構築  –  10分

Ansibleモジュール、Playbook、サンプルアプリケーションについては、以下のURLを参考にしてください。

p  http://www.slideshare.net/h-­saito/openstack-­37557806

10

Page 10: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

基本構築

11

Page 11: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

サーバ単体を構築してみる(5分)

OpenStackの各コンポーネントが提供するWebUI/CLIで仮想マシンを構築する流れは、概ね以下のような流れです。

今回はOpenStackの外部APIを利用するAnsibleに作業を代行させてみます。

12

4.  仮想マシンにフローティングIPを付与してInternetに接続する

3.  仮想マシンを作成する

2.  Internet接続用にフローティングIPを払い出す

1.事前準備(公開鍵登録やセキュリティグループ作成など)

Page 12: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

現在のシステム構成

サーバ単体を構築してみる(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

Page 13: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

外部APIを利用した仮想マシン構築の自動化(応用)

14

Page 14: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

現在のシステム構成

初期状態

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

Page 15: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

現在のシステム構成

シナリオ  -­  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

Page 16: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

シナリオ  -­  web/ap/dbの3層構造をお手軽に構築

WEB/ReST/DBの3台の仮想マシンを構築して、それぞれ役割ごとにアプリケーションをインストールしてみましょう。

17

Page 17: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

Ansibleについて

18

Page 18: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

Ansibleについて①

Ansibleの特徴AnsibleはPythonで書かれた*作業*だけなく*仕事*を自動化するためのツールで、OpenStackと組み合わせることにより、OS・ミドルウェア・アプリケーションのインストール・設定作業を自動化することが可能です。

ü  作業の一連の流れを1つにまとめるPlaybookを持つü  多数の外部モジュールが標準・オプションで提供されているü  必要な機能を提供するモジュールは自身で開発することが可能ü  作業の冪等性が担保されているü  push型でエージェントレスであるü  動作に必要な要件が少ない

Ø  SSHログイン可能Ø  Python実行環境(2.4以降)といくつかのライブラリが存在する

19

Page 19: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

Ansibleについて②

Ansibleの挙動以下にAnsibleの動きを図示します

20

Ansible

実行可能ファイル

実行可能ファイル

pingモジュール

setupモジュール

Inventoryファイル

sshd1

2

3

指定されたモジュールをインポートするターゲットノードにsftp/scpで実行可能ファイルを転送してssh経由でログインし実行する

指定されたグループのホスト群に関する情報を取得する モジュールから実行ファイル

を生成です

Page 20: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

Ansibleについて③

仕事をまとめるPlaybookここまでは、ansibleコマンドにより単発の仕事をAnsibleに実行させてきましたが、現実ではこのようが仕事が複数集まって手順として実施されることになります。Ansibleは、下記のような手順をPlaybookとして定義して実行することが可能です。以降ではAnsibleのPlaybook機能を利用して、手順書にしたがった作業を自動化してみましょう。

21

パッケージインストール

設定変更

デーモン再起動

実行順序は常に保証される必要がある

AnsiblePlaybook

1

2

3

Page 21: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

まとめ

22

Page 22: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

まとめ

Ansibleを利用したOpenStackが提供する外部APIの活用方法をご紹介しました。Ansibleでなくても簡単なコマンドを並べたシェルスクリプトだけでも省力化の効果は得られます。

OpenStackは、ほぼ全ての機能を外部プログラムから管理可能なAPIを提供しており、Ansibleなどの自動化ツールを利用すれば、同時大量構築やオートスケールなどの拡張機能を独自実装可能です。

23

Page 23: OSC2014-KANSAI@Kyoto JOSUG - OpenStack and Ansible

ご静聴ありがとうございました

24