33
itamaeで 一撃サーバー構築 Hamamatsu.rb #58 @jacoyutorius

itamaeで一撃サーバーProvisioning

Embed Size (px)

Citation preview

Page 1: itamaeで一撃サーバーProvisioning

itamaeで 一撃サーバー構築

Hamamatsu.rb #58 @jacoyutorius

Page 2: itamaeで一撃サーバーProvisioning

itamae

• サーバーのプロビジョニングツール

• サーバーにインストールするパッケージや ミドルウェアのインストール内容や設定をRubyのコードで記述する

Page 3: itamaeで一撃サーバーProvisioning

package "nginx" do action :install end

Page 4: itamaeで一撃サーバーProvisioning

• サーバーの”あるべき状態”を定義したファイルに従ってパッケージやミドルウェアのインストールや設定を自動的にかつ一括で行うツール

• Linuxディストリビューションによる違いを吸収してくれたりする

プロビジョニングツール

Page 5: itamaeで一撃サーバーProvisioning

• 冪等性(何度実行しても同じ状態になる)

• プログラムから扱いやすい形式のファイルで定義することで、バージョン管理ツールによる差分管理が容易

• Chef, Puppet, Ansibleなど

プロビジョニングツール

Page 6: itamaeで一撃サーバーProvisioning

覚える用語

Page 7: itamaeで一撃サーバーProvisioning

・レシピ ・リソース

Page 8: itamaeで一撃サーバーProvisioning

レシピ

• パッケージやミドルウェアのインストール内容をRubyで記述したもの

package "nginx" do action :install end

Page 9: itamaeで一撃サーバーProvisioning

リソース• 対象サーバー上にて実行する命令

package "nginx" do action :install end

Page 10: itamaeで一撃サーバーProvisioning

リソース• package

• file

• directory

• git

• remote_file

• template

• user

• group

• execute

Page 11: itamaeで一撃サーバーProvisioning

install nginx

package "nginx" do action :install end

Page 12: itamaeで一撃サーバーProvisioning

create user

user "yuto" do action :create end

Page 13: itamaeで一撃サーバーProvisioning

create group

group "yuto" do action :create end

Page 14: itamaeで一撃サーバーProvisioning

template

template "/root/.bash_profile" do source "./templates/bash_profile.erb" variables(root_path: node[:root_path]) end

Page 15: itamaeで一撃サーバーProvisioning

shell

execute “echo helloitamae" do user "root" command "echo helloitamae" end

Page 16: itamaeで一撃サーバーProvisioning

$ tree

├── Gemfile

├── Vagrantfile

├── cookbooks

│ └── recipes

│ ├── ruby_install.rb

│ └── templates

└── servers

└── target_server

└── node.yml

Page 17: itamaeで一撃サーバーProvisioning

install (gem)

gem install itamae

Page 18: itamaeで一撃サーバーProvisioning

install (package)

> echo 'deb https://dl.bintray.com/itamae/itamae trusty contrib' | sudo tee /etc/apt/sources.list.d/itamae.list

> sudo apt-key adv --keyserver keyserver.ubuntu.com --recv D401AB61

> sudo apt-get install itamae

Ubuntu 14.04 trustlyhttps://github.com/itamae-kitchen/omnibus-itamae

Page 19: itamaeで一撃サーバーProvisioning

実行(local)

itamae local ruby_install.rb

Page 20: itamaeで一撃サーバーProvisioning

実行(vagrant)

itamae ssh --vagrant -h hostname ruby_install.rb

Page 21: itamaeで一撃サーバーProvisioning

実行(ssh)

itamae ssh -h hostname ruby_install.rb

Page 22: itamaeで一撃サーバーProvisioning

色々オプションをつけて結局こうなる

bundle exec itamae ssh -h hostname cookbooks/recipes/ruby_install.rb -y servers/servername/node.yml -l debug

Page 23: itamaeで一撃サーバーProvisioning

オプション

dry-run, -d - 試しに実行したい log-level, -l - 詳細なログが見たいとき node-yaml, -y - サーバーの固有情報を記述したファイル(node.yml)のパスを指定

and more …

Page 24: itamaeで一撃サーバーProvisioning

plugins

•itamae-plugin-recipe-rbenv

•itamae-plugin-resource-iptables

•itamae-plugin-recipe-minecraft

•itamae-plugin-resource-aws

•and more... (https://rubygems.org/search?query=itamae-plugin)

plugins

Page 25: itamaeで一撃サーバーProvisioning

plugin usage

Gemfile

gem "itamae" gem "itamae-plugin-recipe-rbenv"

Page 26: itamaeで一撃サーバーProvisioning

覚えるリソースも数種類しかないのでgemの中身も読みやすい。

itamae-plugin-recipe-rbenvのコア部分(system.rb)

itamae-plugin-recipe-rbenv

Page 27: itamaeで一撃サーバーProvisioning

• 使われているのはgit, package, file, executeリソースくらい

• インストールパスやrubyのバージョンはnode.ymlに定義。 ディストリビューションによる分岐はSpecinfraから取得

itamae-plugin-recipe-rbenv

Page 28: itamaeで一撃サーバーProvisioning

system.rb

Page 29: itamaeで一撃サーバーProvisioning

node.yml

system.rb

Page 30: itamaeで一撃サーバーProvisioning

まとめ

Page 31: itamaeで一撃サーバーProvisioning

まとめと今後• itamae楽しい

• 上手く動くと全能感

• 多少ハマるところもある (VM宛てに実行した時と実行結果が違うとか。OSイメージの問題かもしれない)

• 実運用ではサーバー構築手順書をレシピ化した(検証中)

• 出来上がったサーバーのテスト( => Serverspec)

Page 32: itamaeで一撃サーバーProvisioning

otto• 何も考えずにとりあえず開発環境の入ったVMが欲しい場合はotto

• Ruby / PHP / Go / node.jsのインストールされたVMが一発で手に入る(尚、バージョンの指定はできない模様)

Page 33: itamaeで一撃サーバーProvisioning

おわりHamamatsu.rb #58

@jacoyutorius