現在のクラウド インフラストラクチャをコードとしてのインフラストラクチャ Terraform 構成 (HCL) または Terraform 状態 (あるいはその両方) にインポートします。
Cycloid では、Infrastructor As Code が当初から会社の DNA に組み込まれています。新しい顧客がこのベスト プラクティスを採用できるよう、コミュニティによって構築された Terraform プロバイダーを利用して、クラウド インフラストラクチャ上の既存のインフラストラクチャを自動化された方法で Terraform コードに変換する Terracognita を構築することにしました。私たちは AWS、GCP、Azure、Vmware に焦点を当てました。
私たちは、このツールが人々が簡単な方法で IaC を導入するのに役立つと信じて、このツールをオープンソースにすることにしました。 Cycloid は、インフラストラクチャを Cycloid のパイプラインにインポートし、インフラストラクチャ図を生成し、単一のインターフェースからすべてのインフラ/アプリケーションのライフサイクルを管理できるようにするこのツールを提供します。
Terracognita への貢献に興味がある場合、または単に次の内容に興味がある場合は、公開ロードマップをご覧ください。高レベルの概要については、「Terracognita とは何ですか?」を参照してください。ブログ投稿するか、このビデオをご覧ください。
Terracognita は現在、AWS、GCP、AzureRM、VMware vSphere クラウド プロバイダーを Terraform (v1.1.9) リソース/状態としてインポートします。以下のバージョンを参照してください。
プロバイダー:
リリース ページにアクセスして、必要なシステム、アーキテクチャ、バージョンを選択してください。最新リリースをプルするには:
curl -L https://github.com/cycloidio/terracognita/releases/latest/download/terracognita-linux-amd64.tar.gz -o terracognita-linux-amd64.tar.gz
tar -xf terracognita-linux-amd64.tar.gz
chmod u+x terracognita-linux-amd64
sudo mv terracognita-linux-amd64 /usr/local/bin/terracognita
最新のソースを使用してビルドしてインストールでき、新機能やバグ修正をお楽しみいただけます。 Go モジュールを使用するため、GO 1.17 以降が必要です。
git clone https://github.com/cycloidio/terracognita
cd terracognita
make install
AUR には、terracognita-git (最新の git コミットをターゲットとする) と terracognita (最新の安定リリースをターゲットとする) の 2 つのエントリがあります。
yay -Ss terracognita
aur/terracognita 1:0.3.0-1 (+0 0.00%)
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration
aur/terracognita-git 1:v0.3.0.r27.gdfc5a99-1 (+0 0.00%)
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration
macOS ユーザーで Homebrew を使用している場合は、brew コマンドでインストールできます。
brew install terracognita
Terracognita の主な使用法は次のとおりです。
terracognita [TERRAFORM_PROVIDER] [--flags]
TERRAFORM_PROVIDER
使用するプロバイダー (例: aws
) に置き換えてから、他の必要なフラグを追加します。各プロバイダーには異なるフラグと異なる必要なフラグがあります。
より一般的なものは、HCL (またはモジュール) の出力ファイルと生成される TFState を示す--hcl
または--module
と--tfstate
です。
aws_instance
などの Terraform 名を使用して、複数のリソース--include
または--exclude
こともできます。
その他のオプションについては、いつでもterracognita --help
およびterracognita [TERRAFORM_PROVIDER] --help
を使用して、プロバイダーの特定のドキュメントを参照できます。
Terracognita の実際のコードベースの使用に関するいくつかのヘルパーを提供するmake help
もあります。
Terracognita は、インポート時に Terraform モジュールを直接生成できます。この機能を有効にするには--module {module/path/name}
使用する必要があります。その後、その特定のパス上にモジュールが生成されます。パスはディレクトリまたは存在しないパス (作成されます) である必要があります。パスの内容は (ユーザーの確認後に) 削除されるため、クリーンなインポートが可能です。
出力構造は次のようになります ( --module test
指定すると)。各ファイルは同じ「カテゴリ」からのリソースを集約します。
test/
├── module-test
│ ├── autoscaling.tf
│ ├── cloud_front.tf
│ ├── cloud_watch.tf
│ ├── ec2.tf
│ ├── elastic_load_balancing_v2_alb_nlb.tf
│ ├── iam.tf
│ ├── rds.tf
│ ├── route53_resolver.tf
│ ├── route53.tf
│ ├── s3.tf
│ ├── ses.tf
│ └── variables.tf
└── module.tf
デフォルトでは、変数のすべての属性が変更され、それらの変数はmodule-{name}/variables.tf
に配置され、次のようにmodule.tf
で公開されます。
module "test" {
# aws_instance_front_instance_type = "t2.small"
[ ... ]
source = " module-test "
}
この動作を変更したい場合は、大規模なインフラストラクチャの場合、多くの変数が作成されます。 --module-variables path/to/file
使用すると、そのファイルには実際に使用する属性のリストが含まれます。変数として、JSON または YAML にすることができます。
{
"aws_instance" : [
" instance_type " ,
" cpu_threads_per_core " ,
" cpu_core_count "
]
}
aws_instance :
- instance_type
- cpu_threads_per_core
- cpu_core_count
構築されたイメージを直接使用することも、独自のイメージを構築することもできます。 Docker イメージをビルドするには、次のコマンドを実行するだけです。
make dbuild
そして、使用したいイメージに応じて ( cycloid/terracognita
またはローカル ビルドterracognita
):
docker run cycloid/terracognita -h
例:
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export AWS_DEFAULT_REGION=xx-yyyy-0
docker run
-v " ${PWD} " /outputs:/app/outputs
cycloid/terracognita aws
--hcl app/outputs/resources.tf
ローカル版はdockerと同じように利用できます。ローカルでビルドするだけで済みます。
インポートした同じフォルダーで、terraform init コマンドと plan コマンドを実行できます。
terraform init
terraform plan -var access_key= $AWS_ACCESS_KEY_ID -var secret_key= $AWS_SECRET_ACCESS_KEY -var region= $AWS_DEFAULT_REGION
MIT LICENSE ファイルを参照してください。
このプロジェクトに対するすべての重要な変更は、このファイルに文書化されます。
形式は Keep a Changelog に基づいており、このプロジェクトはセマンティック バージョニングに準拠しています。
Cycloid は、専門家にならずに、ベスト プラクティスを尊重しながら、誰もがツール、自動化、クラウドを操作できるようにする持続可能なプラットフォーム エンジニアリングです。セルフサービス ポータル内には、ガバナンス、展開、運用、Finops、GreenOps に関するいくつかのモジュールがあります。 Cycloid 内の InfraImport は、Terracognita の視覚的表現です。
現時点では、次の 3 つのオープンソース ツールがあります。
...そして、それぞれの機能も当社のプラットフォームに組み込まれており、詳細については、こちらをご覧ください。