36
COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2014 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED (※) IaC: Infrastructure as Code (インフラのコード化) CD: Continuous Delivery (継続的デリバリー)

CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)

Embed Size (px)

Citation preview

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2014 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

(※) IaC: Infrastructure as Code (インフラのコード化) CD: Continuous Delivery (継続的デリバリー)

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

自己紹介

発表者

• 吉川 晃平

(よしかわ こうへい)

• 住処:神奈川県藤沢市

• 趣味:スキー

• 好きな食べ物:

ラーメンパスタから肉チーズに改宗

経歴

• インフラ系システムエンジニア

• 海底ケーブルの監視GUI

• ISPのホームページ公開システム

• オンプレミスのWebポータル共通基

• 興味:OpenStack,AWS,

Azure,Juju/MAAS,IoT,LXD・・・

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

発表内容

1. 弊社(三菱電機インフォメーションシステムズ:MDIS)のご紹介

2. 概要

3. 目的・モチベーション

4. しくみ

• デモ1:マスターサーバの構築

• デモ2:クローンVMの構築

5. デモンストレーション (ビデオ)

6. 考察とまとめ

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

MDIS 会社概要

三菱電機(株)

の情報システム

事業が分社化

し発足

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

拠点

鎌倉市(大船

駅)を技術拠点

に本社・支社を

全国配置

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

主な事業

高い技術力と豊かな発想で、社会に密着した多彩なソリューションを提供

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

MDISのOSS活用ソリューション

通信キャリア・サービスプロバイダー様向け、OSSを活用したシステムの導入支援。 http://www.mdis.co.jp/solution/oss/

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

発表の概要

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

最新のマスターサーバ

VM

VM

VM

マスターサーバを常に最新化 最新マスターから複数のVMを生成

生成結果の レポート

システム環境生成指示 ジョブ実行

概要(詳細はのちほど)

システム構築を自動化する仕組みを検討しプロトタイプを作りました

ユースケース(活用シーン) – 数十台のサーバを迅速正確に構築したい

– 脆弱性対応などのため多数のサーバのOS,ミドルウェアを最新化・動作確認したい

– インフラ構築における属人性やオペミスをなくしたい

自動化の仕組み

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

モチベーション

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

モチベーション

「あらゆる基盤上で迅速に

システム構築・デリバリを継続できる機構」

を活用したい。

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

車輪の再発明ではないか?

PaaS使えば CloudFormation

Heat vRO

Vagrant Packer

Teraform

CloudFoundry

OpenShift

Docker使えば

コンテナオーケストレータ Juju MAAS

いまさら CI/CDなんて

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

そんなカッコいいもんじゃないです

あたえられた環境

きめられた運用 契約上の制約

他システムへの 影響

いろいろな 基盤

小さな権限

パブリッククラウド

オンプレ

商用は いじりたくない

きめられた リソース

動的な運用 はNG

OSIレイヤの低い システム

お客様の基盤運用でシステムをつくらせていただく制約

・・・の中でなんとかしたい。

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

SI業からみたインフラ自動化・標準化

SIとしてシステム構築にかかわる場合、案件・顧客が利用するインフラ基盤上にシステムを構築する場合が多い。そのため自動化を画一的に適用することが難しい。

■自社サービスを ターゲットとする場合 • サービス構築を最短・

最小負荷にするための基盤整備

• 基盤の標準化やサービス粒度の画一化を検討できる

基盤標準化

サービス構築

■SI事業者 • 顧客が利用する

インフラ基盤にシステムを構築

• 標準化するのが難しい

• 1システムのためにPaaSやオーケストレータを導入するのが難しい

Aシステム構築

Bシステム構築

Cシステム構築

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

「本当にほしいもの」

「お客様のあらゆる基盤上で迅速にシステム構築・デリバリを継続できる機構」

– システム構築の急速なクラウドファースト化に対応するために。

– レガシーシステムのモダン化。オンプレミス基盤(vSphere等)で稼働するシステムの構築・運用にも迅速さを与えるために。

