cloudpack の がみさんです。
こんばんは。顔に疲労のでないイケメンになりたい私です。
同僚のy13iサンがsensu-server環境を作ってくれたので、クライアント登録や通知のテストをしていきます。
さてGithubに自前のsensu client監視用テンプレート(というかchefのリポジトリ)があったとします。
これをベースに他のリポジトリに移植して利用したいときどうしましょうか。
今回はgitのリモートリポジトリ登録を試したいと思います。
ベースリポジトリのcloneとリモートリポジトリの登録
ベースリポジトリにはbundler, berkshelf, sensu等, sensuをchef-soloで利用するための環境が入っています
orenomac$ git cloneorenomac$ git remote add ope-sensu-test /sensu-test.git
リモートリポジトリへの初回プッシュ
orenomac$ git push -u sensu-test master
Counting objects: 356, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (180/180), done.
Writing objects: 100% (356/356), 43.50 KiB | 0 bytes/s, done.
Total 356 (delta 148), reused 343 (delta 142)
To sensu-test.git
* [new branch] master -> master
Branch master set up to track remote branch master from sensu-test.
作業ブランチを登録したリモートリポジトリに変更
orenomac$ git checkout sensu-test/master
対象ホストにchef-clientをインストール
node/.jsonが作られるので
orenomac$knife solo prepare -F ssh_config sensu-client1
作業
orenomac$ git branch sensu-client-test
orenomac$ git checkout sensu-client-test
Switched to branch 'sensu-client-test'
※作業ブランチで目的の作業を行う(httpd監視設定とか)
orenomac$ git commit
[sensu-client-test 6d75492] テスト用クライアントの登録
2 files changed, 3 insertions(+), 2 deletions(-)
create mode 100644 nodes/sensu-client1.json
orenomac$ git push sensu-test sensu-client-test
適用
今回はsensu-client用ノードにsensu-clientをインストールして、rabbitmqへポーリングするだけのrecipeを適用しています。
orenomac$ bundle exec knife solo cook -F ssh_config sensu-client1
Running Chef on sensu-client1...
Checking Chef version...
Installing Berkshelf cookbooks to 'cookbooks'...
・
・
省
略
・
・
Recipe:
* service[sensu-client] action restart
- restart service service[sensu-client]
Running handlers:
Running handlers complete
Chef Client finished, 31/54 resources updated in 63.580449321 seconds
無事登録出来ました。(なんで自分で作ったらできなかったのだろうか)
作業ブランチをremote/masterブランチにマージ
書いたrecipe適用がOKだったらmasterへマージします。 NGだったら作業ブランチを破棄します。
orenomac$ git checkout master
orenomac$ git merge sensu-test/sensu-client-test
Updating d210296..6d75492
Fast-forward
nodes/sensu-client1.json | 1 +
orenomac$ git push sensu-test master
orenomac$ git -d sensu-test sensu-client-test
orenomac$ git push --delete sensu-test sensu-client-test
以上で作業完了です。これは自動化できますね〜。あとテスト。
所感
origin/master残ったままなので確実にoriginへpushしてしまいそうでむちゃくちゃ怖い。エイリアス変えてしまえばよいのかな?
テンプレートはBerkshelfで/vendor/cookbooks/に拾ってきて
override attributeで対処したほうがorigin/masterにプッシュすることないからいいかも。
Git力が足りない。
次はいつもつかってるBerkshelfで試したいと思います。