複数の DevOps が単一の Chef Cookbook をどのように管理するのでしょうか?

複数の DevOps が単一の Chef Cookbook をどのように管理するのでしょうか?

私はクックブックを作成し、manage.chef.ioそれをホストしてデプロイするために使用しています。私は GitHub プライベート リポジトリでクックブックをホストしました。

シナリオを考えてみましょう。
料理本にいくつかの変更を加えたがknife cookbook upload押すのを忘れるそれをGithubにアップロードします。

どうすれば、このようなことが起こらないようにできるでしょうか。誤っても起こりません。常に全員が最新のリポジトリを持っていることをどのように確認すればいいのでしょうか。そうでない場合はできないのと同じです。変更を ed していない場合はknife uploadできないのと同じです。git pushgit pull

同僚が GitHub からプルしましたが、変更が見つかりませんでした。そのため、彼は独自の変更を加えましたknife cookbook upload。しかし、彼は古いバージョンを持っているため、私の変更を置き換えます。

では、複数の DevOps 間でクックブックを管理するためのベストプラクティスは何でしょうか?

答え1

最もシンプルなアプローチは、一般的に、Chef Server へのプッシュを Jenkins などの CI サービスで制御することです。これにより、人間にはク​​ックブックのアップロードを実行する権限がないため、ソース管理のシリアル化が強制されます。また、これを回避するには十分な通信を行う必要がありますが、エラーが発生しやすくなります。ポリシー ファイルに関する一部の Chef ワークフローでは、通常のクックブックのアップロードをまったく使用しないため、この問題は発生しません。

関連情報