– オンプレミス・プライベートクラウド・パブリッククラウドにとらわれないシステム構築の生産性と品質を求めるために。

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

基本設計

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

ターゲットインフラ

プロトタイプの設計を今後OpenStack等ほかのインフラへ展開できるよう考慮しています。

VMWare 環境構築 TDDコーディング 運用評価 商用へ引き継ぎ

OpenStack プロトタイプ on

OpenStackへリ

ファクタリング

運用評価

他のインフラ リファクタリング

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

1

•失敗するテストを書く

•期待したエラーが出ることを確認

[Red]

2

•テストに通る最小限のコードを書く

•テストコードが通っていることを確認

[Green]

3.

•コードの重複除去等[Refactor]

•1.に戻る

参考: テスト駆動インフラの流れ

テスト駆動インフラでは、確認項目とテストコードを先に用意し、それに従いインフラコードを書きます。

1

•インフラ確認項目をテストコードで書く

•期待したエラーが出ることを確認

[Red]

2

•インフラ構築のためのコードを書く

•テストコードが通っていることを確認

[Green]

3

•必要なリファクタリング[Refactor]

•1.に戻る

[参考] テスト駆動開発 テスト駆動インフラ

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

インフラ構築環境の設計標準:自動実行・継続実行の仕組み

テスト駆動インフラの活用

インフラ構築後のあるべき状態をテストするコードを作成しテストコードが合格するように

インフラ構築のためのコーディングを行う手法。異なるインフラへの移設やリファクタリング時に有効

インフラテストコード (インフラに依存せず構築結果をテスト)

インフラ構築方式・管理方式 (インフラに依存せず設計を監理)

VM作成 OS&アプリ設

ネットワーク設

定 コンテンツ

監視 ・・・

VMware Public Cloud

App

OS

App

OS

App

OS

App

OS

App

OS

App

OS

App

OS

App

OS

インフラ構築コード (異なるインフラでは修正必要)

VM作成 OS&アプリ設

ネットワーク設

定 コンテンツ 監視 ・・・

インフラ構築コード (異なるインフラでは修正必要)

VM作成 OS&アプリ設

ネットワーク設

定 コンテンツ 監視 ・・・

VM作成 OS&アプリ設

ネットワーク設

定 コンテンツ

監視 ・・・

テスト

構築

テスト

構築

案件ごとに 異なって しまうコード を局所化

設計やノウハウ を標準化 していき 品質を共有

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

構成(将来実装予定分も含む)

Redmine

Jenkins

Gitlab

Target Service

Ansible

サービスへの 自動設定

any IaaS(プロトタイプはvSphere)

vCenter API

Floating IP Floating IP

Blue Green

Product Owner

Developer Team

Service Online

Environment for Dev.

Master (Team調整)

プロダクト リリース [BGD]

コラ

ボレ

ーシ

ョン

迅速

化・高

密度

[目標] サービス開発迅速化・

要件変化への対応迅速化

環境

構築

・試験

の自

動化

Ansible

Serverspec

可用性とスケーラビリティをもつWebポータル

(対応ミドルウェアは順次拡充していく)

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

商用サービスの自動化段階

実際の商用サービスへ自動化を適用する際に考慮するべき方式と運用のユースケースです

特に運用に関係する箇所は、環境・案件ごとの運用に合わせた最適化が必要になります

1 • 構築手順をコード化する

2 • コードと構築後環境を構成管理する

3 • 構築結果をテストする

4 • 変更内容とテスト結果を可視化する

5 • 構築物をレビューする

6 • 構築物を現地へ適用する

7 • 新旧環境を切り替える

今回プロトタイプで 検証した領域

プロトタイプに「しくみ」は いれたが、実運用に適用 させるべき領域 (人間系の運用)

適用先商用環境の 実装や運用に大きく 依存する領域

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

自動化機構の 実装方式

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

環境要件(基盤に許可いただく必要があるもの)

インターネットへの疎通

環境内でのDHCP,PXE利用

