orenoblog

エンジニアになりたいExcel方眼紙erの物語

sensu-clientのリポジトリをどのように管理しようかな(git remote編)

こんばんは。顔に疲労のでないイケメンになりたい私です。

同僚のy13iサンがsensu-server環境を作ってくれたので、クライアント登録や通知のテストをしていきます。

さてGithubに自前のsensu client監視用テンプレート(というかchefのリポジトリ)があったとします。

これをベースに他のリポジトリに移植して利用したいときどうしましょうか。

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

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

orenomac$ git clone <github_repository>
orenomac$ git remote add ope-sensu-test <repository_URL>/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: <Dynamically Defined Resource>
  * 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

無事登録出来ました。(なんで自分で作ったらできなかったのだろうか

f:id:buta9999:20140427004246p:plain

  • 作業ブランチを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で試したいと思います。