將目前的雲端基礎架構匯入基礎架構即程式碼 Terraform 配置 (HCL) 或/和 Terraform 狀態。
在 Cycloid,基礎設施即程式碼從一開始就融入了公司的 DNA。為了幫助我們的新客戶採用這種最佳實踐,我們決定建立 Terracognita,依靠社群建構的 Terraform 提供程序,以自動化方式將 Cloud Infrastructure 上的現有基礎設施轉換為 Terraform 程式碼。我們專注於 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(針對最新的穩定版本)。
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
或--module
和--tfstate
它指示 HCL(或模組)的輸出檔案和將產生的 TFState。
您也可以使用其具有的 Terraform 名稱(例如aws_instance
--include
或--exclude
多個資源。
如需更多選項,您隨時可以使用terracognita --help
和terracognita [TERRAFORM_PROVIDER] --help
取得提供者的特定文件。
我們還提供了make help
,為使用 Terracognita 的實際程式碼庫提供了一些幫助
Terracognita可以在匯入時直接產生Terraform Modules。若要啟用此功能,您需要使用--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 許可證文件。
該項目的所有顯著變更都將記錄在該文件中。
該格式基於保留更改日誌,並且該項目遵循語義版本控制。
Cycloid 是一個可持續的平台工程,允許任何人與工具、自動化和雲端進行交互,而無需成為專家並遵守最佳實踐。在自助服務入口網站中,您可以找到一些有關治理、部署、營運、Finops 和 GreenOps 的模組。 Cycloid 內的 InfraImport 是 Terracognita 的視覺表示。
截至目前,我們有三個開源工具:
....每個功能也嵌入在我們的平台中,您可以在此處了解更多資訊。