22
Azure Virtual Machine Infrastructure as Code 始めてみた 木村忠宏 @kimura016

Jazug福島 azure vm_20150404

Embed Size (px)

Citation preview

Page 1: Jazug福島 azure vm_20150404

Azure Virtual MachineInfrastructure as Code 始めてみた

木村忠宏 @kimura016

Page 2: Jazug福島 azure vm_20150404

自己紹介

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

JAZUG仙台

サトヤ仙台

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

Twitter @kimura016

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

集合写真を2枚

Page 3: Jazug福島 azure vm_20150404
Page 4: Jazug福島 azure vm_20150404
Page 5: Jazug福島 azure vm_20150404

今日の概要

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

• Infrastructure as codeを始めてみる

Page 6: Jazug福島 azure vm_20150404
Page 7: Jazug福島 azure vm_20150404

Windows Server あるいは Linux の

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

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

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

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

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

Microsoft Azure 仮想マシン

Microsoft Azure OS(ホストOS)

Microsoft Azure Hypervisor

コンピュート

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

Page 8: Jazug福島 azure vm_20150404

Hyper-V

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

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

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

Windows CentOS Ubuntu

VHD VHD VHD

VHD

・・・

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

(Generalize 済)

・・・

アップロード 仮想マシン

インスタンス化

イメージ化 コピー

BLOB ストレージ 仮想マシン

VHD

Page 9: Jazug福島 azure vm_20150404

仮想マシン

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

Page 10: Jazug福島 azure vm_20150404

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

仮想マシン

Page 11: Jazug福島 azure vm_20150404

仮想マシン

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

Page 12: Jazug福島 azure vm_20150404

拠点間複製(geo-replication)

Page 13: Jazug福島 azure vm_20150404

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

ストレージ

サーバー

ネットワーク

OS

ミドルウエア

仮想化

データ

アプリケーション

ランタイム

OS

ミドルウエア

データ

アプリケーション

ランタイムユーザー管理

アプリケーション

データ

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

Office 365

オンプレミス IaaS PaaS SaaS

Page 14: Jazug福島 azure vm_20150404

Infrastructure as Code始めてみた

きっかけはGoAzure 2015 への参加

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

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

Page 15: Jazug福島 azure vm_20150404

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

・手順書はどれ?

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

・毎回微妙に違う

・手間と時間がかかる

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

→コードで管理、自動化

Infrastructure as Code

Page 16: Jazug福島 azure vm_20150404

Immutableと冪等性(べき等性)

・Immutable (不変の)

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

・冪等(べき等)

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

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

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

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

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

Page 17: Jazug福島 azure vm_20150404

Azureでの基本

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

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

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

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

・1stステップ

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

・2ndステップ

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

Page 18: Jazug福島 azure vm_20150404

構成管理ツール

・Ansible(アンシブル)

- Pythonで実装されている

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

・Chef(シェフ)

- Rubyで実装されている

Rubyスクリプトで、

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

Page 19: Jazug福島 azure vm_20150404

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

Page 20: Jazug福島 azure vm_20150404

(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

Page 21: Jazug福島 azure vm_20150404

(4) Ansibleの実行

以下コマンドを実行。

ansible-playbook sample.yml -i localhost -K

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

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

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

Page 22: Jazug福島 azure vm_20150404

課題

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

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

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