1. DQNEO

    Posted

    DQNEO
Changes in title
+ChefでCentOS6と7を判定して条件分岐する方法
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,57 @@
+## おさらい
+
+OSのタイプやバージョン番号を取得するには、
+
+* node[:platform_family]
+* node[:platform_version]
+
+などの値を参照すればよいです。
+
+これらの情報はohaiが収集してくれたものです。
+
+まず適当なレシピを作ってこれを確かめてみるとよいでしょう。
+
+## バージョン情報を取得するレシピ
+
+```ruby:default.rb
+log ":platform_family = " + node[:platform_family]
+log ":platform_version = " + node[:platform_version]
+log ":platform_version.to_i = " + node[:platform_version].to_i.to_s
+```
+
+## 実行結果
+
+### CentOS 6.6
+
+```
+ * log[:platform_family = rhel] action write
+
+ * log[:platform_version = 6.6] action write
+
+ * log[:platform_version.to_i = 6] action write
+```
+### CentOS 7.1
+
+```
+ * log[:platform_family = rhel] action write
+
+ * log[:platform_version = 7.1.1503] action write
+
+ * log[:platform_version.to_i = 7] action write
+```
+
+CentOS7からバージョン番号にパラダイム変化が起きているのが要注意点です。(1503はUbuntu的な年月のアレか?)
+
+## メジャーバージョンで分岐させる方法
+
+バージョン番号を`to_i`で整数に変換すると、分岐しやすくなります。
+
+```ruby:default.rb
+if platform_family?('rhel') && node['platform_version'].to_i == 7 then
+ log "this is rhel 7"
+elsif platform_family?('rhel') && node['platform_version'].to_i == 6 then
+ log "this is rhel 6"
+end
+```
+
+これでうまく行きました!