Upload
-
View
213
Download
0
Embed Size (px)
Citation preview
Copyright ⓒ2016 CREATIONLINE, INC. All Rights Reserved
Infrastructure as Codeについて
1
• 荒井 裕貴(あらいひろき)
– クリエーションライン株式会社のChefエンジニア
– Chef Serverの設計・導入支援
– Chefのトレーニング
– COOKBOOK開発(Linux / Windows)
自己紹介
2
クリエーションライン株式会社通称:CL (しーえる)
会社紹介
3
・プライベートクラウド基盤構築
・パブリッククラウドのコンサル
・Management Service Provider
オープンソース、各種クラウドに強いSIer
Chef社の公認パートナー
• Infrastructure as Code とは
• Infrastructure as Codeの種類
• Chefについて
• デモ
目次
4
Infrastructure as Code とは
5
• 手順をベースに手作業でやっていたインフラに関わる作業や管理をコードで実現できるようにしようという手法や考え方
Infrastructure as Code とは(略:IaC)
6
作業者
手順書 コード
コンピュータ
開発
検証
本番
開発
検証
本番
IaCによる変化
7
従来 IaC
作業手順 コード
手順書レビュー コードレビュー
手作業による構築 自動構築
手動によるテスト 自動テスト
Excelによる変更管理 バージョン管理システム(Git,
Mercurial, Subversion)
仮想化やクラウドの普及によって、コンピューター提供までの時間が縮まった
大量のコンピューターを扱うようになっていった
サーバの設定を自動にしたい
サーバの管理も楽にしたい
背景
8
• 迅速性
• 再現性
• 正確性
• 再利用性
• アプリケーション開発の現場で培われてきた様々なワークフローをインフラの世界にも取り入れられる
– バージョン管理システム
– CI
– コードレビュー
メリット
9
Infrastructure as Codeの種類
10
Infrastructure as Codeの種類
11
ネットワーク、VM、クラウド
アプリケーション
OS、ミドルウェア
Infrastructure as Code
Infrastructure as Codeの種類
12
ネットワーク、VM、クラウド
アプリケーション
OS、ミドルウェア
Infrastructure as Code
Configuration as Code
Infrastructure as Codeの種類
13
ネットワーク、VM、クラウド
アプリケーション
OS、ミドルウェア
Infrastructure as Code
Configuration as Code
アプリケーションから見たら、まとめてインフラ
Chef
Puppet
Ansible
Powershell DSC
IaCを実現するためのツール
14
ネットワーク、VM、クラウド
OS、ミドルウェア
Azure Resource Manager
AWS CloudFormation
OpenStack Heat
Vagrant, Teraform
chef provisioning
Chefについて
15
米 Chef 社が提供するサーバー構築と構成管理の自動化フレームワークhttp://www.getchef.com/
• サーバーやアプリケーションの展開を容易にする
• 管理対象サーバー : 物理サーバー/仮想マシン/クラウドインスタンス
• OS より上層の構成を抽象化し共通定義
• Ruby 内部 DSL
• インフラをどのように構築し、維持するべきという定義を予め指定された文法で記述
Chefとは
16
• 効率良く、正確にサーバ構築
• パターン化することにより、複雑な設定を抽象化
• 内部DSLで記述することにより、コードの属人化を防げる。
– 自動化したけど開発した本人以外はメンテナンス出来ないというのはあるある
• コードによるサーバの状態の管理
– いつ、誰が、何を、どのように変更したかが管理出来る
• Chef-Serverを使用した構成管理機能
Chef のメリット
17
Chefのアーキテクチャ
18
ServerChef Server各 Node の構成情報を集中管理
Chef WorkstationKnife プラグインがインストールされている
Client
Client
Node
NodeChef により管理されるサーバー
• Chef Server
– 設定情報をはじめ、各種情報を集中管理するホスト
– WebUI や REST API を備えており、それを用いてクライアントと通信する
• Client
– Chef Server に接続して情報をやりとりするツールやホスト
• Node
– Chef による管理対象のホスト
• Workstation
– Chef Server に接続して Knife を実行するホスト
Chefの用語①
19
• Knife
• Chef を管理するコマンドラインツール
• Microsoft Azure、AWS、Softlayer などに対応した多数のプラグインが用意されている
• Recipe
• 設定情報の定義ファイル
• Ruby で記述する
• Cookbook
• Recipe などの設定情報をひとまとめにしたもの
Chefの用語②
20
デモ
Chefを使ったInfrastructure as Code
21
再利用性を考慮した設計
22
• Infrastructure as CodeとConfiguration as Codeの層で明確に分ける
再利用性を考慮した設計①
23
Infrastructure
Another
Infrastructure
Infrastructure
Another
Configuration
Configuration
Configuration
Infrastructure
Configuration
• Configurationの中でも一定の単位で分割
再利用性を考慮した設計②
24
Configuration
apache
php
mysql
apache
java
mysql
迅速性を考慮した設計
25
• イメージ管理
– 予め手動でサーバを構築しておいて、それをイメージ化して管理
– 展開時はイメージから展開するだけなので、非常に高速
– サーバごとに異なる部分は、起動後に修正が必要
イメージ管理とコード管理
26
• コード管理
– コードによってサーバの状態を管理
– 展開時はベースとなる空のイメージを使って起動後、コードを適用して設定
– サーバごとに異なる部分を抽象化可能
⇒何度も展開するような場合には、展開までのスピードが重要に
Packer・・・イメージ生成を自動化する、HashiCorp社製のツール。イメージの生成手順をコードで記述。
packerを利用して展開スピードを向上
27
空のOSイメージ ベースイメージ
Packer + Chefを使って、ミドルウェアのインストールまで完了し
たベースイメージを作成
サーバB
サーバA
ミドルウェア
ミドルウェア
ミドルウェア
ベースイメージから起動後、Chefでサーバ固有の設定
固有設定
固有設定
ご清聴ありがとうございました
28