はじめに
Chef-soloを使用してNetAppのストレージを管理する方法について記載する
前提
OS:Clustered Data ONTAP 8.2
NetApp Manageability (NM) SDK:5.2.2
Chefの環境が構築されていること
インストール
1 netapp cookbookをinstall
knife cookbook site install netapp
2 SDKの配置
SDKをダウンロード、ファイルを解凍してnetapp-manageability-sdk-5.2\lib\ruby\NetApp配下のファイルをcookbooks/netapp/libraries/にアップロードする
3 NaServer.rbの修正
vi NaServer.rb
require NaElement
↓
require File.dirname(__FILE__) + "/NaElement
4 cookbook/netapp/library/nteapp_api.rb修正
2015/5/11現在) HTTPのポートがデフォルトの80ではなく8080を使用するようになているので修正する
vi cookbook/netapp/library/nteapp_api.rb
@server.set_port(8080)
↓
@server.set_port(80)
system services web node show -fields http-port,https-port
node http-port https-port
------------ --------- ----------
node1 80 443
node2 80 443
Chef-solo実行
1 solo.rb修正
vi solo.rb
cookbook_path [ "~/chef-repo/cookbooks" ]
2 localhost.json修正
vi localhost.json
//localhost.json
{
"run_list" : [
"netapp::volume"
]
}
3 レシピ修正 ※今回はvolume.rb
vi cookbooks/netapp/recipes/volume.rb
# Cookbook Name:: netapp
# Recipe:: volume
netapp_volume 'demo_vol' do
svm "svm1"
aggregate "aggr10"
size "250m"
action :create
end
4 接続先を指定
vi cookbooks/netapp/attributes/default.rb
default[:netapp][:https] = false
default[:netapp][:user] = 'admin'
default[:netapp][:password] = 'パスワード'
default[:netapp][:fqdn] = 'Cluster mgmtのIPアドレス'
default[:netapp][:api][:timeout] = 60
※timeoutの設定が必要(サンプルには存在しない)
5 Chef-solo実行
chef-solo -c solo.rb -j ./localhost.json
6 ストレージ側で確認
volumeが作成されていること
volume show -vserver svm1 -volume demo_vol
まとめ
Clustered Data ONTAPの特性上、スケールアウトしていくにつれて構成管理が複雑になってしまう
Chefを使うことにより構成管理をコード化できる
※現状のcookbookではvolume moveした場合はレシピとかい離が発生する
参考
netaapp-cookbook
https://supermarket.chef.io/cookbooks/netapp
NMSDK download
http://mysupport.netapp.com/NOW/cgi-bin/software?product=NetApp+Manageability+SDK&platform=All+Platforms
※要アカウント登録
Use Chef to Manage Your NetApp Storage Infrastructure - ChefConf 2015
https://www.youtube.com/watch?v=2xoTOnygH-0