28
Copyright 2016 CREATIONLINE, INC. All Rights Reserved Infrastructure as Codeについて 1

Infrastructure as Code

  • Upload
    -

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Infrastructure as Code

Copyright ⓒ2016 CREATIONLINE, INC. All Rights Reserved

Infrastructure as Codeについて

1

Page 2: Infrastructure as Code

• 荒井 裕貴(あらいひろき)

– クリエーションライン株式会社のChefエンジニア

– Chef Serverの設計・導入支援

– Chefのトレーニング

– COOKBOOK開発(Linux / Windows)

自己紹介

2

Page 3: Infrastructure as Code

クリエーションライン株式会社通称:CL (しーえる)

会社紹介

3

・プライベートクラウド基盤構築

・パブリッククラウドのコンサル

・Management Service Provider

オープンソース、各種クラウドに強いSIer

Chef社の公認パートナー

Page 4: Infrastructure as Code

• Infrastructure as Code とは

• Infrastructure as Codeの種類

• Chefについて

• デモ

目次

4

Page 5: Infrastructure as Code

Infrastructure as Code とは

5

Page 6: Infrastructure as Code

• 手順をベースに手作業でやっていたインフラに関わる作業や管理をコードで実現できるようにしようという手法や考え方

Infrastructure as Code とは(略:IaC)

6

作業者

手順書 コード

コンピュータ

開発

検証

本番

開発

検証

本番

Page 7: Infrastructure as Code

IaCによる変化

7

従来 IaC

作業手順 コード

手順書レビュー コードレビュー

手作業による構築 自動構築

手動によるテスト 自動テスト

Excelによる変更管理 バージョン管理システム(Git,

Mercurial, Subversion)

Page 8: Infrastructure as Code

仮想化やクラウドの普及によって、コンピューター提供までの時間が縮まった

大量のコンピューターを扱うようになっていった

サーバの設定を自動にしたい

サーバの管理も楽にしたい

背景

8

Page 9: Infrastructure as Code

• 迅速性

• 再現性

• 正確性

• 再利用性

• アプリケーション開発の現場で培われてきた様々なワークフローをインフラの世界にも取り入れられる

– バージョン管理システム

– CI

– コードレビュー

メリット

9

Page 10: Infrastructure as Code

Infrastructure as Codeの種類

10

Page 11: Infrastructure as Code

Infrastructure as Codeの種類

11

ネットワーク、VM、クラウド

アプリケーション

OS、ミドルウェア

Infrastructure as Code

Page 12: Infrastructure as Code

Infrastructure as Codeの種類

12

ネットワーク、VM、クラウド

アプリケーション

OS、ミドルウェア

Infrastructure as Code

Configuration as Code

Page 13: Infrastructure as Code

Infrastructure as Codeの種類

13

ネットワーク、VM、クラウド

アプリケーション

OS、ミドルウェア

Infrastructure as Code

Configuration as Code

アプリケーションから見たら、まとめてインフラ

Page 14: Infrastructure as Code

Chef

Puppet

Ansible

Powershell DSC

IaCを実現するためのツール

14

ネットワーク、VM、クラウド

OS、ミドルウェア

Azure Resource Manager

AWS CloudFormation

OpenStack Heat

Vagrant, Teraform

chef provisioning

Page 15: Infrastructure as Code

Chefについて

15

Page 16: Infrastructure as Code

米 Chef 社が提供するサーバー構築と構成管理の自動化フレームワークhttp://www.getchef.com/

• サーバーやアプリケーションの展開を容易にする

• 管理対象サーバー : 物理サーバー/仮想マシン/クラウドインスタンス

• OS より上層の構成を抽象化し共通定義

• Ruby 内部 DSL

• インフラをどのように構築し、維持するべきという定義を予め指定された文法で記述

Chefとは

16

Page 17: Infrastructure as Code

• 効率良く、正確にサーバ構築

• パターン化することにより、複雑な設定を抽象化

• 内部DSLで記述することにより、コードの属人化を防げる。

– 自動化したけど開発した本人以外はメンテナンス出来ないというのはあるある

• コードによるサーバの状態の管理

– いつ、誰が、何を、どのように変更したかが管理出来る

• Chef-Serverを使用した構成管理機能

Chef のメリット

17

Page 18: Infrastructure as Code

Chefのアーキテクチャ

18

ServerChef Server各 Node の構成情報を集中管理

Chef WorkstationKnife プラグインがインストールされている

Client

Client

Node

NodeChef により管理されるサーバー

Page 19: Infrastructure as Code

• Chef Server

– 設定情報をはじめ、各種情報を集中管理するホスト

– WebUI や REST API を備えており、それを用いてクライアントと通信する

• Client

– Chef Server に接続して情報をやりとりするツールやホスト

• Node

– Chef による管理対象のホスト

• Workstation

– Chef Server に接続して Knife を実行するホスト

Chefの用語①

19

Page 20: Infrastructure as Code

• Knife

• Chef を管理するコマンドラインツール

• Microsoft Azure、AWS、Softlayer などに対応した多数のプラグインが用意されている

• Recipe

• 設定情報の定義ファイル

• Ruby で記述する

• Cookbook

• Recipe などの設定情報をひとまとめにしたもの

Chefの用語②

20

Page 21: Infrastructure as Code

デモ

Chefを使ったInfrastructure as Code

21

Page 22: Infrastructure as Code

再利用性を考慮した設計

22

Page 23: Infrastructure as Code

• Infrastructure as CodeとConfiguration as Codeの層で明確に分ける

再利用性を考慮した設計①

23

Infrastructure

Another

Infrastructure

Infrastructure

Another

Configuration

Configuration

Configuration

Infrastructure

Configuration

Page 24: Infrastructure as Code

• Configurationの中でも一定の単位で分割

再利用性を考慮した設計②

24

Configuration

apache

php

mysql

apache

java

mysql

Page 25: Infrastructure as Code

迅速性を考慮した設計

25

Page 26: Infrastructure as Code

• イメージ管理

– 予め手動でサーバを構築しておいて、それをイメージ化して管理

– 展開時はイメージから展開するだけなので、非常に高速

– サーバごとに異なる部分は、起動後に修正が必要

イメージ管理とコード管理

26

• コード管理

– コードによってサーバの状態を管理

– 展開時はベースとなる空のイメージを使って起動後、コードを適用して設定

– サーバごとに異なる部分を抽象化可能

⇒何度も展開するような場合には、展開までのスピードが重要に

Page 27: Infrastructure as Code

Packer・・・イメージ生成を自動化する、HashiCorp社製のツール。イメージの生成手順をコードで記述。

packerを利用して展開スピードを向上

27

空のOSイメージ ベースイメージ

Packer + Chefを使って、ミドルウェアのインストールまで完了し

たベースイメージを作成

サーバB

サーバA

ミドルウェア

ミドルウェア

ミドルウェア

ベースイメージから起動後、Chefでサーバ固有の設定

固有設定

固有設定

Page 28: Infrastructure as Code

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

28