勉強会を開催しました!「AWSを使っているならOpsWorksでDevOpsしよう!」、「AWS運用アレコレ」の二本立て
...こんにちは、平形です。
先日8/24、弊社で4回目の外部向けの勉強会を開催しましたので、その様子をご報告させていただきます。
今回はAWS関連のトピックを私、平形と同じく弊社エンジニアの赤川がお届けしました。

今回4回目となる勉強会も盛り上がりを増してきた事もあり、弊社代表の中村が自ら挨拶を買って出てくれました。
今回もたくさんの方々にご参加いただき、大変嬉しく思っています。
内容
今回は、
- AWSを使っているならOpsWorksでDevOpsしよう! by 平形
- AWS運用アレコレ by 赤川
の2本立てです。
イベントページはこちらのconnpassページにて
弊社では、AWS, GCP, AzureなどクラウドリソースをMSP事業、自社サービスで積極的に活用しております。今回はその中からAWSについてお話ししました。
今回の勉強会のもう一つの特徴は、スピーカーの2人とも今年第一子が誕生した新生育児パパという事です。育児と仕事の両立をして日々業務に精を出しています。
株式会社ISAOは、そんなイクメンエンジニアを応援しています!
AWSを使っているならOpsWorksでDevOpsしよう! by 平形

AWSのデプロイサービスの一つOpsWorksについて実際の業務で得た知見を発表しました。
AWS運用アレコレ by 赤川
AWSの障害対応など日々1,000台単位のEC2の運用を行なっている中から得られた運用のコツなどを発表しました。懇親会の様子

秋葉原名物の万世のハンバーグサンドです。
大変美味しく頂きました。

