0

質問題で述べたツールを使って派手なCIパイプラインとCDパイプラインを構築したとしましょう。変数を同期させるための良い解決策 - Terraform、Chef、Jenkins、Octopus Deploy

また、これらのシステムのすべてに変数でパラメータ化された設定ファイルなどがあるとします。実際には、それらの変数をすべて一致させる必要がある変数です。ホスト名、ポート、接続文字列など...

これらの変数を1つの場所または少なくとも1つの場所に保持するには、どのようにしてツールを利用できるのでしょうか。に?

これまでのところ、いくつかの自動テストを書くことをお勧めしますが、変数は一般的にシステム自体に保存されているため、ちょっと気味悪です。変数をソースに設定することができますが、その中には安全な変数(プロダクションパスワードなど)があります。これはやはり妥協ではありません。

これらの変数は数多くあり、私がこの道をもっと先んじると、実際の問題になることがわかります。

誰でもこれを解決しましたか?

+0

設定がソフトウェアから切り離されていますか?あるいは、後でCI/CDパイプラインで変更することなく、バイナリに直接コンフィギュレーションをベイク処理していますか? – Bricktop

+0

設定は設定ファイルでトークン化されます。 – Stimul8d

+0

これはConsul - https://www.consul.io/のようなものの良いユースケースのようです。 "同期"問題とセキュア変数の格納の両方を解決することができます。 –

答えて

3

あなたの設定管理システム(シェフ)は、CIシステムのすべての変数の配管を担当する必要があります。 Terraformの状態、および他のデータベースは別々に保持する必要がありますが、CMシステムは「現在のジョブのデータベースがどこにあるか」という他のツールに通知する必要があります。

さまざまなレイヤーで変数を検証する方法がたくさんあります - シェフのPolicyfileスタッフがビルドタイムに移動しようとしますが、最も重要なことは違いを最小限に抑えることです環境間でたくさんの人々がきれいな一連の展開段階から始まり、3年後にはそれぞれが非常に野性的で羊毛で奇妙なので、その段階ではほとんどのユーティリティが失われています。たとえそれがより困難で高価であっても、 "すべてはどこでも同じです"という一貫した主張者であることは、政治的に重要な仕事です。

関連する問題