Hatena::ブログ(Diary)

優々自適

2014-05-08

[][][]Vagrant1.5でEC2インスタンスを立ち上げる設定

今度はVagrantからEC2インスタンスsshアクセスした後、プロビジョニングしたい。
ということでやってみる。

  • 参考

no title
no title
Vagrant 1.1 で EC2 を vagrant up - naoyaのはてなダイアリー

$ vagrant plugin install vagrant-aws

    • box追加
$ vagrant box add aws https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

    • VagrantFile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "aws"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id     = "<ACCESS_KEY_ID>"
    aws.secret_access_key = "<SECRET_ACCESS_KEY>"
    aws.keypair_name = "kamiya"
    aws.instance_type = "t1.micro"
    aws.region = "ap-northeast-1"
    aws.ami = "ami-c9562fc8"
    aws.security_groups = [ '<SECURITY_GROUPS>' ] 

    override.ssh.username = "ec2-user"
    override.ssh.private_key_path = "~/.ssh/aws-kamiya.pem"

  end

end

$ VAGRANT_LOG=DEBUG vagrant up --provider=aws

これ、最初デバッグつけてなかったんだけど、まんまno titleの”ハマったところ”の現象になって付けた。
らとっても便利だった。
なかなかこの記事に辿りつけなくて遠回りしちゃった。

そして念願の

$ vagrant ssh

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.03-release-notes/
1 package(s) needed for security, out of 18 available
Run "sudo yum update" to apply all updates.

キターやったーー。

    • プロビジョニング

立ちあげた後なんだけど、プロビジョニングも普通に追記すればおk。

    config.vm.provision :fabric do |fabric|
      fabric.fabfile_path = "./provision.py"
      fabric.tasks = ["execute"]
    end

これは前回のFabric設定

で、

$ vagrant provision

      • こんなエラーが出たら
Fatal error: sudo() received nonzero return code 2 while executing!

/etc/sudoersの下記をコメントアウト

Defaults    requiretty

あとSecret Access Keyの取得方法がよりセキュアになったみたいで、IAMマネジメントのコンソールから取得するようだ。
これの通り。
no title
Getting Started with Amazon SQS - Amazon Simple Queue Service
Secret Access Keyは取得直後の一度しか表示されない。

2013-08-11

[][]knife-soloを使ってChef環境を構築

前回の続き。

今回はknife-soloでゲストOSにchef環境をつくる。
chef-soloとknife-soloで手軽に環境構築をする - Bouldering & Com.を見ながら。

すべてホストOSMac側)での作業です。

$ sudo gem install chef
$ sudo gem install knife-solo

  • knifeの設定ファイルを作る
$ knife configure
Password:
WARNING: No knife configuration file found
Where should I put the config file? [/path/to/.chef/knife.rb] 
Please enter the chef server URL: [https://machine-name:443] 
Please enter an existing username or clientname for the API: [username] 
Please enter the validation clientname: [chef-validator] 
Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] 
Please enter the path to a chef repository (or leave blank): 
*****

You must place your client key in:
  /path/to/.chef/username.pem
Before running commands with Knife!

*****

You must place your validation key in:
  /etc/chef-server/chef-validator.pem
Before generating instance data with Knife!

*****
Configuration file written to /path/to/.chef/knife.rb

  • VMsshできるように設定
    • VagrantFileの設定
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network :private_network, ip: "192.168.33.10"

最後のコメントアウトを外す

    • ~/.ssh/configの設定
$ emacs ~/.ssh/config 
Host 192.168.33.10
  User vagrant
  Port 22
  IdentityFile "~/.vagrant.d/insecure_private_key"

$ knife solo prepare vagrant@192.168.33.10
Bootstrapping Chef...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
101  6790  101  6790    0     0    913      0  0:00:07  0:00:07 --:--:-- 13942
Downloading Chef 11.6.0 for el...
Installing Chef 11.6.0
warning: /tmp/tmp.pJDflK3i/chef-11.6.0.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing...                ########################################### [100%]
   1:chef                   ########################################### [100%]
Thank you for installing Chef!
Generating node config 'nodes/192.168.33.10.json'...

ssh設定したけどどうにもconnection refuseされて困ってたけどvagrant halt, vagrant upで再起動したらいけた。


