ec2sshを試してみた

結論

チョー便利。

大まかには作者のブログに乗ってるんですが一部訂正が必要だったので。

http://blog.mirakui.com/entry/20101205/1291551625

概要

中身はgemのライブラリです。

sshでec2に接続する時は

~/.ssh/config

を設定して

ssh app1

とかでつなぐと思いますが。

ec2はstopするとipが変わって一々書き換えるのが面倒くさい。 それを

ec2ssh init
ec2ssh update

の二回だけで全部のconfigを作ってくれる。

initは最初だけだから実質 「ec2に繋がらんな」と思ったら updateするだけで済む。

まじで便利。 これは色々流用出来そう。

導入

インストール

gem install ec2ssh

以上。 自分はbundler使ってる。

環境変数を設定

export AMAZON_ACCESS_KEY_ID="..."
export AMAZON_SECRET_ACCESS_KEY="..."

イニシャライズ

ec2ssh init

bundlerだったら

bundle exec ec2ssh init

設定読み込み

ec2ssh update

元記事だとこれで行けるんだけど。

Set aws keys at ~/.ec2ssh

と出る。

何か設定ファイルが必要みたいだから開いてみると。

vim ~/.ec2ssh
---
path: ~/.ssh/config
aws_keys:
  default:
    access_key_id: 
    secret_access_key: 
regions:
- ap-northeast-1

yamlファイルだった。

アクセスキーと シークレットキーをセットして。

ec2ssh update

キター

という事で

export AMAZON_ACCESS_KEY_ID="..."
export AMAZON_SECRET_ACCESS_KEY="..."

これは不要みたい。

作者のgithubを読んだらちゃんと変わってた。

configに書き込まれたログがダーっと流れて。 configに書き込まれたと思います。

configが上書きされるので 心配な人は念のためバックアップ取っておいた方が良いと思います。 configを入力補完させれば完璧。

ちゃんとec2インスタンスに解りやすい名前を付けようと思った次第です。 これからは

これで完璧。

デプロイとかに流用出来そう。

他にも

configに設定する

  • IdentityFile
  • user

とかも指定出来るから

作者のgithubを見てみると良い。

https://github.com/mirakui/ec2ssh

AWSのc3.largeがお得なんだけどAvailabilityZone内でいっぱいだった

時間が解決してくれるたらこの記事は役に立たないけど。

c3.largeはとってもお得なので現在特定のZoneで作れないみたいだ。

We currently do not have sufficient c3.large capacity in the Availability Zone you requested (ap-northeast-1c). Our system will be working on provisioning additional capacity. You can currently get c3.large capacity by not specifying an Availability Zone in your request or choosing ap-northeast-1a.

まあ諦めて待ちましょう。

ec2インスタンスのセキュリティグループは後から変更出来ない

タイトルの通り。

amiを吐き出してもう一度インスタンスを作り直すしか無いみたい。。。 セキュリティグループのルール自体を変える事は出来るけど、 このインスタンスだけ変えたい(新しく作ったセキュリティグループを適用したい)

が出来ない。。。

むー。中々辛いな。

xcode5&iOS7でアプリのアイコンを設定する

どっから設定するのか解らなかったら イメージとかを保存しているディレクトリに(多分どこでも良い)

icon.png

って名前で保存すればアイコンとして使ってくれるみたいだ。

xcodeの話なのかiOSの話なのか解らないけど、 iOS開発は完全に素人なのでまあとりあえず動くのが先という事で。

Vagrantでec2にインスタンスを作る

大まかな物は見つかるんだけど。 自分の要求通りにやっと情報が集められたから書いておく。

vagrant plugin install vagrant-aws
vagrant init

Vagrantファイルを作る

# 設定定義, あんま気にしてない
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    # defineについて調べる
    config.vm.define :amazonlinux do |amazonlinux|
        # ec2用のダミーbox
        amazonlinux.vm.box = "dummy"
        amazonlinux.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
        # プロビジョニングをshellで行う
        config.vm.provision :shell, :path => "provision.sh"
        amazonlinux.vm.provider :aws do |aws, override|
        # instanceに名前を付ける
        aws.tags = {
            'Name' => 'make vagrant',
            'Description' => 'vagrant test'
        }
        # awsのインスタンスタイプ
        aws.instance_type = "t1.micro"
        # Amazon Linux AMI x86_64 EBS(amazon image)
        aws.ami = "ami-173fbf16"
        # awsのセキュリティグループ
        aws.security_groups = ["お好きなもの, defaultでも良いのかな"]
        # "Tokyo"
        aws.region = "ap-northeast-1" 
        aws.availability_zone = "ap-northeast-1a"
        # AWSへのアクセスキー設定
        aws.access_key_id = ENV['AWS_ACCESS_KEY_ID']
        aws.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
        # awsのキーペアネームを書く
        aws.keypair_name = "keypairname"
        # ec2で作業をするユーザー名にオーバーライドする, ec2に使う秘密鍵にする
        override.ssh.username = "ec2-user"
        override.ssh.private_key_path = '~/.ssh/hoge.pem'
        # sedでrequitettyのとこをコメントアウト
        aws.user_data = <<-USER_DATA
      # ググったら出て来た, プロビジョニングする際にsudoが出来ない問題を対処
      # user_dataという値にshellを書けるみたい, 実際は--provisionで起動しても
      # プロビジョニングが先に走ってしまうからエラーが出る、起動後にvagrant provisionする
      # あんまり良く無いと思う。。。
      # インデントすると動かないので注意
#!/bin/sh
sed -i -e 's/^\\(Defaults.*requiretty\\)/#\\1/' /etc/sudoers
      USER_DATA
        end
    end
end

中々ゴールにたどり着かなかったのは

  • プロビジョニングの前にsudoの設定を変える
  • awsのapi周りの設定

かな。

vagrant up amazonlinux --provider=aws #インスタンス起動, プロビジョニングでこけるけど気にしない
vagrant  amazonlinux provision # プロビジョニング実行
vagrant amazonlinux destroy # インスタンス破棄

楽しい楽しい。 次はchefだ。