VagrantでChef環境を作る

Pocket

最近はChefで色々と遊んでいますが、Vagrant上にrecipeを使ってChef環境を作ってみます。
前提としてMACにChef環境が出来ているものとします。
MAC環境ができていない場合は前回の記事を参考に準備してください。

Vagrantの用意

いつも通りからっぽの環境を用意します。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://atlas.hashicorp.com/search.
  config.vm.box = "centos6.6"
  config.ssh.pty = true;
  config.vm.define :server do |server|
    server.vm.network "private_network", ip: "192.168.10.104"
  end
end

リポジトリの作成

MAC(ホスト側)にリポジトリを作成します。
※既に作成されている場合は飛ばしてください。

chef generate repo chef-repo

cookbookの作成

chef様のcookbookを作成します。

knife cookbook create chef-server

Recipeの作成

vim cookbooks/chef-server/recipes/default.rb
#
# Cookbook Name:: chef-server
# Recipe:: default
#
# Copyright 2015, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
#package "git" do
#  action :install
#end

bash "vagrant export" do
  user 'vagrant'
  group 'vagrant'
  cwd '/home/vagrant'
  environment "HOME" => '/home/vagrant'
  action :run 
end

execute "chef-install" do
  command <<-EOC
    curl -L https://www.opscode.com/chef/install.sh | sudo bash -s -- -P chefdk
  EOC
  creates '/opt/chefdk' 
end

execute "gem-install knife-zero" do
  command "chef gem install knife-zero"
  creates ENV['HOME'] + "/.chefdk/gem/ruby/2.1.0/gems/knife-zero-1.10.0/" 
end

["chef-zero", "json"].each do |pkg|
  gem_package pkg do 
    action :install
	gem_binary '/opt/chefdk/embedded/bin/gem'
  end
end

knife-zeroをgem_packageでインストールした時にrootのホームディレクトリ配下に作成されてしまったので
executeでインストールしています。
また、createsを指定するとcreatesで指定したディレクトリ、ファイルが存在した場合は実行しないように
制御を掛ける事ができます。
追加インストールしたいモジュールをrecipeに追加して、再度実行する際に
既に完了している処理をスキップさせる事ができます。

対象ノードの設定

knife zero bootstrap 192.168.10.104 --ssh-password vagrant --sudo -N local-node

nodeに実行するCookbookを追加

knife node run_list add local-node chef-server

cookbookを適用する

knife zero converge 'name: local-node' -x vagrant  -a knife_zero.host --ssh-password vagrant

まとめ

なれてくると簡単に作る事が出来ますね。
Chefをメインにするのは今回が最後になりますが、次回以降もできるだけ
Chefで環境を構築していきたいと思います。



Post Footer automatically generated by Add Post Footer Plugin for wordpress.

びのっち

関東圏で活動しているとてもマイペースなSEです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*