นำเข้าโครงสร้างพื้นฐานคลาวด์ปัจจุบันของคุณไปยังการกำหนดค่าโครงสร้างพื้นฐาน As Code Terraform (HCL) หรือ/และไปยังสถานะ Terraform
ที่ Cycloid โครงสร้างพื้นฐาน As Code อยู่ใน DNA ของบริษัทตั้งแต่เริ่มต้น เพื่อช่วยให้ลูกค้าใหม่นำแนวทางปฏิบัติที่ดีที่สุดนี้ไปใช้ เราจึงตัดสินใจสร้าง 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 Modules ดังนั้นจึงจำเป็นต้องมี GO 1.17+
git clone https://github.com/cycloidio/terracognita
cd terracognita
make install
มีสองรายการใน AUR: terracognita-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 LICENSE
การเปลี่ยนแปลงที่สำคัญทั้งหมดในโครงการนี้จะถูกบันทึกไว้ในไฟล์นี้
รูปแบบจะขึ้นอยู่กับ Keep a Changelog และโปรเจ็กต์นี้ยึดตาม Semantic Versioning
Cycloid เป็นวิศวกรรมแพลตฟอร์มที่ยั่งยืนเพื่อให้ทุกคนสามารถโต้ตอบกับเครื่องมือ ระบบอัตโนมัติ และระบบคลาวด์ โดยไม่ต้องเป็นผู้เชี่ยวชาญและเกี่ยวข้องกับแนวทางปฏิบัติที่ดีที่สุด ภายในพอร์ทัลบริการตนเอง คุณจะพบโมดูลบางส่วนเกี่ยวกับการกำกับดูแล การปรับใช้ การดำเนินงาน Finops และ GreenOps InfraImport ภายใน Cycloid คือการแสดงภาพของ Terracognita
ณ ตอนนี้ เรามีเครื่องมือโอเพ่นซอร์สสามตัว:
...และฟังก์ชันการทำงานของแต่ละฟังก์ชันยังถูกฝังอยู่ในแพลตฟอร์มของเราด้วย ซึ่งคุณสามารถดูข้อมูลเพิ่มเติมได้ที่นี่