最近は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.
コメントを残す