1. asam316

    Posted

    asam316
Changes in title
+Chefのメモ(ファイルコピー、環境変数)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,74 @@
+最近ChefとServerspecを始めたので、備忘録としてメモを記載。
+なるべく`bash`や`execute`以外のResourcesを書く方向で。
+
+# ファイルのコピー、リネーム
+
+レシピから転送するのは`cookbook_file`でいいとして、対象のサーバ上のファイルをコピー、リネームする。(バックアップ等の用途)
+
+## ファイルのコピー
+例)/etc/profileのコピー(/etc/profile.bak)
+
+```rb
+file "/etc/profile.bak" do
+ content IO.read("/etc/profile")
+end
+```
+
+## ファイルのリネーム
+例)/etc/httpd/conf.d/welcome.confをwelcome.conf.bakにリネーム
+コピーした後に元のファイルを消すしかない?それか`execute`で`mv`を実行するか。
+
+```rb
+file "/etc/httpd/conf.d/welcome.conf.bak" do
+ content IO.read("/etc/httpd/conf.d/welcome.conf")
+end
+
+file "/etc/httpd/conf.d/welcome.conf" do
+ action :delete
+end
+```
+
+# 環境変数の設定
+JBossを動作させるために`JAVA_HOME`を設定したり、`gem install pg`を実行するために、`/usr/pgsql-*.*/bin`を`PATH`に追加する。(pg_configのパスを通すため)
+`/etc/profile.d`ディレクトリ内にシェルを作成する。
+
+## 環境変数の値がレシピに依存しない場合
+
+JAVA_HOMEの値は`readlink -m $(which java)`で取得できるので、cookbook_fileで静的ファイルを転送する。
+
+・recipe
+
+```rb
+cookbook_file "profile-java.sh" do
+ path "/etc/profile.d/java.sh"
+end
+```
+
+・files/default/profile-java.sh
+
+```bash
+JAVA_PATH=`readlink -m $(which java)`
+export JAVA_HOME=${JAVA_PATH%/*/*}
+```
+
+## 環境変数の値がattributes等に依存する場合
+パスが`/usr/pgsql-*.*/bin`(*.*はバージョン)の場合、バージョンはパラメータによって変わるので`template`で転送する。
+レシピの中でシェルコマンドでpg_configのパスを取得して、その値を`template`から参照したりできるんですかね・・・?
+
+
+・recipe
+
+```rb
+# 9.2の場合、/etc/profile.d/postgresql92.shを作成
+template "/etc/profile.d/postgresql#{short_version}.sh" do
+ source "profile-postgresql.sh.erb"
+end
+```
+
+・templates/default/profile-postgresql.sh.erb
+
+```erb
+# PATHに/usr/pgsql-9.2/binを追加
+PGSQL_PATH=/usr/pgsql-<%= node['postgresql']['version'] %>/bin
+export PATH=$PATH:${PGSQL_PATH}
+```