SSブログ

PostgreSQL 9.3をknife-soloでインストールする [Chef]

postgresqlのCookbookを用意


Cookbookは、以下のOpsCodeのpostgresql(3.0.4)を使用します。
http://community.opscode.com/cookbooks/postgresql

gitもtarも使える前提で、かつ、プロキシ設定も使える、Opscodeのアカウントも用意して環境がセットアップされているとして、以下のコマンドで、cookbookをリポジトリにインストールします。
(自分は、knife cookbook site installしたときのgitの動きがイマイチわかっていないので、downloadしています)
C:\Users\hoge\chef-repo\cookbooks> knife cookbook site download apt C:\Users\hoge\chef-repo\cookbooks> knife cookbook site download build-essential C:\Users\hoge\chef-repo\cookbooks> knife cookbook site download openssl

rsyncをvagrant up時にセットアップするようにする


rsyncがknife-soloの起動側と設定される側にないとknife-soloは動かないので、自動的にセットアップするように起動時にChefで動くようにします。
また、あちこちにプロキシの設定を事前にしておかないといけないので、これも自動的に設定するようにします。
具体的には、vagrantfileにChefを実行するように記述します。

[vagrantfile]
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "base" config.vm.network :private_network, ip: "192.168.56.201" # vagrant up のときに bootstrap.sh というスクリプトを実行する config.vm.provision :shell, :path => "bootstrap.sh" config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./chef-repo/site-cookbooks","./chef-repo/cookbooks" chef.http_proxy = "http://proxy.xxxxxx.co.jp:8080/" chef.https_proxy = "http://proxy.xxxxxx.co.jp:8080/" chef.run_list = [ "recipe[rsync]" ] end end

このとき、vagrantのプラグインであるvagrant-proxyconfを使用しているので、vagrant upする前にインストールしてきます。(最新版1.3.5のvagrantでは不要と思われます)
C:\Users\hoge\chef-repo> vagrant plugin install vagrant-proxyconf

bootstrap.shをvagrantfileから実行しているので、bootstrap.shも用意しておく。内容は、以下の通りです。(あらかじめプロキシの設定をしているのを集約している・・・結局、/etc/environmentだけでいいようです)

[bootstrap.sh]
#!/usr/bin/env bash HTTP_PROXY="proxy.xxxxxx.xx.jp:8080" HTTPS_PROXY="$HTTP_PROXY" # Exit if already bootstrapped test -f /etc/bootstrapped && exit echo "Setting HTTP Proxy for /etc/environment" cat <> /etc/environment http_proxy="http://$HTTP_PROXY/" https_proxy="https://$HTTPS_PROXY/" EOM date > /etc/bootstrapped

cookbookとして使うのは、
  • postgresql
  • apt
  • build-essential
  • openssl

site-cookbooksとして
  • rsync

を作っている。

rsyncのレシピを用意する


Cookbookを用意します。
C:\Users\hoge\chef-repo> knife cookbook create rsync -o site-cookbooks
rsyncのレシピを書きます。

[C:\Users\hoge\chef-repo\site-cookbooks\rsync\recipes\default.rb]
# # Cookbook Name:: rsync # Recipe:: default # # Copyright 2013, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # package "rsync" do action :install end
プロキシの設定をknife.rbに記述しておきます。

[C:\Users\hoge\chef-repo\.chef\knife.rb]
cookbook_path ["cookbooks", "site-cookbooks"] node_path "nodes" role_path "roles" data_bag_path "data_bags" #encrypted_data_bag_secret "data_bag_key" #knife[:berkshelf_path] = "cookbooks" http_proxy "http://proxy.xxxxxx.co.jp:8080/" https_proxy "http://proxy.xxxxxx.co.jp:8080/"

ここまで準備したら、vagrant upを実行します。
C:\Users\hoge\chef-repo> vagrant up

Cookbook「postgresql」をknife-soloで実行する


JSONファイルを以下の内容で用意します。JSONファイルは、chef-repoリポジトリのnodesディレクトリにhostname.jsonのファイル名で作成します。(ここでは、hostnameを「hoge201」として記述している。hostnameは、hostsファイルなどで名前解決されていなければならないので注意すること)

[hoge201.json]
{ "postgresql": { "version" : "9.3", "enable_pgdg_yum" : "true", "pgdg" : { "repo_rpm_url" : { "9.3" : { "centos" : { "6" : { "i386" : "http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm", "x86_64" : "http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm" } } } } }, "client" : { "packages" : ["postgresql93","postgresql93-devel" ] }, "server" : { "packages" : ["postgresql93-server" ], "service_name" : "postgresql-9.3" }, "contrib" : { "packages" : ["postgresql93-contrib"] }, "dir" : "/var/lib/pgsql/9.3/data", "password": { "postgres": "e8a48653851e28c69d0506508fb27fc5" }, "config" : { "listen_addresses" : "*" }, "pg_hba" : [ {"type":"local", "db":"all", "user":"postgres", "addr":"", "method":"ident" }, {"type":"local", "db":"all", "user":"all", "addr":"", "method":"ident" }, {"type":"host", "db":"all", "user":"all", "addr":"127.0.0.1/32", "method":"md5" }, {"type":"host", "db":"all", "user":"all", "addr":"::1/128", "method":"md5" }, {"type":"host", "db":"all", "user":"all", "addr":"192.168.56.0/24", "method":"md5" } ] }, "run_list" : [ "recipe[postgresql]", "recipe[postgresql::server]", "recipe[postgresql::contrib]" ] }
以下のコマンドにてknife-soloを実行して、postgresqlのCookbookを実行します。
C:\Users\hoge\chef-repo> knife solo cook vagrant@hoge201
PostgreSQL9.3のインストールが実行されれば、成功です。

この作業で、postgresユーザが作成され、かつ、/var/lib/pgsql/9.3/dataにデータベースが作成されます。
postgresユーザが作成されるのは、yumの動作であり、データベースが作成されるのは、Cookbookの設定です。データベースの位置を変更の場合は、JSONファイルの「dir」の指定の変更でよいと思われます。


共通テーマ:blog

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。