今回も多彩な領域のエンジニアの方々とお話しでき、有意義な交流会となりました。
超絶簡単で便利なVagrantを使ってみよう!
...こんにちは。デベロッパーの平形です。
はじめに
この記事ではVagrantの使い方を解説します。 なお、この記事は連載の続きになりますので、まだご覧になっていない方は、以下の記事を初めに読む事をおすすめします。 DevOps時代のアジャイルでスケーラブルな開発環境をVagrant,GitHub,Travis,Chef,OpsWorksで構築する
Vagrantとは?
Vagrant(ベイグラント)は、FLOSSの仮想開発環境構築ソフトウェア[1]。VirtualBoxをはじめとする仮想化ソフトウェアやChef(英語版)やSalt(英語版)、Puppetといった構成管理ソフトウェアのラッパーとみなすこともできる。 Vagrantを用いると、構成情報を記述した設定ファイルを元に、仮想環境の構築から設定までを自動的に行うことができる[2]。当初はVirtualBoxをターゲットとしていたが、1.1以降のバージョンではVMwareなどの他の仮想化ソフトウェアやAmazon EC2のようなサーバー環境も対象とできるようになった[3]。Vagrant自身はRubyで作成されているが、PHPやPython、Java、C#、JavaScriptといった、他のプログラミング言語の開発においても用いることができる[4][5]。 引用元:wiki
なぜVagrantなの?
まず現状の課題からお話します。 こんな事ってありませんか?
- 開発者のPCのOSがバラバラで環境構築の手順書作るのめんどくさい。
- てかWindowsの事なんか考えたくもないよ。
- ハンズオンの時にみんなの環境が違うから、みんな挙動が違って嫌になる。
Vagrantを使うとこんな事ができます。
- コードによる仮想マシンのOS指定、ネットワーク設定、利用するシステムリソースの指定。
- Chefなどの構成管理ツールを利用して環境構築する事ができる。
以下のメリットがあります。
- 複数の開発者に共通の開発環境を配布できる。
- 仮想マシンの設定が1つのファイルで管理する事ができるので、認識しやすい。
- WindowsでもMacでもLinuxでも共通の開発環境を提供できる。
vagrant使うのって面倒だと思いますか? めちゃくちゃ簡単です! まだ使ったことない人は、とりあえずインストールしてください!
インストール
VirtualBox
VagrantではVirtualBoxなどの仮想化ソフトウェアを使って仮想マシンを立ち上げる事になります。 今回はVirtualBoxを利用します。
ここからダウンロードしてインストール。
Vagrant
ここからダウンロードしてインストール。
クイックスタート
OSはubuntu 12.04(32bit)にします。
まず作業場所のディレクトリを作ります。
$ mkdir vagrant_test $ cd vagrant_test次にVagrant用の設定ファイルを作成します。
$ vim Vagrantfile以下を
Vagrantfileに貼り付けてください。# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise32" end仮想マシンを起動します。
DevOps時代のアジャイルでスケーラブルな開発環境をVagrant, GitHub, Travis, Chef, OpsWorksで構築する
...どうも。久しぶりです。 デベロッパーの平形です。
このブログに訪れたすべてのエンジニアの方々。 そして、エンジニア以外の方々。
とても感謝致します。 初めに言っておきますが、この記事ではコード、コマンドラインの一切は登場しません。
はじめに
私が今回お送りする内容は本当にスケーラブルな環境の構築、運用を手助けする事ができます。 連載記事で複数回に渡ってお届けしますが、この連載を読み終えそして実践していただければ、あなたは既にスケーラブルな環境で作業を行っている事でしょう。
この連載記事では、順番に必要なツールのインストール、使い方をハンズオン形式でお送りします。 実際に手を動かして実感していただく事がとても意味がある事だと思っています。 この回では、コード、コマンドラインは一切登場しません。次回以降にどんどん出てきます。 その前に**「伝えたい事があるんだ。君の事が好きだから」by小田和正**と叫ばせてください。
この記事は以下の方には不向きです。
- 俺は一生一人で生きていくんだ!と1日1回はトイレで意気込んでいる人。
- 後先の事なんか考えたくない。俺は今を生きているんだ!と週に3回は言っている人。
これらに該当する方。お疲れ様でした。出口はこちらです。
この記事は以下に該当する方に是非読んでいただきたいです。
- 開発者、インフラ担当者の方。
- これから新しいプロジェクトを立ち上げるんだけど、構成どうしようか悩んでる方。
- サーバーの台数が多くなったらどうしよう。と悩んでいる方。
- 開発要員が急に増えたらどうしよう。と悩んでる方。
- DevOpsとかスケーラブルな環境とかに興味があって、でも今ひとつ踏み出せない方。
- 上記を実践してみようとしたけど、挫折してしまった方。
- 開発環境で動いているコードがなぜか公開環境で動かなくて家に帰れない方。
- 本番反映が怖くて会社に行きたくない方。
- サーバーが落ちる事が不安で夜も眠れない方。
- 将来の事を考えると不安で不安で仕方なく、「とにかくもう、学校や家には帰りたくない〜。」by尾崎豊と口ずさんでしまう方。
それでは、夢の扉を開きましょう。
レガシーな開発と運用
- 開発環境、公開環境の構築は、構築手順書を元に手動でインストールしている。
- 公開環境のサーバー増設は1台ずつ手動でキッティングしている。
- パッチの適用、バージョンアップは手動で1台ずつ手順書を元に実行している。
- バージョン管理はしないで各自、修正ファイルをFTPでファイルをアップロードしている。
これらをヒューマンエラーなく、ストレスなく運用できるのはスーパーマンです。 そして、開発、運用メンバー全員が自分と同じスーパーマンでなければいけません。 凡人の僕には無理です。
現代の開発と運用
現代のもの凄い勢いで変化するサービス要求に耐えるには、様々なものを効率化しなければいけません。
素早くリリースしてユーザの反応を見ては仕様を変更してすぐに反映しまたリリースする。といった事も必要です。
近頃、開発運用の自動化は様々なメディアの記事で取り上げられ、賑わっています。 しかし、実際にどこまで自動化ができているのでしょうか?- バージョン管理
- 環境構築
- セキュリティパッチの適用
- バージョンアップ
- オートスケール
- 自動テスト
- 自動デプロイ
- 開発環境の配布
なかなか全部はできないですよね? でもやったほうが絶対に幸せになれます。
Chef-Soloでレシピを書く前の環境について(Vagrantfile,role,node,data_bags)
...こんにちは。小宮です。
いつのまにか今年の前半が終了しました。宇治金時がおいしい季節になってしまったようです。
それはともかく前回の続きです。 今回はChef-Soloのレシピを書く前の環境の定義などまでを書きます。Chef用語などは軽く解説してる、今日から使い始めるChefを見ていただくか定番の入門Chef Soloを見ていただくのが早いんではないかと思います。
Automated infrastructure is on the menuも英語ですがわかりやすいです。
やりたいこととしては以下のとおりです。
Vagrantfileを書いて仮想インスタンスをたてる
chefレポジトリを作る
chefクックブックを作る
nodeを定義する
roleを定義する
data_bagsを定義する
★今回はここまで★
レシピを書く
レシピをノードに適用する
serverspecテストを書く
テストを実環境に実行するテストの構成:
chef-solo元のadmserver:10.0.0.93
knife-solo適用クライアントwebserver:10.0.0.240
knife-solo適用クライアントdbserver:10.0.0.241
全てCentOS5.8です。・AWSの環境変数を定義
AWSのVPC上なので適宜定義しておきます
[shell]# cd # vi .ec2 export AWS_ACCESS_KEY_ID=****** export AWS_SECRET_ACCESS_KEY=******* export AWS_KEYPAIR_NAME=xxx-key export AWS_PRIVATE_KEY_PATH=/root/.ssh/xxx-key # source .ec2[/shell]・VagrantFileを書く
vagrant initを実行するとVagrantfileができますのでそれを編集し、
VPC上で仮想インスタンスを起動するための設定を書きます。Chef-SoloとVagrantの導入(VPC環境)
...こんにちは。プラットフォームの小宮です。
最近chef流行ってますね。
せっかくだからこの波に乗ってプロダクト環境に合わせてやってみよう的な記事を書こうかと思います。
さっさとServerspecまでたどり着きたいんですが、今回は導入のみの記事でレシピなどはまた次回以降に。
やってみよう的なレベルなのでリファクタリングし甲斐のあるレシピになる予感がします。さて今回Chef化を試みる環境はVPC上に移行する話になってます。(構成はweb2、db2、stg1、nat1です。ELB利用。soloで十分な感じ。)
Vagrant-awsでVPCつかう方法が可能なようなので、Vagrantを使用して構成管理を行いつつKnife-soloも使うことにします。
vagrantとsahara連携でOSの状態を保存してロールバックということが可能となります。
knife-soloだと/sbin等の下のrubyを消して入れ替えようとしてしまうことがあるらしいので、アプリケーションにおいてrubyを使用しないことを確認しておきます。vagrantを入れるのでruby1.8.7より上のバージョンをrbenvで入れます。
(CentOS5系の場合。6系や他のディストリビューションでは別途ruby -vで確認してください)実は、Chef-Clientを/opt/chefの下に入れた段階で以下のようにPATHを通しておけばrubyのバージョンは気にしなくてもよいかもしれません。
[shell]# curl -L https://www.opscode.com/chef/install.sh | bash # export PATH=$PATH:/opt/chef/embedded/bin/ # vi ~/.bashrc PATHをとおしておく[/shell] gemでchefを入れるのは古いやりかたみたいですね。・最初にOracleVirtualBoxを導入
入れる理由はVagrant-awsでインスタンスの起動と管理を行うため。
[shell]cat /etc/redhat-release CentOS release 5.8 (Final) yum install libXmu libXt mesa-libGL qt qt-x11 SDLwget http://download.virtualbox.org/virtualbox/4.2.12/VirtualBox-4.2-4.2.12_84980_el5-1.x86_64.rpm rpm -ivh VirtualBox-4.2-4.2.12_84980_el5-1.x86_64.rpm[/shell]
・ruby-1.8.7より新しいバージョンを導入(必要な場合)
[shell]yum -y install zlib-devel readline-devel openssl-devel yum install ruby ruby-devel rdoc irb rubygems yum install git –enablerepo=rpmforge[/shell]
rbenvのインストール
[shell]git clone git://github.com/sstephenson/rbenv.git ~/.rbenv[/shell]
rbenvのパスを設定する為に以下2行追記
[shell]vi ~/.bashrc export PATH="$HOME/.rbenv/bin:$PATH" eval “$(rbenv init -)” source ~/.bashrc[/shell] ここでのPATHは各環境に合わせてください(rbenvで入れない場合は/opt/chef/embedded/binに通す等)