てかそもそもknife, knife-soloとは。
・knife:chefに同梱されてる管理ツール
・knife-solo:knifeを使うためのプラグイン。chefのレシピをいちいちgithubとかから経由しなくてもローカルで作ったレシピをrsyncしてリモートでchef-soloを実行してくれるらしい。
開発メモ#5 : Amazon Linux で knife-solo を使って chef-solo 実行 - naoyaのはてなダイアリー

2013-08-08

[][]MacOS X上に仮想環境を構築

ローカルのデスクトップ環境にゲストOSを搭載したメモ。
目的は
・違うMacになってもさくっと環境移行したい(もーすぐ新しいMacがくる…!
・プロジェクトの人数増えてもさくっと環境構築さしたい
あたり。

VirtualBoxとVMWare Fusion(有料)がいいよって言われてちょっと調べた。
VMWare Fusion:Win<->Macの移行が楽
VirtualBox:無料、周りで使ってる人多い
no title
で、私の場合はVirtualBoxで充分そうなのでそちらで。

Downloads ? Oracle VM VirtualBox
からダウンロード、インストール

no title
からダウンロード、インストール

A list of base boxes for Vagrant - Vagrantbox.es
から好きなものを。
私はCentOS 6.4 x86_64 Minimal (VirtualBox Guest Additions 4.2.12, Chef 11.4.4, Puppet 3.1.1)にしてみた。

$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
$ vagrant init centos64
$ vagrant up

  • sshしてみる
$ vagrant ssh
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ 


とりあえずインストールしてsshでCentOS環境に入れましたよってとこまで。

あと、これがとってもわかりやすかった。
no title

2013-07-04

[][][]静的ファイルリリースの自動化

css, jsのリリース作業自動化について検討してみた。

SERVER=サーバのIP
TARGET_DIR=${WORKSPACE}
CSS=${TARGET_DIR}/css/*.css
JS=${TARGET_DIR}/build/*.js
IMG=${TARGET_DIR}/img/sprite/
APACHE_PATH=/path/to/apache
ID_RSA_PATH=/path/to/jenkins/.ssh/id_rsa

# grunt for js
chmod 700 sh/jenkins-grunt.sh
${TARGET_DIR}/sh/jenkins-grunt.sh

# compass for css
export PATH=/usr/local/bin:$PATH;
compass compile sass/

# rsync
# css
rsync -avz -e ssh ${CSS} user@${SERVER}:${APACHE_PATH}/htdocs/web/css/
ssh -i ${ID_RSA_PATH} user@${SERVER} chmod 777 ${APACHE_PATH}/htdocs/web/css/*

# js
rsync -avz -e ssh ${JS} user@${SERVER}:${APACHE_PATH}/htdocs/web/js/
ssh -i ${ID_RSA_PATH} user@${SERVER} chmod 777 ${APACHE_PATH}/htdocs/web/js/*.js

# img
ssh -i ${ID_RSA_PATH} user@${SERVER} rm ${APACHE_PATH}/htdocs/web/img/sprite/*
rsync -avz -e ssh ${IMG}/*.png user@${SERVER}:${APACHE_PATH}/htdocs/web/img/sprite/

こんな感じで一応できた。
ちなみにchmodとかしてるのはテスト環境だからであって本番環境では必要ない。

jenkins-grunt.sh
https://github.com/fuzzy31u/static-jenkins-skeleton/blob/master/sh/jenkins-grunt.sh

2012-08-15

[][]リモートプロジェクトをworkspaceに取り込む方法

2パターンある。EGitプラグインが入っている前提で。

■コマンドでgit cloneした後にworkspaceに取り込む

  1. $ git clone ***@***.git
  2. $ mvn eclipse:eclipse <eclipseからプロジェクトとして認識させる
  3. Eclipseで「Import>Existing Projects into Workspace>Select root directory」
  4. 「Team>Share Project>Git」で同期

■Eclipseから取り込む

  1. Import>Git>Projects from Git>URI
  2. LocationのURIの欄に「***@***.git」を入力
  3. ConnectionのProtocolの欄で「ssh」を選択
  4. ひたすらNext
  5. 「Select a wizard to use for importing projects」で「Import existing projects」を選択
  6. ターミナルから「$mvn eclipse:eclipse」を実行
  7. Eclipseに戻りNext、Finish


ちなみにmvn eclipse:eclipseをやる理由は.projectなどのファイルがリモートプロジェクトに存在してないからであって、そもそも存在している場合はやる必要はない。