管理サーバ用仮想マシン1台

IaaS のAPI利用権限(オプション)

大がかりにしたくない、基盤に手をいれたくない ⇒お客様の環境に影響の少ない範囲で実施したい

最低限これだけ あればよいです

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

管理サーバの構成

Slack Cloneも入れたい・・・

Linux (Ubuntu 16.04)

dnsmasq

tfpd

Docker daemon

dhcpd

Container Container Container Container

Serverspec

Redmine Gitlab MariaDB Jenkins

Ansible

httpd

CentOS Repo

Original Repo

CentOS Img

Kickstart

MAC-IP Config

Test Code

Playbook Project

Task Ticket

Code Review etc...

Infrastructure (ex: vSphere,OpenStack,Baremetal ...)

Sub-network (Layer2 Switch)

コラボレーションツール群 IaC/CDツール群 リポジトリ/DHCP/PXE

Ubuntuだとpreseedかな

このVM1台を用意すれば、継続的なデプロイを運用できるよう設計しています

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

実現方式概要

自動化の仕組み

– 定期的に自動で最新のリポジトリからマスターサーバを作りテストを行います

– 必要に応じ最新のマスターサーバから複数のVMを自動で生成・テストしシステム環境を作ります

①空のVMを作

②マスターサー

③最新のマス

ターサーバ

(1a) OSリポジトリ (CentOS等)

OS/MWの最新 パッケージを取得

自動でOSを インストール

モジュール最新化 と共通設定後 自動テスト

④ ⑤ マスターを複製し 複数のVMを生成

設定に基づき 各VMをカスタマイズ

(2)ローカルリポジト

マスターサーバを常に最新化 最新マスターから複数のVMを生成

ローカルリポジトリ

(1b) 独自にビルド

したアプリ

生成結果の レポート

システム環境生成指示 ジョブ実行

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

ジョブの状態遷移

(1b) 独自にビルド

したアプリ

(1a) OSリポジトリ (CentOS等)

[ジョブ1] 空VMを作成 MBR削除 +再起動

Kickstart によるOS

インストール とssh設定

[ジョブ2] マスターサーバ

を設定 Ansible + Servespec

★定期更新

★ PXEブート ★ OS生成完了後 Jenkins ジョブ2起動

[ジョブ3] マスターから クローンVM

作成し 定義に従い 各マシンを カスタマイズ

★オペレータによる Jenkinsジョブ3起動

[ジョブ0] ローカルリポジトリ

の最新化

マスターサーバの自動最新化 [ジョブ0~2]

オンデマンドでクローンVM群を構築 [ジョブ3]

ローカルリポジトリ

Kickstart.cfg OSイメージ OSリポジトリ Appリポジトリ

★差分検知で Jenkinsジョブ1起動

各VMの 設定情報

(1行=1VM)

構成管理表 (Excel⇒TSV)

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

構成管理表

構成管理表はExcelなどの一般的な表ファイルとして管理(RDBなどでも可)

TSV(タブ区切りテキスト)に出力して管理サーバへアップロードする

TSV 出力

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

サーバ種別 VMのスペック

host名、NIC毎のIP 有効化するサービス

etc

構成管理表

管理性を考慮し、構築するクローンVM群の設定はExcelで管理します。

• 実態はTSV形式なので、管理自体はExcelでなくても、RDB等でもなんでもよい

• 一元管理された情報に基づいて構築とテストを行う

TSV

dhcp .cnf

YAML (A)

YAML (B)

Jenkins

Ansible

Serverspec

dnsmasq VM構成の一元管理

Export

変換

変換

変換

配布

配布

配布

各サーバを構築

各サーバをテスト

DHCPでMACに基づきサーバへIPを付与

Upload

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

実装上のポイント

•たいていの環境で動く保守的な構成

•対象がベアメタルでも動く

PXE+DHCPによるOS生成

•今回はvmware_guestモジュールを利用

•モジュール差し替えで他の環境への置換が容易

•可読性が高い

