CoreOS on EC2を一発で起動するboot2coreを作った
はじめに
弊社大瀧が参加した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まで!