この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
弊社大瀧が参加したBPStudy#81のレポートで@mopemopeさんがご紹介されていた、クラウド環境でCoreOSを簡単に起動するcoreupというツールがとても面白そうだったので、AWSで試してみよう!としたのですが、僕の理解不足でうまく動かすことが出来ませんでした...
で、イラっとして「AWSに簡単にCoreOS環境を立ち上げるツール」としてboot2coreというスクリプトを書いてみました。CoreOS on EC2でDockerコンテナをクラスタリングする | Developers.IOでやったことを、AWS SDK for Rubyを使ってスクリプト一発で実行する感じです。
boot2coreの使い方
ツール一式をgit cloneでローカル環境にコピーします。
$ git clone https://github.com/smokeymonkey/boot2core.git
次にCoreOSをLaunchするときにUser-Dataとして食わせるための設定ファイルを作成します。etcd用のトークンはhttps://discovery.etcd.io/newから取得しておいて下さい。
$ cp cloud-config.yml.dist cloud-config.yml
$ vi cloud-config.yml
#cloud-config
coreos:
etcd:
discovery: "https://discovery.etcd.io/<取得したトークン>"
addr: "$private_ipv4:4001"
peer-addr: "$private_ipv4:7001"
units:
- command: start
name: etcd.service
- command: start
name: fleet.service
- command: start
name: docker.service
では実行します。実行時に聞かれるパラメータは以下のとおりです。
-
- ACCESS_KEY: ... EC2をLaunchしたいAWSアカウントのアクセスキー。
- SECRET_KEY: ... EC2をLaunchしたいAWSアカウントのシークレットキー。
- REGION: ... EC2をLaunchしたいリージョン。リストが表示されるので、リージョンの番号を入力して下さい。
- VPC_ID: ... EC2をLaunchしたいVPCのID。
- INSTANCE_TYPE: ... EC2のインスタンスタイプ。リストが表示されるので、選択したいインスタンスタイプの番号を入力して下さい。
- KEY_NAME: ... SSHで使用する秘密鍵の名前。ユーザcoreにインポートされます。
- ACCESS_FROM_IP_ADDRESS: ... SSHアクセス元のIPアドレス。この値がセキュリティグループに設定されます。
- USERDATA(file path): ... 前述で作成したcloud-config.ymlのパス。
- Number of Instances: ... 起動したいインスタンス数。
$ ruby ./boot2core.rb
ACCESS_KEY:
SECRET_KEY:
REGION: Select your region number ->
1 = ap-northeast-1
2 = ap-southeast-1
3 = ap-southeast-2
4 = eu-west-1
5 = sa-east-1
6 = us-east-1
7 = us-west-1
8 = us-west-2
REGION:
VPC_ID:
INSTANCE_TYPE: Select your instance type number ->
1 = t1.micro
2 = m1.small
3 = m3.medium
4 = m3.large
5 = m3.xlarge
6 = m3.2xlarge
INSTANCE_TYPE:
KEY_NAME:
ACCESS_FROM_IP_ADDRESS:
USERDATA(file path):
Number of Instances:
すると、指定したVPCにEC2インスタンスが起動しているので、あとはユーザcoreでSSH接続してお好きにどうぞ!
まとめ
結果的にAWS SDK for Rubyの勉強になって良かったです。Rubyとしては拙いところが多いのは自覚してますので、今後も改善していきたいと思います。ご指摘があれば是非@smokeymonkeyまで!