
動的ホストと静的ホスト、変数、グループの組み合わせで環境を管理するための適切なソリューションは何だろうかと思います。
私は、データセンター内の物理ホストと、特定のタスク (物理データベース ノード) の組み合わせ、およびいくつかの動的 VM を管理する Proxmox ホストと、物理的なパフォーマンスが十分でない状況 (アウトソーシング パフォーマンス ピーク) で新しい VM を管理するためのクラウド プロバイダーの組み合わせを考えています。
その場合、動的インベントリは良い方法です。もちろん、AWS、Hetzner などのプラグインはいくつかあります。しかし、それを静的エントリと組み合わせることは可能ですか?
私は、データベース内のリクエストごとにクラウド VM のリストを更新するすべてのエントリとスクリプトを含むデータベースを構築します。すべての動的ホストは、静的ホストおよびいくつかのグループ変数、ホスト変数とともにデータベースに保存されます。また、Python スクリプトがロードし、プレイブックで動的インベントリとして使用される JSON 動的インベントリを出力する Web サービスがあります。
私の質問は、このような設定をしているのは私だけでしょうか? VMWare ホストがいくつかあり、そのホスト上に動的な数の VM があり、さらに他の物理システムもいくつかある会社を考えると、この設定には何らかの「ツール」またはヘルプが必要であることは「明らか」です。しかし、私が見る限り、静的インベントリ (YAML、INI) または動的インベントリ (JSON) のいずれかがあります。しかし、すべての管理者が独自の動的インベントリ データベースを開発しているのでしょうか? それとも、特定のソフトウェア「製品」または「プロジェクト」があるのでしょうか? それとも、「静的」環境と「動的」環境で異なるインベントリを持つ方が「より良い」方法なのでしょうか?
答え1
Ansibleはいくつかのリリースインベントリプラグインはい、複数のオプションとして組み合わせることも-i
、複数のインベントリを含むディレクトリを指定することもできます。
たとえば、ディレクトリinventory/stage/
内に次のものがすべて含まれている可能性があります。inventory/prod/
- Hetzner の hcloud
- AWS の aws_ec2
- 静的ホストリストを含む YAML
- カスタムインベントリスクリプト
- 式からグループと変数を生成するために構築された
グループ名は特定のものに対して一貫している必要があるため、演劇では静的なパターンを使用できます。
構築済みかなり便利です。インベントリまたはホストからのファクトに Jinja 式を使用して、グループと変数を作成します。たとえば、ec2 タグとホスト名の正規表現をグループのメンバーにしたい場合があります。
これで十分でない場合は、独自のインベントリ プラグインを作成することもできます。通常、これらは 1 つの API と通信します (たとえば、Proxmox インベントリ プラグインをハックする場合)。または、Ansible 側の複数のインベントリを放棄し、自分に適したマルチ クラウド ツールを見つけて、インベントリ用の JSON を発行します。