SlideShare a Scribd company logo
PFIセミナー

Linux開発環境の⾃自動構築
キックスタート, Vagrantなど
(Chef, Ansibleはお話しません)

柏原秀蔵
2013年年9⽉月19⽇日
⾃自⼰己紹介
l 
l 

柏原秀蔵 (@suma90h)
経歴
l 
l 

l 

2011年年秋      PFI⼊入社
2012年年4⽉月〜~  Jubatus 参加

お仕事
l 

Jubatus
l 

最近はgithubへのコミットが多めです

2
前までの発表
l 

2012年年5⽉月
l 

l 

「マルウェアとアンチウイルスから学ぶデバッガ開発技巧」

2012年年12⽉月
l 
l 

FreeBSD 9.2(RC)でGCCから離離れてClang採⽤用の話

l 

l 

「LLVM/Clangのはなし」
2013年年9⽉月  次期のFreeBSD、10からClang標準採⽤用らしい(*1)

2013年年(?)
l 
l 

*1

Vagrant/Packerが流流⾏行行っているらしい  →  便便利利!
Fedora19がリリースされたし、そろそろRHEL 7 ?

http://www.phoronix.com/scan.php?page=news_item&px=MTQ1ODc
3
アジェンダ

l 

Linuxセットアップ回数について考える
Linux環境構築の事例例
⾃自動構築のモチベーション
キックスタートとは
Vagrant/Packer  紹介

l 

キックスタートの実⾏行行デモ

l 

まとめ

l 
l 
l 
l 

4
突然ですが北北海道へいってきました
l 
l 

期間:2013年年8⽉月、滞在は8⽇日間
移動⼿手段:
l 
l 

l 

⾃自動⼆二輪輪⾞車車(ツーリング)
フェリー(茨城県の⼤大洗から、苫⼩小牧)

旅の教訓
l 

1⽇日の⻑⾧長距離離移動はツライ

l 

計画通りには進まない  →  時間と⼼心に余裕を持って⾏行行動

l 

⽇日程スケジュールは臨臨機応変に変更更

l 

Google Mapsも便便利利ですが、地図の投影法に気をつける
l 

実際より横⻑⾧長に投影されてしまい、近いはずが遠くに⾒見見えたり

5
北北海道:オホーツク海

6
北北海道:⾬雨

7
北北海道:動物注意

8
Linuxセットアップ回数について考える
l 

1ヶ⽉月あたり、およそ何回インストールしますか?
l 
l 

1〜~9台?

l 

10〜~99?  →  柏原(⽉月によるけど、このへん)

l 

l 

0回?

100〜~?

⽤用途と利利⽤用者は?
l 

個⼈人・チームでの利利⽤用

l 

マシンの⽤用途
l 
l 

l 

開発/検証(テスト)
Jenkins/パッケージ作成

本番環境/ステージング環境/デモ環境
9	

Jenkins logo by Charles Lowell
and Frontside.
よくあるLinux環境構築⼿手順
l 
l 

Linuxセットアップ(インストール)
Linux環境設定
l 
l 

l 

ネットワーク
ユーザ作成, などなど

キックスタートでOK!	

プロビジョニング(デプロイメント)
l 

追加でソフトウェアのインストール
l 

Linuxパッケージ管理理ツールによるもの

l 

Linuxパッケージ管理理ツール外のもの
‒  OSSで配布されているもの
‒  独⾃自の製品/サービス

l 

l 

各種ソフトウェアの設定

稼働開始 → 運⽤用・管理理
10	

Puppet, Chef,
Ansible, Fabric など
Linux環境構築:システム/サービスについて考える
l 

1台のマシン環境しか利利⽤用しない・同じ環境の移⾏行行は想定しない
l 
l 

l 

可⽤用性とか、冗⻑⾧長化は考慮しなくて⼤大丈夫でしょうか?
キックスタート等を使う必要はなさそう?

同⼀一の構成で、複数台の環境を⽤用意する必要がある
l 
l 

l 

例例:ウェブアプリ/本番・ステージング・検証の3つの環境
キックスタートなど、使いましょう!

10台以上の規模で、同⼀一構成で環境を揃えている
l 

まさか⼿手動でやっているなんてことは…ないと信じたい

l 

既にキックスタート等を使い慣れてるのでは?
11
Linux環境:ありそうな複数台環境(イメージ)
Webサービス(アプリ)のサーバ
(同じ構成の環境が、本番・検証・ステージング
の3つくらいあると想像)	
DBMS	

DBMS	

ウェブサーバ	

何かのクラスタサーバ
(OS, ミドルウェアを共通化させたもの)	

検索	

ウェブサーバ	

略	

ルータ(L3スイッチ)	

12
Linux環境構築:1⼈人/チーム開発向けユースケース
l 

1台のマシン環境しか利利⽤用しない  → キックスタート必要なさそう

l 

