Jazug福島 azure vm_20150404

Post on 16-Jul-2015

105 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

Transcript

Azure Virtual MachineInfrastructure as Code 始めてみた

木村忠宏 @kimura016

自己紹介

木村 忠宏(きむら ただひろ)

JAZUG仙台

サトヤ仙台

東北デベロッパーズコミュニティ 運営委員

Twitter @kimura016

Facebook http://www.facebook.com/kimuratadahiro

集合写真を2枚

今日の概要

•Microsoft Azure 仮想マシンについて

• Infrastructure as codeを始めてみる

Windows Server あるいは Linux の

仮想マシンを作成し、任意のアプリ

ケーションをインストール可能

• 既存の社内サーバーのクラウド移行に

• 検証・テスト環境として

• 自社データセンター被災時の災害対策用に

Microsoft Azure 仮想マシン

Microsoft Azure OS(ホストOS)

Microsoft Azure Hypervisor

コンピュート

・・ゲスト OS(仮想マシン)

Hyper-V

仮想マシンの展開パターン

イメージ (テンプレート)

プラットフォームイメージ(標準テンプレート)

Windows CentOS Ubuntu

VHD VHD VHD

VHD

・・・

マイイメージ(カスタムテンプレート)

(Generalize 済)

・・・

アップロード 仮想マシン

インスタンス化

イメージ化 コピー

BLOB ストレージ 仮想マシン

VHD

仮想マシン

BLOB に配置された VHD ファイルの堅牢性

BLOB に配置された VHD ファイルの堅牢性

仮想マシン

仮想マシン

BLOB に配置された VHD ファイルの堅牢性

拠点間複製(geo-replication)

パターン毎の責任範囲の考え方

ストレージ

サーバー

ネットワーク

OS

ミドルウエア

仮想化

データ

アプリケーション

ランタイム

OS

ミドルウエア

データ

アプリケーション

ランタイムユーザー管理

アプリケーション

データ

仮想マシンWindows Server Web サイトモバイルサービス

Office 365

オンプレミス IaaS PaaS SaaS

Infrastructure as Code始めてみた

きっかけはGoAzure 2015 への参加

「Infrastructure as Code for Azure」青木賢太郎さん/亀渕景司さん

http://www.slideshare.net/kamebuchi/infrastructure-as-code-for-azure

現状のインフラ作業の課題

・手順書はどれ?

・手順書の内容と、実機で状態が違う 資料の更新漏れ?

・毎回微妙に違う

・手間と時間がかかる

1台とか少ない台数なら良いけど、それ何台も何回もやるの?

→コードで管理、自動化

Infrastructure as Code

Immutableと冪等性(べき等性)

・Immutable (不変の)

→初期設定を状態を変えない。何回でも作り直しできる。

・冪等(べき等)

ある操作を1度行っても複数回行っ ても同じ結果(効果)になること

→これは課題を解決してくれそう!

・誰がやっても同じ結果になる

・ヒューマンエラーの回避(実行漏れ、手順書の更新漏れ)

・暗黙的作業の明示化(熟練技術者の暗黙知)

Azureでの基本

・Azure PowerShell, Azure クロスプラットフォーム CLI

Azureでの基本はおいといて・・・

・今までのインフラ構築作業

- 手順書をもとに手動による設定

・1stステップ

- シェルスクリプトによる設定

・2ndステップ

- Ansible、Chef等、構成管理ツールによる設定

構成管理ツール

・Ansible(アンシブル)

- Pythonで実装されている

PlaybookというYAML形式のファイルで設定記述

・Chef(シェフ)

- Rubyで実装されている

Rubyスクリプトで、

レシピと呼ばれるファイルを作成して設定記述

DemoAnsible Demo内容(事前準備含) ※ubuntu14.04 LTSにて実施

(1)Azure仮想マシンにAnsibleをインストール

sudo apt-get install python-pip

sudo pip install ansible

(2) inventory file(対象ホスト記述)の作成

ファイル名:localhost

以下1行を記述 今回は対象をlocalhostとする

127.0.0.1 ansible_connection=local

(3) Playbookの記述

ファイル名:sample.yml

以下、LAMP環境作成のためのapache, php, mysqlのインストール内容を記述

- hosts: 127.0.0.1user: azureusertasks:- name: "apt-get install apache"

apt: pkg=apache2sudo: yes

- name: "apt-get install php"apt: pkg=php5sudo: yes

- name: "apt-get install mysql"apt: pkg=php5-mysqlsudo: yes

(4) Ansibleの実行

以下コマンドを実行。

ansible-playbook sample.yml -i localhost -K

→” –i ”オプションでinventoryファイルを指定

“ -K ”オプションでsudoのパスワードを要求する

“-K”の代わりに”--ask -sudo -pass”でも可

課題

・新しい構成管理ツールを使うための学習コスト

・コードで設定を記述するが、テストをどうするか?

テスト用ツールあるが、例えばAnsibleだとテストはRubyで書かないといけない(Serverspec)など

top related