2

Consul のキーと値のストアを使用して、構成管理ツール (現時点では Ansible) を強化することを検討しています。これを使用して、関連する 2 つの問題を解決したいと考えています。

  1. 分散の防止: 一部のアイテム (パスワード、証明書など) は、構成ファイル全体に分散されています。それらを更新するには、面倒な手動の検索と置換が必要です。
  2. 更新の容易さ: 構成の変更を編集して git にコミットするのではなく、Consul を使用して頻繁に変更される項目を保存できます。

動的構成のために Consul (または同様のツール) を使用/統合する方法に関する一連の推奨事項を探しています。当然のことながら、答えは 1 つではありませんが、ここには一連の便利なプラクティスがあります。私の回答ではいくつかのアプローチを提供しますが、追加のアイデアを聞きたいです。

4

3 に答える 3

3

#1 を軽減するには、Consul をバックエンドとして使用できるシークレットを処理するツールであるHashicorps Vault ( https://www.vaultproject.io/ ) を調べることをお勧めします。

于 2016-06-09T06:48:12.030 に答える
3

しばらくの間、Consul をキーと値のストアとしていじくり回してきましたが、最も興味深い使い方はConsul Templateであり、それを使用してその場で構成を更新することだと思います。

私たちがおそらく目指している最終的な状態は、Ansible を使用して、変化が遅いことがわかっているものの基本イメージを構成し、Consul テンプレートを構成してから、これを AMI (これらの最初の 2 つのステップはおそらくPackerを介して行われる)にすることになると思います。 Terraformを使用して AWS の Auto Scaling グループにデプロイします(これは既にプロビジョニングに使用しています)。

次に、Consul のキーと値のストアを使用して、Consul テンプレートがインスタンスのクラスター全体に伝播するプロパティを変更します。また、インスタンスを Consul に登録する予定です。これは、Apache/NGINX 構成のロード バランシング メンバーや、クラスタリング用のユニキャスト アドレス指定可能メンバーのリストなど、他のインスタンスの構成にも影響します。

少し関連するメモとして、 mahnveが述べたように、Vaultは秘密を保存するための Consul への非常に優れたアドオンです。すでにかなり静的なシークレットに使用していますが、動的なシークレット生成の一部を使用して開始する予定です。これにより、追跡して取り消すことができる有効期間の短い API または SSH キーを要求できます。

于 2016-06-09T07:48:07.300 に答える
1
  1. これはまだ行っていませんが、consul を Ansible プレイに統合することを考えています。Ansible は最近、consul からルックアップ オプションを追加しました。

https://github.com/ansible/ansible/blob/devel/test/integration/roles/test_consul_kv/tasks/main.yml#L70

- debug: msg='key contains {{item}}'
  with_consul_kv:
  - 'key/to/retrieve'

そのため、プレイに Consul の値を直接入力できます。

  1. 私たちが検討しているもう 1 つのアプローチは、consul のテンプレート ツールを利用することです。また、構成ファイル全体を ansible がホストに植え付けた後にテンプレート化します。
于 2016-06-09T06:25:21.437 に答える