1台の物理理マシンしかないけれど、マシン環境は複数欲しい
l 
l 

l 

→ Amazon EC2等のサービスを使う(お⾦金金があれば)
→ 仮想マシンを使う(CPU, RAM等に余裕があれば)

2台以上の物理理マシンがある・⽤用途ごとに環境を分離離したい
l 

各種仮想マシンモニタを利利⽤用しましょう
l 

l 

l 

VirtualBox, VMware, QEMU(KVM)など

他の⼈人への作業引き継ぎがあるなら、Vagrantも検討しては?

AWSなどを使っている
13
モチベーション
l 

開発環境/本番環境は楽に準備したい
l 
l 

OSセットアップ完了了を待つのが苦痛

l 

セットアップで、キーボード⼊入⼒力力が⼿手間(マシン台数分の作業)

l 

l 

インストールで苦労したくない

複数のマシンへ、同⼀一の環境を⽤用意したい

当たり前にソフトウェアをリリースする
l 

マシン環境に依存させない
‒ 

l 

→  ⼀一般的な環境で確実に動作させたい

作業ノウハウを属⼈人化させない
‒ 

→  作業者は交代できるようにする

14
キックスタートとは
l 

インストール⾃自動化の⽅方法
l 
l 

インストーラ起動時に、設定ファイルを指定するだけ!

l 

l 

Red Hat Enterprise Linux向け
設定ファイルは、ディスク・HTTP/FTPサーバなどに設置

設定ファイルの作り⽅方
l 
l 

l 

RHEL系インストーラが⾃自動的に作成(/root/anaconda-ks.cfg)
⼿手書きで作成する(テキストファイル)

関連情報
l 

Debian/Ubuntu系のLinux:  preseed

l 

第32章  キックスタートインストール  - Red Hat Customer Portal
15
kickstart設定ファイル
例例:インストール済みFedora19

16
kickstart設定ファイル: anakonda-ks.cfg

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512

# Use CDROM installation media
cdrom
# (略)
%packages
@c-development
@core
# (略)
%end
17
kickstartで指定できること
l 
l 
l 

キーボード・⾔言語・タイムゾーン
rootパスワード
インストール時のデータ場所の指定
l 

l 

DVD/NFS/FTP/HTTP

ディスクの初期化
l 

パーティションの作成

l 

ファイルシステムのフォーマット

l 

ネットワークの設定
インストールパッケージの指定

l 

インストールの前・後に実⾏行行したいスクリプト

l 

l 

インストール完了了後に、ユーザを作成したり、パッケージのアッ
プデートなども可能

18
VagrantとPacker
l 

Vagrant http://www.vagrantup.com(読み⽅方:べいぐらんと)

l 

仮想環境(VirtualBoxやVMware)のフロントエンド

l 

開発者やシステムの運⽤用者が⼿手軽に環境を構築できるようにする

l 

Chef/Puppetのツールと連携(デプロイなどはそれらのツールを)

l 

http://d.hatena.ne.jp/naoya/20130205/1360062070

l 

http://mitchellh.com/the-tao-of-vagrant

l 

Packer http://www.packer.io/

l 

Vagrantも含め、Amazon EC2などイメージを作成するツール

l 

RHEL系Linuxのイメージを作るときは、キックスタートが活躍!

l 

Packerを⽤用いたイメージ作成⽅方法についてブログ書きました
l 

http://blog.obfuscatism.net

19
実⽤用例例:Jubatusのバイナリパッケージの作成
l 

課題
l 
l 

l 

パッケージ作成ノウハウの属⼈人化、作成作業者が固定化してしまう
パッケージ作成したことがないメンバもいるが、簡単に試せない

解決
l 

Scientific LinuxとUbuntuでの、パッケージ作成⽤用のVagrantイ
メージを作成した (Packer, キックスタート)

l 

Vagrantで所定のスクリプトを実⾏行行するだけで、バイナリパッケ
ージを⾃自動作成できる

l 

l 

(今後の予定)配布⽤用のスクリプトの準備、チーム内での普及

その他のユースケース
l 

想像)Jubatus試⽤用イメージの作成・配布
20
キックスタートのデモ
(もしくはVagrant/Packer)
まとめ
l 

キックスタート便便利利
l 
l 

l 

同じパッケージ・構成環境のLinuxマシンの構築を⾃自動化できる
⽋欠点:設定ファイルを改造したら、要テスト

Vagrant/Packer
l 
l 

l 

PackerとキックスタートによりLinux環境のイメージを⾃自動作成
Vagrantで開発環境・ビルド環境など、要求する環境を作成できる

キックスタートで実現できないこと
l 

複数台のマシンを同時インストールするツールではない

l 

ネットワークブートによるインストール/ツールを利利⽤用する
l 

→ Cobbler http://cobbler.github.com
22

More Related Content

PFIセミナー 2013/09/19 「Linux開発環境の自動構築」