Vagrant タグの一覧です(2 件)

direnv を使って Vagrantfile にシークレットキーなどの情報をべた書きしないようにする

Vagrant + Digitalocean + Ansible でのサーバ構築も結構慣れてきたので、Vagrantfile や Ansible playbook を Github にプッシュしておこうと思ったのですが、Vagrantfile に digitalocean のAPIキーなど、公開してはいけない情報があったので direnv を使って隠すようにしました。

direnvは、ディレクトリに環境変数をセットして、そのディレクトリがカレントになった時だけ環境変数が有効になるというもので、使い方によってはかなり便利に使えるものだと思います。

direnvのインストールですが、OS Xの場合はHomebrewでインストール出来ます

$ brew install direnv

インストール後、zshrcに下記記述をして source ~/.zshrc します(他シェルの場合はドキュメントを確認下さい)

eval "$(direnv hook zsh)"

そして、direnv edit . とコマンドを打ち、立ち上がったエディターで

export SECRET_KEY=secretkey
のように記述し、保存します。保存すると、カレントディレクトリに .envrc というファイルが出来ます。

作成した環境変数をシェルで確認してみます。

$ echo $SECRET_KEY

今度はPythonで確認してみます。

>>> import os
>>> os.environ.get("SECRET_KEY")

肝心のVagrantfileへの記述する場合ですが、VagrantfileはRuby記法で書かれている為、Rubyで環境変数を取得するようにします。

ENV["SECRET_KEY"]
と書けばいいみたいです。

追記: .envrc は .gitignoreへ記述して公開リポジトリへアップしないようにしましょう!
追記その2:zshrc への記述を

if [ -x "$(which direnv)" ]; then
    eval "$(direnv hook zsh)"
fi
のようにするとdirenv有無にかかわらずzshrcを使い回せます。


Vagrant+DigitalOcean+Ansibleで作成したFlaskアプリにブラウザで素早くアクセスする

手持ちのマシン(MacBook Air (13-inch, Mid 2012))のSSD空き容量が少なくなってきたこともあり、ローカルにVMを立てるのをやめ、Vagrant+DigitalOcean+Ansibleを使ってFlask製アプリ(自家製ブログツール)を立ててこのエントリを書いています。

DigitalOceanでドロップレット(仮想マシン)を立てると毎度毎度新しいIPアドレス割り当てられるので、デプロイしたFlaskアプリにブラウザでアクセスするには、vagrant ssh-config というコマンドを叩いてIPを確認する必要があります。

$ vagrant ssh-config
Host default
  HostName 128.199.xx.xx
  User hoge
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hoge/.ssh/digitalocean/id_rsa.digitalocean.com
  IdentitiesOnly yes
  LogLevel FATAL

毎回だと非常に面倒くさいのでopen コマンドとawkを使って

$ open http://$(vagrant ssh-config | awk '$1~/^HostName/{ print $2 }'):5000

このようにアクセスするようにしました。 open にurlを渡すとデフォルトブラウザ(自分の場合はChrome)で立ち上がってくれるので便利です。


PAGE TOP