Help us understand the problem. What is going on with this article?

Vagrant + chef-zero 入門以前

More than 3 years have passed since last update.

開発環境を 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 がインストールされている

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした