Upload
ikikko-nakamura
View
1.113
Download
3
Embed Size (px)
DESCRIPTION
第8弾 週末ランサーズ http://weekendlancers.doorkeeper.jp/events/11216
Citation preview
2014/05/24 第8弾 週末ランサーズ Tomonari NAKAMURA
Infrastructure as Code ~ ツールスタック / ヌーラボの事例 ~
http://www.flickr.com/photos/statuelibrtynps/6276757947/
自己紹介•名前:中村知成 ( @ikikko ) •所属 •株式会社ヌーラボ •日本Jenkinsユーザ会 •推しメン:さっしー 現在、総選挙
速報1位!
�� ��������������� ������������������������������������������������������������������������������������� ��������������• ��������������!��� ���• ��������� �����������������!����������
������������ ��� ���������
������������ ������ �������"��������"�"��������������"�������������� ����� ����������������������������������!������������ ����������#���������"������������"��� �������������!������ ���������• ������ �����������������������������#�� ������� �����• ��� ����������������� � ���� ����������������������������!����������������� ���
��� ������ �������������������������� ����������� ���������!�������• ��� ��� ����!��������������������• �������� ��������� "�����������������• �����������!����������������������������������������������!������������
in ヌーラボ!
•アプリ寄りの開発者 •インフラ方面も関わり出す !
•Jenkinsやビルド環境の整備
アジェンダ•背景 •Infrastructure as Code とは •関連ツールスタック •ヌーラボでの事例
背景
https://speakerdeck.com/nulabinc/yun-yong-devopsshi-dai-wosheng-kinukutameni
背景•インフラそこまで詳しくない •既存の手順書とか、シェルスクリプトはあった
•けど、見てもよく分からない><
サ|バ
背景•インフラ周りが整備されてると嬉しいな
•簡単に試せる環境とか •いつでも動くように、スクリプトがメンテされてるとか
!!!
Infrastructure as Code
アジェンダ•背景 •Infrastructure as Code とは •関連ツールスタック •ヌーラボでの事例
Infrastructure as Code•インフラをコードとして表現 •アプリ開発で培った開発方法論を、インフラ領域にも適用可
•テスト / 継続的インテグレーション •コードレビュー / Pull Request
参考•naoya さんのブログ記事 • http://d.hatena.ne.jp/naoya/20131215/1387090668
•mizzy さんの Web+DB Press 「テスト駆動インフラ」 • http://gihyo.jp/magazine/wdpress/archive/2014/vol80
実は僕も 第3特集書いてます
アジェンダ•背景 •Infrastructure as Code とは •関連ツールスタック •ヌーラボでの事例
各ツールの関連
Vagrant•VirtualBoxやAWSなどの仮想マシンをコマンドで手軽に扱える
•AnsibleやChefとも連携可能Vagrant.configure(2) do |config| ! config.vm.provision "chef_solo" do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "httpd" end !end
Ansible•Python製のサーバ構成管理ツール •冪等性: 何度実行しても結果は同じ •サーバ側はPythonとsshdだけ
-‐ name: install requirement system packages action: yum name={{ item }} with_items: -‐ make -‐ gcc -‐ curl
serverspec•RSpec風のサーバ構成管理テストツール
•稼働前 / 稼働中のサーバにテスト
describe "#{ENV['TARGET_HOST']}.spec" do ! describe service('tomcat') do it { should be_running } it { should_not be_enabled } end ! describe port(8080) do it { should be_listening } end !...
Jenkins•継続的インテグレーションツール •コミット時や定期実行で自動ビルド
ハンズオンで実践!
https://www.flickr.com/photos/ochre_jelly/7066887773
ハンズオン +α
アジェンダ•背景 •Infrastructure as Code とは •関連ツールスタック •ヌーラボでの事例
ワークフロー
http://nulab-inc.com/ja/blog/nulab/nulab-immutable-infrastructure_1/
Packer
•イメージ (AMI) 作成ツール
•Ansibleを起動時に実行可能
{ "builders": [{ "type": "amazon-‐ebs", "region": "us-‐west-‐2", "source_ami": "ami-‐ccf297fc", "instance_type": "m1.small", "ssh_username": "ec2-‐user", "ami_name": "base {{isotime}}" }], "provisioners": [ { "type": "ansible-‐local", "playbook_file": "ansible/ami.yml", "role_paths": [ "ansible/roles/base" ] } ] }
Fabric•Python製のデプロイツール •シェルコマンドを列挙していく、シンプルな記述
@task def start_tomcat(): sudo('rm -‐f /usr/java/tomcat/temp/*.{index,data}') sudo('service tomcat start’) print green("Tomcat started!!!")
Typetalk•JenkinsやAnsibleの実行結果を通知 • / プラグインも提供
!
!
!
•Hubotで、Typetalk->Jenkinsの連携も
チャットってそんなに重要?Infrastructure as Codeの先には
DevOpsが見えてくる
DevOpsで関わる全ての人が手軽に扱える チャットは、ますます重要に!
ご清聴 ありがとうございました!