استيراد البنية التحتية السحابية الحالية لديك إلى تكوين Infrastructure As Code Terraform (HCL) أو/و إلى حالة Terraform.
في Cycloid، تعد البنية التحتية كرمز موجودة في الحمض النووي للشركة منذ البداية. ولمساعدة عملائنا الجدد على تبني أفضل الممارسات هذه، قررنا إنشاء Terracognita لتحويل البنية الأساسية الحالية على Cloud Infrastructure إلى كود 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
يمكن استخدام الإصدار المحلي بنفس طريقة استخدام عامل الإرساء. كل ما عليك فعله هو بنائه محليًا.
في نفس المجلد الذي قمت باستيراده، يمكنك تشغيل أوامر 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. InfraImport داخل Cycloid هو التمثيل المرئي لـ Terracognita.
اعتبارًا من الآن، لدينا ثلاث أدوات مفتوحة المصدر:
...ووظيفة كل منها مضمنة أيضًا في منصتنا، والتي يمكنك معرفة المزيد عنها هنا.