Ansible2.xモジュールによるインフラ操作

•運用者はコードで管理したくない。DBも使いたくない・・・

•Excel⇒TSV⇒YAMLに変換してAnsible, Serverspec, dnsmasqが参照

•一度環境を作ったら日々の運用はExcel台帳管理だけで済むように。

ExcelによるクローンVMの設定一元管理

•運用上・実装上の理由でAPIをたたけないときに

•VMクローンを手作業で一括実施したあとに後処理を自動実行

•人が張り付かなくてもすむように

手作業も考慮

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

デモンストレーション

映像による構築デモ

(ノーカット。ただし編集にて早送りによる時間短縮版)

1.デモ1:マスターサーバの構築

2.デモ2:クローンVMの構築

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

やってみての気づき(TDD)

「テスト駆動インフラ開発(TDD)」をかかげてみた

• 実際はそんな綺麗にはすすまなかった ⇒すべてが検証しながら、なのでテストドリブンとは限らなかった

• Ansible担当とServerspec担当に分かれて並列作業 ⇒ TDDというよりペアプログラミングに近い・・・

⇒ お互いスプリントごとに決めたコードを書いて、レビュー時にジョブにいれて結合テスト

• 案外いい結果に! ⇒ 結合するとジョブが動かない! (いい意味で!)

⇒ 動かない理由をコードベースで議論すると考慮もれや設計の穴が見つかる

⇒ AnsibleとServerspecで違う観点で実装することで品質向上をうんでいた気がする

• このスタイルはありだなと。 (TDDか?という疑問はさておき) ⇒①属人性を薄め、②品質をうみ、③チーム間でノウハウを共有しやすい

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

vSphere API •エンタープライズ

•企業内共通基盤

AWS/Azure

API

•パブリッククラウド

•ハイブリッドクラウド

OpenStack

API

•プライベートクラウド

•ハイブリッドクラウド

ベアメタル •ビッグデータ

•ネットワーク機器

今後の機能強化について

全体の設計は共有しつつ、シンプルな設計を活かして

①CIとの連携、②コンテナイメージ展開、③対応IaaS APIの拡充、

と適用範囲を拡大していきたいと考えています。

継続的イン

テグレーショ

コードリポジトリ

アプリケーション開発

マイクロサービス開発

プラット

フォーム最

新化

OSリポジトリ

ミドルウェアリ

固有製品

継続的イン

テグレーショ

プラット

フォーム最

新化

マスターVM

RPMパッケージ

コンテナイメージ

環境 設定

ドキュメント

基本となる設定・運用は変えないまま拡充していく

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

まとめ

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

発表のまとめ

1. システム構築を自動化する仕組みを検討しプロトタイプを作りました – お客様の所有・利用する共通基盤上で活用する想定

– 基盤への影響や依存を少なくしています

– ターゲットはオンプレ基盤としてデファクトのvSphere環境。

– テスト駆動なアプローチでお客様環境への順応性と品質確保を狙っています。

2. ユースケース(活用シーン) – 数十台のサーバを迅速正確に構築したい

– 脆弱性対応のため定期的に多数のサーバのOS,ミドルウェアを最新化・動作確認したい

– インフラ構築における属人性やオペミスをなくしたい

3. デモンストレーション 1. リポジトリ変更に応じてマスターサーバを自動構築

2. 構成管理表を元に複数サーバを自動構築

4. 今後順次拡充予定

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

案件募集・PoC募集

ご興味ある方お声掛けください

最新技術をキャッ

チする

PoC(Proof of

Concept)で

顧客業務要件へ

フィッティング

得意な領域を繰

り返し深く専門化

する

現場から湧き出る PoCネタ募集!

ぜひお声掛けください

COPYRIGHT © 2016 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED COPYRIGHT © 2015 MITSUBISHI ELECTRIC INFORMATION SYSTEMS CORPORATION ALL RIGHTS RESERVED

ご清聴ありがとうございました Thank you !

http://www.mdis.co.jp/solution/oss/