05 July 2014

Yosuke OTA

Vagrantの運用方法考えてみた

Why?

Vagrantは初期状態ではセキュリティ的によろしくない

  • user id = vagrant
  • password = vagrant
  • rsa key = ~/.vagrant.d/insecure_private_key

ファイアウォールの中だとパスワードいらない、ってのは暴論だよね。おかしいよね。
by kono先生

それじゃあ、Vagrantの運用方法について考えてみよう

そもそもvagrantって

開発環境を簡単に作ったり、壊したり、クローンしたり、コピーして人に投げることができるツール

クローンする場合を考えるとログイン方法は同一の方が良い?

パッケージし直すときのめんどくささ

~/.bash_historyとか、自分向けな内容はできるだけ消したい

解決策

自分向けのuserを作ってvagrantはlogin shellを/bin/falseにしてしまおう!

  • パッケージし直すとき
    • userを消すと同時に~user/を消す
    • vagrantのlogin shellを/bin/bashに戻す

自動化ノススメ

Ansibleを使ってProvisioning!

VAGRANT DOCS

  • vagrantのprovisioningが走るのは…
    • 初回のvagrant up
    • vagrant provision
    • vagrant reload --provision

今回の必要条件

  • 新しいuserをuseradd
    • Home Directoryも作成
    • sudoersに追加
      • NOPASSWDで
    • ssh用の鍵を作成
      • ~user/.ssh/authorized_keysに公開鍵を記述
  • VM内の/vegrant/Vagrantfileを変更
    • config.ssh.usernameを記述
    • config.ssh.private_key_pathを記述
  • user: vagrantを/sbin/nologin

作成したansibleなrepository

ansible-setuser-for-vagrant

使い方(2014-07-05時点)

  1. 鍵の作成
  2. ssh-keygen -t rsa -f [key_path]
  3. group_vars/allの編集
  4. new_userに自分の作成したいアカウントIDを指定 1. new_user: 'example'
  5. パスワードハッシュの生成 1. python -c "from passlib.hash import sha512_crypt; print sha512_crypt.encrypt('<PASSWORD>')"
  6. 鍵のpathを指定 1. public_key_path: '~/.ssh/example.pub 1. private_key_path: '~/.ssh/example
  7. Vagrantfileの編集
  8. 以下のコードを追記 config.vm.provision "ansible" do |ansible| ansible.playbook = "provisioning/playbook.yml" end
  9. 実行
  10. vagrant provision


blog comments powered by Disqus