LoginSignup
1
3

More than 5 years have passed since last update.

Vagrant + chef-zero 入門以前

Posted at

開発環境を Vagrant + chef-zero で作成しようと思ったが、
chef-solo の時よりつまづきポイントが多かったので
"入門以前" ということで手順を作成しました。

前提

  • Mac で行う
  • Vagrant がインストールされている

事前準備

  • ChefDK をインストール
$ curl -L https://www.chef.io/chef/install.sh | sudo bash -s -- -P chefdk
  • knife-zero をインストール
$ sudo chef gem install knife-zero chef-zero --no-ri --no-rdoc
  • 環境変数 EDITOR を設定しておく
$ vi ~/.zshrc            # 使っているシェルに合わせて適宜変更

export "EDITOR=emacs"    # 好きなエディタで設定

Vagrant設定

  • 任意の作業ディレクトリに移動
$ cd ~/Vagrant
  • プロジェクト名とVagrant Box名を変数に入れておきます
$ PROJECT_NAME=development
$ BOX_NAME=centos/7
  • 今回の作業ディレクトリを作成してそこに移動しておく
$ mkdir ${PROJECT_NAME}
$ cd ${PROJECT_NAME}
  • Vagrantfile作成
$ vagrant init ${BOX_NAME}

$ vi Vagrantfile
  • network設定をコメントアウト
Vagrantfile
# config.vm.network "private_network", ip: "xxx.xxx.xxx.xxx"
↓
config.vm.network "private_network", ip: "xxx.xxx.xxx.xxx"
  • Vagrantを起動
$ vagrant up --provider virtualbox
  • SSH設定を .ssh/config に記載しておく
$ vagrant ssh-config --host ${BOX_NAME} >> ~/.ssh/config

knife-zero で chef を設定

  • knife.rb を作成
$ mkdir chef-repo
$ cd chef-repo
$ vi knife.rb
knife.rb
local_mode true
chef_repo_path File.expand_path('../', __FILE__)

knife[:use_sudo] = true

knife[:automatic_attribute_whitelist] = %w[
  os
  os_version
  hostname
  ipaddress
  roles
  recipes
  platform
  platform_version
  cloud
  cloud_v2
  chef_packages
]
  • ノードを登録
$ chef exec knife zero bootstrap ${BOX_NAME} --node-name ${PROJECT_NAME}
  • ノードリストを表示
$ chef exec knife node list
  • ノードの詳細を確認
$ chef exec knife node show ${PROJECT_NAME}
  • ノード設定ファイルを作成
$ vi nodes/${PROJECT_NAME}.json
  • normal 配下に FQDN設定 を付け足す
${PROJECT_NAME}.json
# 変更前
"normal": {
    "knife_zero": {
      "host": "{ホスト名}"
    },

# 変更後
"normal": {
    "knife_zero": {
      "host": "{ホスト名}"
    },
    "fqdn": "{ホスト名}",  # <<<<< {ホスト名} ${BOX_NAME} と同じ
  • 共通cookbookを作成(今回は common という名称で作成)
$ chef exec knife cookbook create common
  • レシピに net-tools を設定
$ vi cookbooks/common/recipes/default.rb
cookbooks/common/recipes/default.rb
package "net-tools" do
    action :install
end
  • ノードに対する run_list に common を設定
$ chef exec knife node run_list add ${PROJECT_NAME} common
  • knife zero converge を実行
$ chef exec knife zero converge "name:${PROJECT_NAME}"

動作確認

  • VagrantにSSHログイン
$ ssh ${BOX_NAME}

# または
$ vagrant ssh
  • ifconfig を実行
$ sudo ifconfig
  • ifconfig が実行できれば net-tools がインストールされている

これで、あとは開発環境用にレシピをもりもり書いて行けば大丈夫そうです。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3