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インスタンスに解りやすい名前を付けようと思った次第です。 これからは
- インスタンスstop or start
- ec2ssh update
これで完璧。
デプロイとかに流用出来そう。
他にも
configに設定する
- IdentityFile
- user
とかも指定出来るから
作者のgithubを見てみると良い。
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.
まあ諦めて待ちましょう。
Postfix入れるならsendmailをアンインストールしとく
yum remove sendmail
それだけっちゃそれだけ。
サービス起動してもエラーを履く。
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だ。