წყარო: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform
ეს Terraform კოდის სტრუქტურის მაგალითი განკუთვნილია მცირე ზომის ინფრასტრუქტურისთვის რომელიც იყენებს შემდეგ კომპონენტებს:
მაგალითი შეიცავს კოდს, როგორც Terraform-ის კონფიგურაციის სტრუქტურირების მაგალითს მცირე ზომის ინფრასტრუქტურისთვის, სადაც არ არის გამოყენებული გარე დამოკიდებულებები(Dependencies).
შესანიშნავია დასაწყებად და რეფაქტირებისთვის
შესანიშნავია მცირე რესურსის მოდულებისთვის
კარგია მცირე და ხაზოვანი ინფრასტრუქტურის მოდულებისთვის (მაგალითად terraform-aws-atlantis)
კარგია მცირე რაოდენობის რესურსებისთვის (20-30-ზე ნაკლები)
ყველა რესურსისთვის საერთო მდგომარეობის(State) ფაილს შეუძლია Terraform-თან მუშაობის პროცესი შეანელოს, თუ რესურსების რაოდენობა იზრდება (განიხილეთ -target
არგუმენტის გამოყენება სამიზნე რესურსების რაოდენობის შესაზღუდად)
ეს Terraform კოდის სტრუქტურის მაგალითი განკუთვნილია საშუალო ზომის ინფრასტრუქტურისთვის რომელიც იყენებს შემდეგ კომპონენტებს:
2 AWS ანგარიშს
2 გამოყოფილი გარემო (prod
და stage
რესურსების გაზიარების გარეშე). თითოეული გარემო მუშაობს გამოყოფილ AWS ანგარიშში და მოიცავს რესურსებს ორივე რეგიონში
თითოეული გარემო იყენებს თვითნაწერ მოდულს modules/network
რომელიც ლოკალურად დირექტორიაში ინახება.
იდეალურია პროექტებისთვის, სადაც ინფრასტრუქტურა ლოგიკურად არის გამოყოფილი (ცალკე AWS ანგარიშები)
კარგია, როდესაც არ არის საჭირო AWS ანგარიშებს შორის გაზიარებული რესურსების ცვლილება (ერთი გარემო = ერთი AWS ანგარიში = ერთი მდგომარეობის ფაილი)
კარგია, როდესაც არ არის საჭირო გარემოს შორის ცვლილებების ორკესტრირება
კარგია, როდესაც ინფრასტრუქტურის რესურსები განსხვავებულია თითო გარემოზე დანიშნულებისამებრ და არ შეიძლება განზოგადდეს (მაგ., ზოგიერთი რესურსი არ არის ერთ გარემოში ან ზოგიერთ რეგიონში)
რაც უფრო იზრდება პროექტი, უფრო რთული იქნება ამ გარემოს ერთმანეთთან განახლების შენარჩუნება. განიხილეთ ინფრასტრუქტურის მოდულების გამოყენება განმეორებადი ამოცანებისთვის.
წყარო:
თითოეული გარემო იყენებს მზა ინფრასტრუქტურის მოდულის (alb
) განსხვავებულ ვერსიას რომლის კოდის წყაროც არის
წყარო: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform
ეს Terraform კოდის სტრუქტურის მაგალითი განკუთვნილია დიდი ზომის ინფრასტრუქტურისთვის რომელიც იყენებს შემდეგ კომპონენტებს:
2 AWS ანგარიში
2 რეგიონი
2 გამოყოფილი გარემო (prod
და stage
რესურსების გაზიარების გარეშე). თითოეული გარემო მუშაობს გამოყოფილ AWS ანგარიშში და მოიცავს რესურსებს ორივე რეგიონში
თითოეული გარემო იყენებს მზა ინფრასტრუქტურის მოდულის (alb
) განსხვავებულ ვერსიას რომლის კოდის წყაროც არის Terraform Registry
თითოეული გარემო იყენებს თვითნაწერ მოდულს modules/network
რომელიც ლოკალურად დირექტორიაში ინახება.
დიდ პროექტში, როგორიც აქ არის აღწერილი, Terragrunt-ის გამოყენების სარგებელი ძალიან თვალსაჩინო ხდება. იხილეთ კოდის სტრუქტურის მაგალითები Terragrunt.
იდეალურია პროექტებისთვის, სადაც ინფრასტრუქტურა ლოგიკურად არის გამოყოფილი (ცალკე AWS ანგარიშები)
კარგია, როდესაც არ არის საჭირო AWS ანგარიშებს შორის გაზიარებული რესურსების ცვლილება (ერთი გარემო = ერთი AWS ანგარიში = ერთი სახელმწიფო ფაილი)
კარგია, როდესაც არ არის საჭირო გარემოს შორის ცვლილებების ორკესტრირება
კარგია, როდესაც ინფრასტრუქტურის რესურსები განსხვავებულია თითო გარემოში და მიზანმიმართულად და მათი განზოგადება შეუძლებელია (მაგ., ზოგიერთი რესურსი არ არის ერთ გარემოში ან ზოგიერთ რეგიონში)
რაც უფრო იზრდება პროექტი, უფრო რთული იქნება ამ გარემოს ერთმანეთთან განახლების შენარჩუნება. განიხილეთ ინფრასტრუქტურის მოდულების გამოყენება (თაროზე მოთავსებული ან შიდა) განმეორებადი ამოცანებისთვის.