현재 클라우드 인프라를 코드형 인프라 Terraform 구성(HCL) 및/또는 Terraform 상태로 가져옵니다.
Cycloid에서는 인프라로서의 코드(Infrastructure 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(최신 안정 릴리스 대상)의 두 가지 항목이 있습니다.
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 라이센스 파일을 참조하세요.
이 프로젝트의 모든 주목할만한 변경 사항은 이 파일에 문서화됩니다.
형식은 Keep a Changelog를 기반으로 하며 이 프로젝트는 Semantic Versioning을 준수합니다.
Cycloid는 전문가가 아니더라도 모범 사례를 존중하지 않고도 누구나 도구, 자동화 및 클라우드와 상호 작용할 수 있도록 하는 지속 가능한 플랫폼 엔지니어링입니다. 셀프 서비스 포털 내에는 거버넌스, 배포, 운영, Finops 및 GreenOps와 관련된 일부 모듈이 있습니다. Cycloid 내부의 InfraImport는 Terracognita를 시각적으로 표현한 것입니다.
현재 우리는 세 가지 오픈 소스 도구를 보유하고 있습니다.
...그리고 각 기능은 당사 플랫폼에도 내장되어 있습니다. 자세한 내용은 여기에서 확인하실 수 있습니다.