cloudpack の がみさんです。

こんばんは。顔に疲労のでないイケメンになりたい私です。
同僚のy13iサンがsensu-server環境を作ってくれたので、クライアント登録や通知のテストをしていきます。

さてGithubに自前のsensu client監視用テンプレート(というかchefのリポジトリ)があったとします。
これをベースに他のリポジトリに移植して利用したいときどうしましょうか。

今回はgitのリモートリポジトリ登録を試したいと思います。

ベースリポジトリのcloneとリモートリポジトリの登録

ベースリポジトリにはbundler, berkshelf, sensu等, sensuをchef-soloで利用するための環境が入っています

orenomac$ git clone orenomac$ 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で試したいと思います。

こちらの記事はなかの人(がみさん)監修のもと掲載しています。
元記事は、こちら