Импортирует вашу текущую облачную инфраструктуру в конфигурацию Terraform «Инфраструктура как код» (HCL) и/или в состояние Terraform.
В Cycloid концепция «Инфраструктура как код» заложена в ДНК компании с самого начала. Чтобы помочь нашим новым клиентам внедрить эту передовую практику, мы решили создать Terracognita для автоматического преобразования существующей инфраструктуры облачной инфраструктуры в код Terraform, полагаясь на поставщиков 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, который будет сгенерирован.
Вы также можете --include
или --exclude
несколько ресурсов, используя имя Terraform, например aws_instance
.
Для получения дополнительных опций вы всегда можете использовать terracognita --help
и terracognita [TERRAFORM_PROVIDER] --help
для конкретной документации поставщика.
У нас также есть make help
, которая помогает использовать реальную кодовую базу Terracognita.
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.
Все заметные изменения в этом проекте будут задокументированы в этом файле.
Формат основан на журнале изменений, и этот проект придерживается семантического управления версиями.
Cycloid — это устойчивая платформа, позволяющая любому взаимодействовать с инструментами, автоматизацией и облаком, не становясь экспертом и с учетом лучших практик. На портале самообслуживания вы найдете несколько модулей, посвященных управлению, развертыванию, операциям, Finops и GreenOps. InfraImport внутри Cycloid — это визуальное представление Terracognita.
На данный момент у нас есть три инструмента с открытым исходным кодом:
...и функциональность каждого из них также встроена в нашу платформу, о которой вы можете узнать больше здесь.