áá°áá»á¬ážá áœá¬ááẠáááºážááá¯á·ááá±á·á ááºáá¯ááºáááºážááœááºááœáẠTerraform ááᯠááááŒá®ážá¡áá¯á¶ážááŒá¯ááŒáá±á¬áºáááºáž áááºážá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºáá»á¬ážááᯠááááºáá®ážááá±ážáá«á á¡ááœá²á·ááá¯ááºážááẠáááºážáááá¯ááºááá¯ááºáááºážáááºážáá»á¬ážááŸáá·áº áááºážáááºážáá»á¬ážááᯠáá®ááœááºááẠááá¯á¡ááºáááºá
áááºáá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááẠááá¯ážááŸááºážááá±á¬ááºáá±áá»á¬áááº- á¡áááºážá¡ááŒá áºá¡áááºážááẠ+ developer á¡áááºážáááºá á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸá áááºážááŒá±á¬ááºážá¡áá»áá¯ážáá»áá¯ážááœáẠááŒá®ážááœá¬ážáá¬áááºá Terraform modules áá»á¬ážááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡á¯ááºá á¯ááœá²á·áááºá áá¯ááºáá»á¬ážááᯠááá¯áá«áá»á¬ážá¡ááŒá Ạá á¯á ááºážááẠáááºážáááºážáá»á¬ážááᯠáááºááŸá¬ááœá±á·áá«ááá¬ážá á¡ááŒá¬ážáá¬áá»á¬áž ááŸá¬ážááœá¬ážááá¯ááºáá«ááá²á (áá¬áááºááŒá®áž áá±á¬ááºáá¯á¶ážá áá¬áž)
á¡áá»áááºááœá±áá¯ááºááœááºááœá¬ážááŒá®áž áááºážáá²á·á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á áááºážá¡áááºááœá±ážáááá á¹áá¬ááºá¡áá áºááá¯áá¶á á¬ážááá±ááá·áº áá¬ááŒá±á¬áá·áºáá²á á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážááœáẠáá¬ážááááºááá¯ááºáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážá¡ááœáẠáááºá áá¯ážááááºáá±ááááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠááŸáá·áº áá¯ááºááᯠáááááºááŒá±á¬ááºáá±áá«ááẠ- ááááºá¡áá±ááŒáá·áº áááºááẠáá¯ááºáá±á¬ááºáá»ááºá¡áá áºáá»á¬ážááᯠááŸá±á¬áá·áºááŸá±ážá á±ááẠááá¯á·ááá¯áẠá¡áááºá¡ááœá±ážááᯠáá»áŸá±á¬á·áá»ááá¯ááºáááº...
Github ááŸá AWS á¡ááœáẠTerraform community modules á¡á á¯á¡áá±ážááᯠáá¯á¶ážááŸá áºááŒá¬ á á®áá¶ááá·áºááœá²ááŒá®ážáá±á¬ááºá áá¯ááºáá¯ááºáá±ážááœáẠTerraform ááᯠáá±ááŸááºááááºážááááºážááŸá¯ááŒá¯áá¯ááºááŒá®ážáá±á¬áẠAnton Babenko ááẠáááºážáá¡ááœá±á·á¡ááŒá¯á¶ááᯠáá»áŸáá±ááẠá¡ááá·áºááŸááá±áá«áááº- á¡áá¬áááºááœáẠáááááá¯ááºá á±ááẠTF module áá»á¬ážááᯠáááºááá¯á·áá±ážááááºáááºážá
áá±á¬ááŒá±á¬áá»ááºá¡ááŒá®ážááœáẠáá«áááºáá°áá»á¬ážááẠTerraform ááŸá á¡áááºážá¡ááŒá áºá á®áá¶ááá·áºááœá²ááŸá¯áá°áá»á¬ážá Terraform ááŸá module áá»á¬ážááŸáá·áºáááºá ááºáá±á¬ á¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºáá»á¬ážááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á á®áá¶ááá·áºááœá²ááŸá¯ááŸáá·áºáááºá ááºáá±á¬ á ááºáááºáááŒááºáá±á«ááºážá ááºááŸá¯á¡áá»áá¯á·ááŸáá·áº á¡ááŒá±áá¶áá°áá»á¬ážááᯠááá¯ááá¯áááºážááŸá®ážáá¬áááºááŒá áºáá«áááºá
ááááºááá¯ááºááŒá±á¬ááºážááŸááºážáááºážáá»ááº: á€á¡á á®áááºáá¶á á¬ááẠ2018 áá¯ááŸá Ạááá¯áááºáá¬á áááºá áœá²áá« â 2 ááŸá áºáá»á±á¬áºááœá¬ážááŒá®ááŒá áºááŒá±á¬ááºáž áá»áœááºá¯áẠáááááŒá¯áááá«áááºá á¡á á®áááºáá¶á á¬ááœáẠááœá±ážááœá±ážáá¬ážáá±á¬ Terraform 0.11 áá¬ážááŸááºážááᯠáá¶á·ááá¯ážááá±ážáá±á¬á·áá«á ááŒá®ážáá²á·áá±á¬ 2 ááŸá áºá¡ááœááºáž ááŒáá·áºáá»áááŸá¯á¡áá Ạ2 áá¯ááᯠáá¯ááºáá±áá²á·ááŒá®ážá áááºážáá áºááŸá¯á ááŒáŸáá·áºáááºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá áœá¬ áá«áááºáá«áááºá áá«ááᯠá¡á¬áá¯á¶á áá¯ááºááŒá®áž á á¬ááœááºá á¬áááºážááœá±ááᯠá á áºáá±ážáá«á
ááá·áºááºáá»á¬áž
terraform-community-modules +terraform-aws-modules antonbabenko/pre-commit-terraform â á¡ááá¯á¡áá»á±á¬ááºáá±á¬áºáááºáá¯ááºááŸáá·áº á á¬ááœááºá á¬áááºážáá»á¬ážantonbabenko/terrapin - Terraform modules (WIP) á generatorantonbabenko/modules.tf-lambda - áá¯ááºáá¯á¶áá¬ážáá»ááºáá»á¬áž (WIP) á០Terraform áá¯ááºáá®ážá ááº- www.terraform-best-practices.com
medium.com/@anton.babenko (ááá¯á·á áºá¡áá áºáá»á¬ážááẠáá»áœááºá¯ááºáááá¯ááºááá¯ááºáááºááá¯áẠwww.antonbabenko.com/ ááœááºááŒá áºáááº)- @antonbabenko - Twitter ááŸáá·áº ááá°áá®áá±á¬ Slacks áá»á¬áž
áá»áœááºáá±á¬á·áºáá¬áááºá Anton Babenko áá«á áá áºáá»áá¯á·á áá»áœááºáá±á¬áºáá±ážáá¬ážáá²á· áá¯ááºááᯠáá¯á¶ážáá°ážáááºá áá»áœááºá¯ááºááẠááááºážááááºážá á¬áááºážá¡ááºážáá»á¬ážááᯠáááºááá¯ááºáá±á¬ááŒá±á¬áá·áº ááᯠá€á¡ááŒá±á¬ááºážááᯠááááºáááẠááá¯ááá¯áá¯á¶ááŒááºá áœá¬ ááŒá±á¬ááá¯áá«áááºá
áá»áœááºá¯ááºááẠTerraform ááœááºá¡áá¯ááºáá¯ááºááŒá®áž Terraform ááŸáá·áº Amazon ááŸáá·áº áááºá ááºáá±á¬ open source ááá±á¬áá»ááºá¡áá»á¬ážá¡ááŒá¬ážááœáẠáááºááŒáœá áœá¬áá«áááºáá°ááŒá áºááŒá®áž 2015 áá¯ááŸá áºááááºážá áá«áááºáá²á·áá«áááºá
á¡á²áá®ááááºážá á áááºáááºá á¬ážá áá¬áá±á¬ááºážáá²á· áááºážáááºážáá²á· ááá·áºááá¯á· áá¯á¶áá±á¬ááºáá²á· áá¯ááºááᯠáá«áá±ážáá²á·áááºá ááŒá®ážáá±á¬á· áá®á¡ááŒá±á¬ááºážááᯠá¡áá¯ááŒá±á¬ááŒááá¯á· ááŒáá¯ážá á¬ážáá«á·áááºá
Terraform ááŸáá·áºá¡áá¯ááºáá¯ááºááŒááºážáááŸá¯ááºááœá±ážááœá±áá®áá±á¬á¡áá±ážá áááºá¡áá»ááºáá»á¬ážá¡ááŒá±á¬ááºážááŒá±á¬áá«áááºá áá«áá±ááá·áº á¡á²áá«á HighLoad áá²á·á¡ááŒá±á¬ááºážá¡áá¬ááá¯ááºáá«áá°ážá ááá¯áá° áááºááẠá¡ááá·áºááŒá±á¬áá·áºááá¯áááºááᯠáá¬ážáááºáááá·áºáááºá
á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ áá»áœááºá¯ááºááẠTerraform modules áá»á¬ážááᯠá áááºáá±ážáá¬ážáá²á·áááºá áá¯á¶ážá áœá²áá°ááœá±á áá±ážááœááºážááœá± áá±ážáááºá áá»áœááºáá±á¬áºá áá°ááá¯á·ááᯠááŒááºáá±ážáááºá ááá¯á·áá±á¬áẠpre-commit hook á áááºááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á code ááᯠformat áá¯ááºááẠutilities á¡áá»áá¯ážáá»áá¯ážááᯠáá±ážáá¬ážáá²á·áááºá
á áááºáááºá á¬ážá áá¬áá±á¬ááºážáá²á· ááá±á¬áá»ááºááœá± á¡áá»á¬ážááŒá®ážááŸááá²á·áááºá áá»áœááºá¯ááºááŸáá·áº áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠááœááºááŒá°áá¬á¡á¬áž ááá¯áááá¯á á¡áá¯ááºááá¯áá¯ááºááááºááᯠááŸá áºáááºáá±á¬ááŒá±á¬áá·áº áá¯ááºáá¯ááºáá¯ááºááŒááºážááᯠááŸá áºáááºáááºá ááá¯á·ááŒá±á¬áá·áº áááºááŸáááœáẠááŒááºáá¬ááá·áºáá¯á¶áá»ááºáá»á¬ážá០Terraform code generator ááœáẠá¡áá¯ááºáá¯ááºáá±áá«áááºá áááºááá¯á·ááœáẠá¡áá»áá¯á·áá±á¬áá°ááá¯á·ááᯠááŒááºáá°ážááŒáááá·áºáááºá á€á¡áá¬áá»á¬ážááẠááŒáŸá¬ážáá»á¬ážááŒáá·áº ááŸááá±á¬áá±áá¹áá¬áá»á¬ážááŒá áºáááºá âExportâ ááá¯ááºááᯠááŸáááºááŒá®áž áá¯ááºá¡ááŒá Ạá¡á¬ážáá¯á¶ážáá°ááá¯ááºááẠáá±á¬ááºážáááºáááºáááºá
áá»áœááºáá±á¬áºá áá°áááááºážááá«á áá±á¬áºáá±ážááŸá¬ ááŸá áºá¡áá±á¬áºááŒá¬áá±áá²á·áááºá
ááá¯á·á¡ááŒááºá á€á¡á á®áááºáá¶á á¬á¡ááœáẠá¡áá»ááºá¡áááºáá»á¬ážááᯠáá»áœááºá¯ááºáá¡áááºááᯠáááá°áá»á¬ážááŸáá·áº áá°ááŸá¯ááœááºáááºáá»á¬ážááœáẠááŸá¬ááœá±ááœá±á·ááŸááá°áá»á¬ážáá¶á០á á¯áá±á¬ááºážáá¬ážáá«áááºá áá»áœááºáá±á¬á·áºááŸá¬ áá¬áááºááŒá±á¬áẠá¡ááŒá²áá®ážáá«ážááŸááááºá
áá»áœááºá¯ááºáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááẠá¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážá¡áá¯ááºáá»á¬ážá¡ááœáẠGitHub ááœááºá¡ááŒá®ážáá¯á¶ážááá¯ááŸá±á¬ááºáá¬áá áºáá¯ááŒá áºááá·áº Terraform AWS modules áá¡áááááááºážááááºážáá°ááŒá áºáááº- VPCá Autoscalingá RDSá
ááŒá®ážáá±á¬á· á¡áá¯ááŒá¬ážááá²á· á¡áá¬á á¡ááŒá±áá¶á¡áá»áá¯á¶ážáá«á Terraform ááá¯áá¬ááᯠáááºáá¬ážáááºááŒá±á¬ááºáž áá¶ááááŸááá«á á¡ááŒá¬ážáá áºáá±áá¬áá¬ááŸá¬ á¡áá»áááºááŒá¯ááºážáá¬á ááá¯áá±á¬ááºážáá«áááºá áá®áá±áá¬ááŸá¬ áááºážááá¬ááá¯ááºáᬠá¡áá¯á¶ážá¡ááŸá¯ááºážááœá± á¡áá»á¬ážááŒá®áž ááŸááá«áááá·áºáááºá ááŒá®ážáá±á¬á· á¡á á®áááºáá¶á á¬áá²á· á¡ááŒáá·áºáá¯á¶ážá¡ááá·áºááᯠááŒá±áá¬ááá¯á· áá»áœááºáá±á¬áº áááœáá·áºáá¯ááºáá²á·áá«áá°ážá ááá¯ááá¯áááºááŸá¬ ááŸááºážáááºážáá»ááºáá»á¬ážá áœá¬ áááá¯á¡ááºáá² ááŒá áºááá¯ááºááá»áŸ áá±á«áá¬áá¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯á ááŒá±á¬ááá¯ááá¯ááºáááºá
Terraform ááẠááá·áºá¡á¬áž áá¯ááºá¡ááŒá Ạáá±ážáá¬ážáááºá á á®á ááºá á®áá¶áááºááŸáá·áº á á®áá¶áááºááœáá·áºááŒá¯ááá·áº á¡áá¯á¶ážáááºááŸá¯áá áºáá¯á¡ááŒá Ạ2014 áá¯ááŸá áºááœáẠáá±á«áºáá¬áá²á·áááºá á€áá±áá¬ááœáẠá¡ááá á¡áá°á¡áááŸá¬ âá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáá¯ááºá¡ááŒá áºâ ááŒá áºáááºá
áá»áœááºáá±á¬áºááŒá±á¬áá²á·áááá¯áá² á
á¬ááœááºá
á¬áááºážááœá±á¡á¬ážáá¯á¶ážááᯠáá±ážáá¬ážáááºá
á€áááºááŸá¬ áá¯á¶ááŸáẠTerraform configuration file ááŸáá·áºáá°áááºá á¡áá»áá¯á·áá±á¬ variable áá»á¬ážááᯠáŠážá áœá¬áááºááŸááºáá«áááºá
á€ááá á¹á ááœááºáá»áœááºá¯ááºááá¯á·ááẠ"aws_region" ááá¯áááºááŸááºáááºá
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á· áááºáá®ážááá¯áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáá±á¬áºááŒáá«á
áá»áœááºá¯ááºááá¯á·ááẠááŸá®ááá¯ááŸá¯ááŸáá·áº áá¶á·ááá¯ážáá±ážáá°áá»á¬ážááᯠáááºáááºá¡ááœáẠá¡áá°ážáááŒáá·áº "terraform init" ááœáẠá¡áá»áá¯á·áá±á¬ command áá»á¬ážááᯠáá¯ááºáá±á¬ááºáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠáááºááŸááºáá¬ážáá±á¬ááœá²á·á ááºážáá¯á¶ááœá²á·á ááºážáá¯á¶ááẠáá»áœááºá¯ááºááá¯á·áááºáá®ážáá¬ážáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áºááá¯ááºáá®ááŸá¯ááŸááááŸáá á áºáá±ážáááºá¡ááœáẠ"terraform apply" command ááá¯áá¯ááºáá±á¬ááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠááááºá áááºááá·áºá¡áá¬ááá¯áá»áŸ ááááºáá®ážááá±ážáá±á¬ááŒá±á¬áá·áºá Terraform ááẠá€á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáá®ážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááá¯ááºááœááºážáá«áááºá
áá«ááᯠáá»áá±á¬áºááá¯á· á¡áááºááŒá¯áá«áááºá áá«ááŒá±á¬áá·áº seasnail ááá¯á· áá±á«áºáá²á· áá¯á¶ážááᯠáááºáá®ážáááºá
á¡áá¬ážáá° á¡áá¯á¶ážáááºááŸá¯áá»á¬ážá
áœá¬áááºáž ááŸááá«áááºá Amazon ááá¯á¡áá¯á¶ážááŒá¯áá°áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážáᬠAWS CloudFormation ááá¯á·ááá¯áẠGoogle Cloud Deployment Manager ááá¯á·ááá¯áẠAzure Resource Manager ááᯠááááŒáá«áááºá áááºážááá¯á·áá
áºáá¯á
á®ááẠá¡áá»á¬ážáá°ááŸá¬ cloud áááºáá±á¬ááºááŸá¯áá±ážáá°ááá¯ááºážá¡ááœááºáž á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠá
á®áá¶ááá·áºááœá²áááºá¡ááœáẠáá
áºáá»áá¯ážáá»áá¯ážáá±á¬ ááá¯ááºááá¯ááºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá
áºáá¯á
á®ááŸáááŒáááºá Terraform ááẠááá·áºá¡á¬áž áá¶á·ááá¯ážáá±ážáá° 100 áá»á±á¬áºááᯠá
á®áá¶ááá·áºááœá²ááá¯ááºáá±á¬ááŒá±á¬áá·áº á¡áá°ážá¡áá¯á¶ážáááºáá«áááºá (á¡áá±ážá
áááºá¡áá»ááºáá»á¬áž
Terraform á¡á ááááºážá ááá¯ááºáá¯ááºáá²á·áá²á· áááºážááá¯ááºááœá±
- Terraform ááẠá¡áááºážá¡ááŒá áºáá»á¬ážá á¡ááŒááºáá áºáá¯áááºážááᯠáá¶á·ááá¯ážáá±ážáááºá
- áá±ááºáá®ááááºáá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠáá¶á·ááá¯ážááá¯ááºá á±áááºá
- Terraform ááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬ážááᯠáá±ážáááºážáá¯á¶ááŒá¯á¶ááŒá®áž ááŒáá¯áááºááŸááºážáááá¯ááºáá±á¬ ááŒá±á¬ááºážáá²ááá¯ááºá á±ááá·áº á¡áá¯á¶ážáááºááŸá¯áá áºáá¯á¡ááŒá Ạá¡á ááááºážá áá®ááá¯ááºážáá±ážááœá²áá¬ážáááºá
2014 áá¯ááŸá áºááœáẠ"ááŒáá¯áááºááá·áºááŸááºážááá¯ááºáá±á¬" áá°áá±á¬á áá¬ážáá¯á¶ážáááºá€á¡ááŒá±á¡áá±ááœááºá¡ááœááºáá¯á¶ááŸááºááá¯ááºáá±á¬á¡áá¶ááœááºáá²á·áááºá
Terraform ááẠuniversal utility áá áºáá¯ááŒá áºáááºá ááá·áºááœáẠAPI áá áºáá¯ááŸááá«áá á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯á¶ážáááááºážáá»á¯ááºááá¯ááºáááº-
- áááºá¡ááá¯ááŸááá±á¬ á¡áá¬á¡á¬ážáá¯á¶ážááᯠá á®áá¶ááá·áºááœá²ááẠáááºáá±á¬ááºááŸá¯áá±ážáá° 120 áá»á±á¬áºááᯠáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
- á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠGitHub repositories ááá¯á·áááºáá±á¬ááºááœáá·áºááá¯áá±á¬áºááŒááẠTerraform ááá¯áá¯á¶ážááá¯ááºáááºá
- Jira ááœáẠbug áá»á¬ážááᯠáááºáá®ážááŒá®áž ááááºááá¯ááºáááºá
- New Relic áááºááá áºáá»á¬ážááᯠááẠá á®áá¶ááá¯ááºáááºá
- áááºá¡ááŸááºááááºáá¯ááºáá»ááºáá«á dropbox ááœááºááá¯ááºáá»á¬ážááá¯áááºáááºáá®ážááá¯ááºáááºá
Go ááœáẠáá±á¬áºááŒááá¯ááºááá·áº á¡ááœáá·áº API áá«ááŸááá±á¬ Terraform áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡á±á¬ááºááŒááºáááºá
áá»áœááºá¯ááºááá¯á·ááẠTerraform ááá¯á áááºá¡áá¯á¶ážááŒá¯áá²á·ááŒá®ážá ááá¯ááºáá±á«áºááŸá á á¬ááœááºá á¬áááºážá¡áá»áá¯á·ááá¯áááºáá¬á áá®áá®ááá¯á¡áá»áá¯á·ááá¯ááŒáá·áºááŸá¯áá²á·ááŒá®áž ááááºáááá¯ááºáá»á¬ážááœáẠáá»áœááºáá±á¬áºááŒááá¬ážááá·áºá¡ááá¯ááºáž main.tf ááá¯á áááºáá±ážáá¬ážáá²á·áááºááá¯ááŒáá«á áá¯á·á
ááŒá®ážáá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážá áá±á¬ááºážáááºá áááºážááŸá¬ VPC ááá¯áááºáá®ážáá²á· ááá¯ááºáá áºáá¯ááŸááááºá
á¡áááºá áááºááẠVPC áá áºáá¯ááᯠáááºáá®ážááá¯áá«áá ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº ဠ12 ááŒá±á¬ááºážááᯠáááºáááºááŸááºáá«á áááºááá·áºáá±áááœáẠáááºáááºáá®ážááá¯áááºá áááºááá·áº IP ááááºá á¬áá»á¬ážá cidr_block ááᯠá¡áá¯á¶ážááŒá¯ááááºááᯠáá±á¬áºááŒáá«á áá«áá«áá²á
áá¯á¶ážá á¶á¡ááá¯ááºáž ááá±á¬áá»ááºá áááŒááºážááŒááºáž ááŒá®ážáá¬áááºá
áááºážááœáẠáááºááẠáá á¹á ááºážá¡áá áºá¡ááŒá±á¬ááºá¡áá»á¬ážááᯠáá±á«ááºážááá·áºáá«áááº- á¡áááºážá¡ááŒá áºáá»á¬ážá áá±áá¬áááºážááŒá áºáá»á¬ážá áááºáá±á¬ááºááŸá¯áá±ážáá°á¡áá áºáá»á¬ážááŸáá·áº áá±á«ááºážá ááºážáááºá áááºá GitHub á¡áá±á¬áá·áºááŸá áá¯á¶ážá áœá²áá°áá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááẠTerraform ááᯠáá¯ááºáááẠá¡áá¯á¶ážááŒá¯ááá¯áááá·áºáááºá á áááºááŒáá·áº áááºááẠááá°áá®áá±á¬á¡áá¯á¶ážááŒá¯ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯áá±áááºá DNS áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážá á¡áá¬á¡á¬ážáá¯á¶ážááá¯ááŒááºáá»á±á¬áºáá«á Terraform ááẠáááºážááᯠááœááºáá°á á±áááºá
á¡á±á¬ááºáá«á¥ááá¬ááá¯ááŒáá·áºááŒáá«á áá¯á·á
áááºá VPC á០á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡ááºáá¬ááẠá¡áá¯á¶ážááŒá¯ááœáá·áº áááá¯áá±á¬ááŒá±á¬áá·áº áááºááẠinternet_gateway ááᯠáááŒááºážááŒááºáž ááá·áºááœááºážáá«áááºá áá«á á¡ááŒá¶áá±á¬ááºážáá²á
ááááºááŸá¬ ဠmain.tf ááŒá áºáááºá
á€áááºááŸá¬ main.tf á ááááºááá¯ááºážááŒá áºáááºá
áááºážááẠmain.tf á á¡á±á¬ááºáá¯á¶ážá¡ááá¯ááºážááŒá áºáááºá
ááá¯á·áá±á¬ááºááẠsubnet ááá¯ááá·áºáá«á NAT ááááºáá±ážáá»á¬ážá áááºážááŒá±á¬ááºážáá»á¬ážá áááºážááŒá±á¬ááºážááá¬ážáá»á¬ážááŸáá·áº á¡ááŒá¬ážáá±á¬ subnets á¡áá»á¬ážá¡ááŒá¬ážááᯠááá·áºááœááºážááá¯ááá·áºá¡áá«ááœáẠááá¯ááºáž 38 ááá¯ááºážááŸááááºááá¯ááºáá±á¬áºáááºáž ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº 200-300 ááá¯ááºážáá»á¬ážááŸááá«áááºá
ááá¯ááá¯áááºááŸá¬ áááºá main.tf ááá¯ááºááẠáááŒááºážááŒááºáž ááŒá®ážááœá¬ážáá¬áááºá áááŒá¬ááááá¯áááᯠáá°ááœá±á á¡áá¬á¡á¬ážáá¯á¶ážááᯠááá¯ááºáá áºáá¯áá²ááŸá¬ ááá·áºáá¬ážáááºá 10-20 Kb ááẠmain.tf ááœáẠáá±á«áºáá¬áááºá 10-20 Kb ááẠá á¬áá¬ážá¡ááŒá±á¬ááºážá¡áá¬ááŒá áºáááºáᯠááŒááºáá±á¬ááºááŒáá·áºáá«á ááŒá®ážáá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážá á¡áá¬á¡á¬ážáá¯á¶ážáá²á· áááºá ááºáá±áááºá áá«ááááŒááºážááŒááºážáá²á· á¡áá¯ááºáá¯ááºááááºáá¬áááºá 10-20 Kb ááẠáá±á¬ááºážááœááºáá±á¬ á¡áá¯á¶ážááŒá¯áá°ááá á¹á ááŒá áºááŒá®áž áá áºáá«áá áºáᶠááá¯áá«áááºá ááŒá®ážáá±á¬á· áá°ááœá±á áá«ááᯠááá±á¬ááºážáá°ážááá¯á· á¡ááŒá²ááááºáá°ážá
áá¯á¶ááŸááºáááá¯ááááºáá±ážááŒááºážááœááºá ááá¯ááá¯áááºááŸá¬ áá¯ááºáá²á·ááá¯á· á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠááá¯ááºáá«á áá»áœááºá¯ááºááá¯á·ááẠááá°áá®áá±á¬ á¡áááºážáá»á¬ážá áááºáá±á·áá»áºáá»á¬ážá áá±á¬áºáá»á°ážáá»á¬ážá á¡á¯ááºá á¯ááœá²ááŒááºážáá»á¬ážá áœá¬ááᯠá¡áá¯á¶ážááŒá¯áá±á·ááŸááá«áááºá Terraform ááẠááá·áºá¡á¬áž áá°áá®áá±á¬á¡áá¬áá»á¬ážá áœá¬ááŒá¯áá¯ááºááá¯ááºá á±áá«áááºá
- áá¯ááºááœá± áá»á¬ážáá¬áááºá
- á¡áááºážá¡ááŒá áºáá»á¬ážááŒá¬ážááœáẠááŸá®ááá¯ááŸá¯áá»á¬ážáááºáž ááá¯ážááœá¬ážáá¬áá«áááºá
ááŒá®ážáá±á¬á· áá«ááá¯á·ááŸá¬ ááŒá®ážááŒá®ážáá¬ážáá¬áž ááá¯á¡ááºáá»ááºáá áºáá¯ááŸááááºá áá®ááá¯áá»áá¯áž áááºááá±ááá¯ááºáá±á¬á·áá°ážááá¯áᬠáá¬ážáááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááá¯ááºááẠááŒá®ážáá¬ážáá¬áááºá 10-20 Kb ááẠáá»ááºááŒá±á¬ááŸáááºááá¯ááºáá«á ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠnetwork stack á¡ááŒá±á¬ááºážáá¬ááŒá±á¬áá±áááºá ááá¯ááá¯áááºááŸá¬ ááá·áºááœáẠááœááºáááºá¡áááºážá¡ááŒá áºáá»á¬ážáᬠááŸááá«áááºá áá»áœááºá¯ááºááá¯á·ááẠ100 Kb ááᯠá¡ááœááºááá° áááºáá¯ááºááá¯ááºááá·áº Application Load Balancerá deployment ES á¡á á¯á¡áá±ážá Kubernetes á áááºááá¯á·á¡ááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· áááŒá±á¬áá«á á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºáá»áá±ážáá«áá Terraform ááẠTerraform modules áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááŒá±á¬ááºáž áááŒá¬áá® áááºááááŸááá¬áááºááŒá áºáááºá
Terraform modules áá»á¬ážááẠá¡á¯ááºá á¯áá áºáá¯á¡áá±ááŒáá·áº á á®áá¶ááá·áºááœá²ááá·áº ááá¯ááºááá¯ááºáá«ááŸááá±á¬ Terraform ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá áºáá¯ááŒá áºáááºá Terraform modules áá»á¬ážá¡ááŒá±á¬ááºáž áááºááááá¯áááºááŸá¬ áá«áá«áá²á áá°ááá¯á·áᬠáá¬ááºááá®áá°ážá áá áºáá¯áá¯áá±á«áº áá°áááºááŒá®áž ááŸá¯ááºááœá±ážáá²á· áááºááœááºááŸá¯ááœá± áá¯ááºááœáá·áºááá±ážáá°ážá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠdeveloper áá»á¬ážáááá¯á¶ážáá±á«áºááœááºáá»áá±á¬ááºáááºá ááá¯ááá¯áááºááŸá¬á á€áááºááŸá¬ áááºáá±ážáá¬ážááŒá®ážáá±á¬ Terraform ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá áºáá»áá¯ážáá»áŸáá¬ááŒá áºáááºá ááŒá®ážáá±á¬á· áá«ááᯠá¡á¯ááºá á¯áá áºáá¯á¡áá±áá²á· ááá¯ážááá¯ážááŸááºážááŸááºáž áá±á«áºááá¯ááá¯ááºáá«áááºá
ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á 10-20-30 Kb ááá¯ááºááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠáááºááá¯á·ááŒá¯áá¯ááºáááºááᯠáá¬ážáááºááẠááŒáá¯ážá á¬ážáá±áá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»áá¯á·áá±á¬ module áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºááŒá±á¬ááºáž áááŒááºážááŒááºážáá¬ážáááºáá¬áá«áááºá
áááºááŒá¯á¶ááœá±á·ááá±á¬ áá±á¬áºáá»á°ážáá»á¬ážá áááá¡áá»áá¯ážá¡á á¬ážááŸá¬ á¡áááºážá¡ááŒá Ạáá±á¬áºáá»á°ážáá»á¬ážááŒá áºáááºá áááºážáá²á·á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á áá¬á¡ááŒá±á¬ááºážá áááºážáá²á·áá¯ááºáááºážá áá¬á¡ááŒá±á¬ááºážá áááºáá±áá¬áá²á· áááºááá¯á¡ááŒá±á¡áá±ááœá±áá²ááá¯áᬠáá°ááá¯á·á áá¬ážááááºáá°ážá á€ááœá±á·áá¬ážáá»á¬ážááẠáá»áœááºá¯ááºááŸáá·áºá¡áá° open source á¡ááá¯ááºážá¡ááá¯ááºážááŸáá·áºá¡áá° á á®áá¶ááá·áºááœá²áá±ážáá±á¬ á¡ááá¡áá»ááŒá áºááŒá®ážá áááºáá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡ááœáẠáááŠážáááºáá±á¬ááºáá±ážáá¯ááºááœááºáá»á¬ážá¡ááŒá Ạáá»áœááºá¯ááºááá¯á·áááºááŒáá±ážáá±á¬ á¡ááá¡áá»ááŒá áºáááºá
á¡áááºážá¡ááŒá Ạmodule áá áºáá¯áá¥ááá¬á
á¡áááºážá¡ááŒá Ạmodule áá áºáá¯ááᯠáá»áœááºá¯ááºááá¯á·áá±á«áºááá¯áá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠáááºážáá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáááºááá·áºááá·áºáááºážááŒá±á¬ááºážá០áááºááŸááºáá±ážáá«áááºá
áá»áœááºá¯ááºááá¯á· áá±á«ááºážáá¯ááºáá¯ááºááá¯áá±á¬ áá¬ážááŸááºážááᯠáá±á¬áºááŒáá«áááºá
á¡á²áá®ááŸá¬ ááŒááºážáá¯á¶ááŸá¯ á¡áá»á¬ážá¡ááŒá¬ážááᯠáá»áœááºáá±á¬áºááá¯á· áá»á±á¬áºááŒááºáá«áááºá áá«áá«áá²á ဠmodule ááá¯á¡áá¯á¶ážááŒá¯áá±á¬á¡áá«áá»áœááºá¯ááºááá¯á·áááááºááá¯á¡ááºáááºááŸá¬áá«áá«áá²á
áá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯áá«á á¡áá¬á¡á¬ážáá¯á¶ážáááºááŒáááºáááºáᯠáá°á¡áá»á¬ážá áá°áááŒáááºá áá«áá±ááá·áº ááá¯ááºáá°ážá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáá¬ážááŸááºážááŒá±á¬ááºážááá«áááºá áááºááá·áºáá¬ážááŸááºáž ááá¯á·ááá¯áẠáááºážá¡á áááºá¡ááá¯ááºážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºááᯠáá»áœááºá¯ááºááá¯á· ááŸááºážááŸááºážáááºážáááºážááŒá±ááŒá¬ážááá«áááºá
á€áááºááŸá¬ ဠmodule á¡ááœááºážááŸá áá¯ááºááŒá áºáááºá áá¯á¶ááŒá¯á¶áá±ážá¡á¯ááºá ᯠáááºáááºážá á¬á á€áá±áá¬ááœáẠá á¬ááááºááẠ640 áá»ááºážááá¯á·ááœá¬ážáá«áááºá ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ ááœá²á·á ááºážááŸá¯ááá¯ááºážááœáẠAmazon ááŸá áá¯á¶ááŒá¯á¶áá±áž-croup á¡áááºážá¡ááŒá áºááᯠáááºáá®ážááŒááºážááẠá¡ááœááºá¡áá±ážá¡ááœá²ááá¯ááºáá±á¬ á¡áá¯ááºáá áºáá¯ááŒá áºáááºá áá¯á¶ááŒá¯á¶áá±ážá¡ááœá²á·áá áºáá¯ááᯠáááºáá®ážááŒá®áž áááºážááᯠááŒááºáááºážáááá·áº á ááºážáááºážáá»á¬ážááᯠááŒá±á¬ááŒáá¯á¶ááŒáá·áº ááá¯á¶áá±á¬ááºáá«á á¡ááœááºááá¯ážááŸááºážáá«áááºá Amazon ááœáẠááá·áºáááºáá»ááºáá±á«ááºáž áá áºáááºážáá»á±á¬áºááŸááááºá á¥ááá¬á¡á¬ážááŒáá·áº áááºá¡áá¯á¶ážááŒá¯áá»áŸáẠVPC á¡áá¯á¶ážááŸááºá ááŸá±á·ááœááºá á¬áááºážá á¡áá»áá¯ážáá»áá¯ážáá±á¬ APIs á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááŸáá·áº áá±á«ááºážá ááºáááºááŒáá¯ážá á¬ážáááºá ááá¯á·áá±á¬áẠTerraform ááẠááá·áºá¡á¬áž á€ááá¯á·áá¯ááºáá±á¬ááºááẠááœáá·áºáááŒá¯áá«á Amazon API ááááºáž áá«ááᯠááœáá·áºáááŒá¯áá«áá°ážá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠá€ááá¯ážááœá¬ážááŸáá±á¬ áá¯áá¹áááá±áá¡á¬ážáá¯á¶ážááᯠmodule áá áºáá¯ááœáẠááŸááºáá¬ážááẠááá¯á¡ááºááŒá®áž á€áá²á·ááá¯á·áá±á¬ áá¯á¶ááá¹áá¬ááºááŸááá±á¬ á¡áá¯á¶ážááŒá¯áá°áá¯ááºááᯠáá±ážáááºááá¯á¡ááºáá«áááºá
á¡áá¯á¶ážááŒá¯áá°ááẠá¡ááœááºážááœáẠáááºááá¯á·ááŒá¯áá¯ááºáá¬ážáááºááᯠáááááºáááá¯á¡ááºáá«á
á¡áááºážá¡ááŒá Ạáá±á¬áºáá»á°ážáá»á¬ážáá«áááºááá·áº áá¯áááá¡áá»áá¯ážá¡á á¬áž áá±á¬áºáá»á°ážáá»á¬ážááẠááá·áºáá¯ááºáááºážááŸáá·áº ááá¯ááá¯áááºááá¯ááºááá·áº ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážááŒá®ážáá¬ážááŒá áºáááºá áááŒá¬ááááá¯áááᯠá€áá±áá¬ááẠTerraform á¡ááœáẠááá¯ážáá»á²á·ááŸá¯áá áºáá¯ááŒá áºááŒá®áž áá¯áá¹ááá®á á¶áá»áááºá á¶ááœáŸááºážáá»á¬ážá¡ááœáẠáááºáá»á¬ážá¡ááœáẠáááºážáá»ááºáá±á¬áááºááá¯ážá¡áá»áá¯á·ááᯠáááºááŸááºáá±ážáá«áááºá Terraform ááẠáááºááŸáááœáẠááá·áºá¡á¬áž á¡áá¯á¶ážááŒá¯ááẠááœáá·áºáááŒá¯áá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯áááºáž ááá·áºááœááºážááá¯ááºáááºá áá«á á¡áá¯áá»ááºáá»ááºážáá²á ááᯠáá¬ážááŸááºáž 0.11 ááẠá¡ááááºá á¡áá¬áá áºáᯠááŒá áºáá¬áá±á¬á·áááºááŒá áºáááºá ááá¯á·áá±á¬áºáááºážá ááŒáá¯áááºáááá¯áááºáá¬áá»á¬ážá jsonnetá cookiecutter ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážá áœá¬ááẠááŒá®ážááŒáá·áºá á¯á¶áá±á¬á¡áá¯ááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááá·áº á¡áááºááá¹ááá¬ážááŒá áºáááºá
áá±á¬ááºáá áºáá¯ááá±á¬á· áá®á¥ááá¬á¡áá»áá¯á·ááᯠááŒáá«áááºá
á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ module ááá¯á¡ááá¡áá»áá°áá®áá±á¬áááºážááŒáá·áºáá±á«áºáááºá
á¡ááŒá±á¬ááºážá¡áá¬ááᯠáá±á«ááºážáá¯ááºáá¯ááºáááá·áº á¡áááºážá¡ááŒá áºááᯠááœáŸááºááŒáá¬ážáááºá
áááºááá¯ážáá»á¬ážá áœá¬ááᯠááŒááºáááºážááŒá®áž ဠmodule áá²ááá¯á· ááŒááºááœá¬ážáá«áááºá
ááá¯á·áá±á¬ááºá ဠmodule á¡ááœááºážááœááºá VPC ááá¯á·ááá¯áẠApplication Load Balancer áááºáá®ážááẠááá¯á·ááá¯áẠáá¯á¶ááŒá¯á¶áá±ážá¡ááœá²á· ááá¯á·ááá¯áẠElastic Container Service á¡á á¯á¡áá±ážá¡ááœáẠá¡áááºážá¡ááŒá Ạmodule á¡áá»á¬ážá¡ááŒá¬ážááᯠáá±á«áºáááºá
Module ááŸá áºáá»áá¯ážááŸááááºá á€á¡á á®áááºáá¶á á¬ááœáẠáá»áœááºá¯ááºá¡á¯ááºá á¯ááœá²á·áá¬ážáá±á¬ á¡áá»ááºá¡áááºá¡áá»á¬ážá á¯ááᯠá á¬ááœááºá á¬áááºážááœáẠááá±ážáá¬ážáá±á¬ááŒá±á¬áá·áº áá¬ážáááºááẠá¡áá±ážááŒá®ážáá«áááºá
Terraform ááŸá á á¬ááœááºá á¬áááºážáá»á¬ážááẠá€á¡ááºá¹áá«áááºáá»á¬ážááŸááááºáá¯áᬠááŒá±á¬áá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááᯠáááºáá¯á¶ážááá¯ááºááẠáá¯áᬠááŒá±á¬áá±á¬ááŒá±á¬áá·áº ááá¯á¡áá« Terraform ááœáẠááŒá¿áá¬ááŸááá±áá«áááºá áá«áá±ááá·áº áá®á¡ááºá¹áá«áááºááœá±ááᯠáááºááá¯áá¯á¶ážáááá²ááá¯áᬠáá°á áááŒá±á¬áá«áá°ážá áá¬ááŒá±á¬áá·áº áá¯á¶ážááᬠááá¯áá±á¬ááºážáá«áááºá ááá¯á·ááŒá±á¬áá·áº áá°á¡áá»á¬ážá¡ááŒá¬ážááẠáááºážááá¯á·ááŸáá·áº á¡áá°ááá±ááá¯ááºáá±á¬ á¡áá¬áá»á¬ážááᯠáá±ážáá¬ážááŒáááºá
áá® module ááœá±ááᯠáááºááá¯áá±ážáááá²ááá¯áá¬ááᯠáá±á¬ááºááŸá¬ááŒáá·áºááá¯ááºáá¡á±á¬ááºá ááá¯á·áá±á¬áẠáááºážááá¯á·ááᯠáá¯ááºážáá±á«áºááá¯áá¯á¶ááŸáá·áº áá¯ááºááŒáá·áº áááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠáá»áœááºá¯ááºááá¯á· ááŒááºááœá±á·ááááºááŒá áºáááºá
Terraform Registry -
á¡ááŒá¶ááŒá¯áá»áẠ#0 ááẠá¡áááºážá¡ááŒá Ạmodule áá»á¬ážááᯠááá±ážáá«ááŸáá·áºá ဠmodule á¡áá»á¬ážá á¯ááẠááá·áºá¡ááœáẠáá±ážáá¬ážááŒá®ážááŒá áºáááºá áá«ááŒá±á¬áá²á·ááá·áºá¡ááá¯ááºážá áááºážááá¯á·ááẠopen source ááŒá áºáááºá áááºážááá¯á·ááẠááá·áºáá¯ááºáááºážááá¯ááºáᬠáá¯áá¹áááá áºáá¯áá»áŸááá«áááºáá«á áááºážááá¯á·ááœáẠIP ááááºá á¬áá»á¬ážá á áá¬ážááŸááºáá»á¬ážá áááºááá¯á·á¡ááœáẠhardcoded áááºááá¯ážáá»á¬áž áááŸááá«á module ááẠá¡ááœááºááŒá±á¬ááºážááœááºááŒááºááœááºááŒá áºáááºá áá±á¬ááºááŒá®ážáá±á¬á· ááŒá áºááá¯ááºáá»á± áá»á¬ážáá«áááºá Amazon ááŸá¡áááºážá¡ááŒá áºáá»á¬ážá¡ááœáẠmodule áá»á¬ážá áœá¬ááŸááááºá 650 áá±á¬ááºááŸáááŒá®áž á¡áá»á¬ážá á¯á á¡áááºá¡ááœá±ážáá±á¬ááºážáááºá
á€á¥ááá¬ááœááºá áá áºá á¯á¶áá áºáŠážááẠááá·áºáá¶áá¬ááŒá®áž âáá»áœááºáá±á¬áº áá±áá¬áá±á·á áºáá áºáá¯ááᯠá á®áá¶ááá·áºááœá²ááá¯ááºáá»ááºáá«áááºá áá±áá¬áá±á·á áºáá áºáá¯áááºáá®ážááá¯ááºá á±ááẠáá±á¬áºáá»á°ážáá áºáá¯áááºáá®ážáá«á" Amazon ááá¯á·ááá¯áẠTerraform á á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠá¡ááá¯áá«áá¯áá¹ááá¯ááºá០ááááá«á áá°á ááá¯ážááá¯ážááŸááºážááŸááºážááŒá±á¬ááẠ"áá»áœááºáá±á¬áº MSSQL ááᯠá á®áá¶ááá·áºááœá²áá»ááºáá«áááº" ááá¯ááá¯áááºááŸá¬á áááºážááẠáá»áœááºá¯ááºááá¯á·á module ááá¯áá±á«áºááá¯ááŒá®ážá ááá¯áá±áá¬ááœáẠá¡ááºáá»ááºá¡áá»áá¯ážá¡á á¬ážááᯠáá»á±á¬áºááŒááºáᬠá¡áá»áááºáá¯ááºááá¯ááœáŸááºááŒáááºáᯠááá¯ááá¯áá«áááºá
ááŒá®ážáá±á¬á· áá® module áá²ááŸá¬ ááá°áá®áá²á· á¡áááºážá¡ááŒá áºááŸá áºáá¯ááᯠáááºáá®ážáááºááá¯áá¬ááᯠáá°áá áºáá±á¬ááºá áááááá·áºáá«áá°ážá áá áºáá¯á MSSQL á¡ááœááºá áá¯ááááá áºáá¯á á¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážá¡ááœááºááŒá áºááŒá®áž Terraform 0.11 ááŸá¬ á áááºááŒáá¯ááºá¡áá»áááºáá¯ááºáááºááá¯ážááœá±ááᯠáááºááááºááŸááºááá¯ááºáá¬ááŒá±á¬áá·áºáá«á
ဠmodule ááŸááœááºáá±á«ááºááœááºáá°áá áºáŠážáááºááá¯ážááŸááºážá áœá¬ááááºá á¬áá áºáá¯áááºáá¶áááŸááááá·áºáááºá áááºááá·áºáá±áá¬áá±á·á áºá០áá»áœááºá¯ááºááá¯á· á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááœááºážááá¯ááºážá áááºáá®ážáá±áááºááŸá¬ áááºááá·áºá¡áááºážá¡ááŒá áºá០ááááŸááááºááá¯ááºáá«á á€á¡áá¬ááẠáá¯á¶ážááœááºááŒááºážá á¡ááœááºá¡áá±ážááŒá®ážáá±á¬ á¡áá»ááºááŒá áºáááºá áááºážááẠopen source ááœáẠá¡áá»á¬ážáá°ááŸá¬á¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬ á¡ááá¯áá« module áá»á¬ážááŸáá·áºáá¬áá ááá·áºááá±á¬áá»ááºáá»á¬ážááŸáá·áº á¡ááœá²á·áá»á¬ážá¡ááœááºáž áááºáá±ážááá·áº á¡ááá¯áá« module áá»á¬ážááŸáá·áºáááºáž áááºááá¯ááºáá«áááºá
á€áááºááŸá¬ Terraform ááá¯ááááŒá¬á¡áá¯á¶ážááŒá¯áá±áá«áá áááºážááẠáá¯áááá¡ááŒááºážá¡áá¯á¶ááŒá áºáááºá ááá·áºáá¯áá¹ááá®á¡ááœáẠáááºá Terraform modules á¡á¬ážáá¯á¶ážááᯠáááºááá·áºááœááºážáá¬ážááá·áº ááá¯ááŸá±á¬ááºáá¯á¶áá áºáá¯ááŸááááºá á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ á€ááá±á¬áá»ááºááẠáá áºáá®áá«ááá¯áẠááá¯á·ááá¯áẠááŸá áºáá®áá«ááá¯ááºá¡áá ááŒá®ážááœá¬ážáá¬áááºááŸá¬ áá¯á¶ááŸááºááŒá áºáááºá áá«áá¡áááºááŒá±áá«áááºá
áá«áá±ááá·áº ááŒá¿áá¬á Terraform á áá® module ááœá±ááᯠáááºááá¯áá±á«áºáá²á á¥ááá¬á¡á¬ážááŒáá·áºá áá¯á¶ážá áœá²áá°áá áºáŠážáá»ááºážá á®ááᯠáááºáá®ážááẠáá±á¬áºáá»á°ážáá áºáá¯ááᯠáááºáá±á«áºááá¯áá«á Terraform ááẠááá¯ááŸá±á¬ááºááŸá¯áá áºáá¯áá¯á¶ážááᯠáŠážá áœá¬áááºááŒá®ážáá±á¬áẠáááºážáááºááŸááºáá¬ážáá±á¬ module áááºááŸáááá·áº ááá¯ááºááœá²ááá¯á· áááºážááœáŸááºááœá¬ážáááºááŒá áºáááºá á€áááºážááŒáá·áº áááºááẠáá áºááŒáááºáá»áŸáẠáá áºáá®áá«ááá¯ááºááᯠáá±á«ááºážáá¯ááºáá¯ááºáááºááŒá áºáááºá á¡áááºá áááºááẠá¡áá¯á¶ážááŒá¯áá° 100 ááá¯á·ááá¯áẠ200 ááᯠá á®áá¶ááá·áºááœá²áá«á 100 ááá¯á·ááá¯áẠ200 megabytes ááᯠáá±á«ááºážáá¯ááºáá¯ááºáᬠááá¯ááá¯ááºááœá²ááá¯á· ááœá¬ážáá«áááºá ááá¯á·ááŒá±á¬áá·áº áááºááẠ"Terraform init" ááá¯ááŸáááºááá¯ááºááá¯ááºáž á¡áá¬áá»á¬ážá áœá¬ááᯠáá±á«ááºážáá¯ááºááá¯ááºáá»ááºáá±á¬á·áááºááŸá¬ ááá¬ááá»áá«áááºá
á€ááŒá¿áá¬á¡ááœáẠááŒá±ááŸááºážáááºážááŸá áºáá¯ááŸááááºá áááá¡áá»ááºááŸá¬ ááœá±áá»áá¯ážáááºážááŒá±á¬ááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá á€áááºážááŒáá·áº áááºááẠááá¯ááºááœá²ááẠáá±ááá¹áá (./) ááŒá áºááŒá±á¬ááºáž áá¯ááºááœáẠáá±á¬áºááŒáááºá ááẠáááºááá·áºá¡áá¬ááá¯áá»áŸ áááœáá·áºáá®á áááºááẠá€ááá¯ááŸá±á¬ááºááŸá¯á Git ááá¯ááá¯áá®ááᯠá ááºááœááºážá ááŒá¯áá¯ááºáá«á áá®áááºážááᯠáá áºáá«áá¯ááºáá«á
á¡á¬ážáááºážáá»ááºááœá± á¡áá»á¬ážááŒá®ážááŸááááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáá¬ážááŸááºážáááºááŒááºážááᯠá¡áá¯á¶ážáááŒá¯ááá¯ááºáá«á ááŒá®ážáá±á¬á· áá«á áá áºáá«ááá± á¡áá°áá±ááá¯á· áááºáááºá
áá¯áááááŒá±ááŸááºážáá»ááºá á¡áááºá ááá·áºááœáẠsubmodule á¡áá»á¬ážá¡ááŒá¬ážááŸáááŒá®áž ááá·áºááœááºáááºáá±á¬ááºáá¬ážáá±á¬ááá¯ááºááá¯ááºážá¡áá»áá¯á·ááŸááá±ááŒá®ááá¯áá»áŸááºá áááºááẠmonorepository áá áºáá¯á០ááá°áá®áá±á¬ package á¡áá»á¬ážá¡ááŒá¬ážááá¯á á¯áá±á¬ááºážááá¯ááºááŒá®áž áááºážááá¯á·ááᯠS3 ááá¯á· á¡ááºáá¯ááºáá¯ááºááá¯ááºááá·áº MBT ááá±á¬áá»ááºááŸááá«áááºá áá«á á¡áááºážáá±á¬ááºážáá²á·áááºážáááºážáá«á ááá¯á·ááŒá±á¬áá·áºá á€á¡áááºážá¡ááŒá áºááá¯áááºáá®ážáááºáá¯ááºááẠá¡ááœááºáá±ážáááºáá±á¬ááŒá±á¬áá·áº iam-user-1.0.0.zip ááá¯ááºááẠ1 Kb áᬠá¡áá±ážáá»áááºááŸááá«áááºá ááŒá®ážáá±á¬á· á¡áá¯ááºááá¯ááŒááºáá«áááá·áºáááºá
Module áá»á¬ážááœáẠá¡áá¯á¶ážáááŒá¯ááá¯ááºáá±á¬ á¡áá¬áá»á¬ážááᯠááœá±ážááœá±ážááŒáá«á áá¯á·á
áááºážááẠáá±á¬áºáá»á°ážáá»á¬ážááœáẠá¡áááºááŒá±á¬áá·áº ááá±á¬ááºážááááºážá á¡ááá¯ážáá¯á¶ážááá±á¬á· áá¯á¶ážá áœá²áá°ááá¯á· áá°áááá¯á·áá«áá²á á¡áá¯á¶ážááŒá¯áá°ááẠááá°áá®áá±á¬áá°áá»á¬ážá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áá¶á·ááá¯ážáá±ážáá°á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááœá±ážáá»ááºááŸá¯áá áºáá¯áᯠáá°ááá«á á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·á¡á¬ážáá¯á¶ážááẠá¡áááºážááá¹áááᯠáá»á±áááºá¡á±á¬áẠáá¯ááºáá±á¬ááºáá«áááºá ááá¯ááá¯áááºááŸá¬ Terraform ááẠá€á¡áááºážááá¹áááœáẠáá«áááºáááºááŒá áºáááºá ááá¯á·áá±á¬áẠá€á¡áááºážááá¹áááŒáá·áº á¡ááŒá¬ážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá
ááá¯ážáá¬á Vasya á á¥ááá¬á¡á¬ážááŒáá·áº default environment variable ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž Vasya á Amazon ááᯠáá áºáááºáá áºáááºážááá± áá»áááºáááºááá¬ááᯠááŸá áºáááºááŒá®áž Petya á áá°á·áá²á· áá»áŸáá¯á·ááŸááºáá±áá¬áá áºáá¯ááŸá¬ ááŸááá²á· áá°á·áá²á· shared key ááᯠáá¯á¶ážááá¬ááᯠááŸá áºáááºáááºááá¯ááẠááŸá áºáá¯á áá¯á¶ážááᯠáááºááŸááºááá¯á· áááá«áá°ážá Terraform ááá¯á·ááŒá±á¬áá·áº áááºážááá¯á·ááẠáááºážáá²áá¯áá¹áááá¶á á¬ážáá á±áááºá áááºáááºážá á¬ááœáẠá€ááá±á¬ááºááᯠááœáŸááºááŒáááºáááá¯á¡ááºáá«á áá«ááᯠááá¯ááŒáá·áºáá²á·á¡ááá·áºááŸá¬ ááœáŸááºááŒááááºá ááá¯ááá¯áááºááŸá¬á áá»áœááºá¯ááºááá¯á·ááœáẠá¡áááºážá¡ááŒá Ạmodule áá áºáá¯á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ module áá áºáá¯ááŸáá·áº ááááºááœáẠááœá²á·á ááºážááŸá¯áá áºáá¯ááŸááááºá ááŒá®ážáá±á¬á· áá«ááᯠá¡ááŒáá·áºáá áºáá±áá¬ááŸá¬ ááœáŸááºááŒááááºá
áá¯áááááá±á¬ááºážááŸá¯ááŸá¬ á á®áá¶áá±ážáá°ááŒá áºáááºá á€áá±áá¬ááœáẠááá±á¬ááºážááŸá¯ááŸá¬ á¡áá±ážá¡ááœá²ááá¯ááºáá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áááºááẠáá¯ááºáá±ážááŒá®áž áááºážááẠááá·áºá¡ááœáẠá¡áááºááŒá±áááºááá¯áá«á áááºážááẠá¡áá¯ááºáá¯ááºáá«á á¡áááºááŒá±á¬áá·áº ááŒá±á¬ááºážáá²áááºáááºážáᯠáááºáááºáá±áááºá
ááá±á¬ááºážáááºááŸá¬ ááááŠážá áœá¬ á€á á®áá¶áá±ážáá°ááᯠá áááºááá·áºá¡áá»áááºááᯠáááºá¡ááŒá²áááááºážáá»á¯ááºááá¯ááºááŒááºážááŒá±á¬áá·áºááŒá áºáááºá áá¯áááá¡áá±áá²á·á aws ec2 á áá¬ááá¯ááá¯ááá¯ááá²ááá¯áá¬ááᯠáááºáááááºážáá»á¯ááºááá¯ááºáá«áá°ážá ááá¯ááá¯áá¬á Linux áá«ááŸááá¯áẠWindows á¡ááŒá±á¬ááºážááᯠá¡áá¯ááŒá±á¬áá±áá¬áá¬ážá ááá¯á·ááŒá±á¬áá·áº ááá°áá®áá±á¬ áááºáááºááŸá¯á áá áºáá»á¬áž ááá¯á·ááá¯áẠááá°áá®áá±á¬ á¡áá¯á¶ážááŒá¯áá°ááá á¹á áá»á¬ážá¡ááœáẠáá°áá®áá±á¬á¡áá¯ááºááŒá áºááá·áº áá áºáá¯áá¯ááᯠáááºáá±ážááááá«á
ááá¬ážáááºá á¬ááœááºá á¬áááºážáá»á¬ážááœááºáááºážáá±á¬áºááŒáá¬ážááá·áºá¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážá¥ááá¬ááŸá¬á áááºááẠaws_instance ááá¯áá±ážááŒá®áž arguments á¡á á¯á¡áá±ážááá¯áááºááŸááºáá«áá á¡áááºá provisioner "local-exec" ááá¯áááºááŸááºááŒá®áž áááºá ansible- ááᯠrun áá«á áááºážááŸáá·áºáááºáááºá á¡ááŸá¬ážá¡ááœááºážáááŸááá±á áá á¬ážá á¬á¡á¯ááº
ááááºáá±á¬á· áá¯ááºáááºá á¡á²áá«áá²á· áááºáááºááŒá®áž áá¬á០áááŸá¬ážáá«áá°ážá ááá¯á·áá±á¬áºá á¥ááá¬á launch_configuration ááœáẠဠlocal-exec á¡áá¬áááŸááááºááᯠáááŒá¬áá® áááºááá±á¬áá±á«ááºáá¬áá«áááá·áºáááºá
ááẠlaunch_configuration ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž instance áá áºáá¯á០autoscaling group áá áºáá¯ááᯠáááºáá®ážááá¯áá±á¬á¡áá«á launch_configuration ááœáẠ"provisioner" á concept áááŸááá«á "á¡áá¯á¶ážááŒá¯áá°áá±áá¬" á¡áá°á¡áááŸááá«áááºá
ááá¯á·ááŒá±á¬áá·áºá ááá¯ááá¯áá»ááºááŒáá·áºáá±á¬ááŒá±ááŸááºážáá»ááºááŸá¬ áá¯á¶ážá áœá²áá°áá±áá¬ááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá áááºážááẠáááºážááᯠinstance ááá¯ááºááá¯ááºááœáá·áºáá¬ážááá·áºá¡áá«á ááá¯á·ááá¯áẠáá°áá®áá±á¬á¡áá¯á¶ážááŒá¯áá°áá±áá¬ááœááºá ဠlaunch_configuration ááá¯á¡áá¯á¶ážááŒá¯áá±á¬á¡áá«á áááºážááᯠinstance ááá¯ááºááá¯ááºááœáẠá áááºáá¯ááºáá±á¬ááºáá«áááºá
á¡áááºá áááºááẠprovisioner ááᯠrun áá»ááºáá±ážáá«áá áááºážááẠgluing component áá áºáá¯ááŒá áºáá±á¬ááŒá±á¬áá·áºá resource áá áºáá¯ááᯠáááºáá®ážáá±á¬á¡áá«á ááá¯á¡áá»áááºááœáẠáááºááẠáááºá provisionerá áááºá command ááᯠrun áááºááá¯á¡ááºáá«áááºá á¡á²áá®ááᯠá¡ááŒá±á¡áá±ááœá± á¡áá»á¬ážááŒá®ážááŸááááºá
áááºážá¡ááœáẠá¡ááŸááºáááºáá¯á¶ážá¡áááºážá¡ááŒá áºááᯠnull_resource áá¯áá±á«áºáááºá Null_resource ááẠá¡ááŸááºáááẠáááºáá®ážááááá±á¬ ááááºážááááºážá¡áááºážá¡ááŒá áºáá áºáá¯ááŒá áºáááºá áááºážááẠáááºááá·áºá¡áá¬ááá¯áá»áŸ ááááá API áááŸáá á¡ááá¯á¡áá»á±á¬áẠá¡ááá¯ááºážá¡áá¬áááŸááá±á ááá¯á·áá±á¬áº áááºážááẠááá·áºá¡á¬áž áááºááá·áºá¡áá»áááºááœáẠá¡áááá·áºáá±ážááááºááᯠááááºážáá»á¯ááºááá¯ááºáááºá á€ááá á¹á ááœááºá áááºáá®ážáá±á áẠcommand ááᯠrun áááºá
link ááá¯
ááá¹ááá¬áá»á¬ážá áœá¬ááŸááááºá ááááááºááá¹ááá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒá®ážá áœá¬áá±á¬á¡áá±ážá áááºá áá«ááááºá áá®á¡ááŒá±á¬ááºáž áá±á¬ááºážáá«ážáá áºáá¯ááºááŸááááºá ááá¯á·áá±á¬áº áááºááẠTerraform ááŸáá·áºá¡áá¯ááºáá¯ááºáá°ážááẠááá¯á·ááá¯áẠá¡ááŒá¬ážáá°áá»á¬ážá module áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áá«áá ááá¯á·áá±á¬áẠopen source á០code á¡áá»á¬ážá á¯áá²á·ááá¯á· module á¡áá»á¬ážá¡ááŒá¬ážááᯠáááºážááá¯á·áááá¯á¡ááºáá»ááºá¡ááœáẠáá°áá»á¬ážááá±ážáá¬ážááŒáááºááᯠáááºáááŒá¬áááááááŒá¯áááá«áááºá áá°áá áºáá±á¬ááºá áá±ážááŒá®áž áá°á·ááŒá¿áá¬ááᯠááŒá±ááŸááºážáááºá áá« GitHub ááŸá¬ áá»áááºáá¬ážáááºá á¡áááºááŸááºáá«á á±á áááºážááẠá¡áááºááŸááºáá±áááºááŒá áºáá±á¬áºáááºáž ááá¯áá±áá¬ááœáẠá á¬ááœááºá á¬áááºážááŸáá·áº á¥ááá¬áá»á¬ážáááŸááá»áŸáẠáááºážááᯠáááºáá°áá»áŸ á¡áá¯á¶ážááŒá¯áááºááá¯ááºáá«á áááºážááºážááááºááŸááºáá¬áááºááẠá¡áááºážáááºááá¯á ááŒá±ááŸááºážááá¯ááºá á±ááá·áº áá¯ááºáá±á¬ááºááá¯ááºá áœááºážáááŸááá«áá áááºážááᯠáááºáá°á០á¡áá¯á¶ážááŒá¯áááºááá¯ááºáá«á á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááᯠáá¯á¶ážááŸá¯á¶ážááẠáááºážáááºážáá»á¬ážá áœá¬ááŸááááºá
áá°ááœá±á¡áá¯á¶ážááŒá¯ááá¯á·áá¡á±á¬áẠáá áºáá¯áá¯áá±ážáá»ááºáááºááá¯áááºáá±á¬á· áá®ááá¹ááá¬ááœá±ááᯠááá¯ááºáá¬ááá¯á· á¡ááŒá¶ááŒá¯áá»ááºáá«áááºá
áá°ááá¯á·áá¬áá±áá±á¬áá±á«ááºážá ááº:
- á á¬ááœááºá á¬áááºážáá»á¬ážááŸáá·áº á¥ááá¬áá»á¬ážá
- áá¯ááºáá±á¬ááºáá»ááºá¡ááŒáá·áºá¡á á¯á¶á
- áá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºáá±á¬ áá¯á¶áá±áá»á¬ážá
- áá¯ááºááᯠááá·áºááŸááºážáá«á
- á ááºážáááºááŸá¯áá»á¬ážá
á á¬áá±ážááœá²áá»á¬ážááẠá á¬áá±ážáááºá¡ááœááºáááºáá²áá±á¬ááŒá±á¬áá·áº á¡ááŒá±á¡áá±á¡áá»áá¯ážáá»áá¯ážááŸááááºá á á¬ááœááºá á¬áááºážááœá±áá²á· á¥ááá¬ááœá±ááᯠááá¯áá¯á¶ááŒááºáááºá
áá«ááŒá±á¬áá·áº Module ááœá±ááᯠáááºááá¯áá±ážáááá²ááá¯áá¬ááᯠáá±á·áá¬áá²á·áá«áááºá á¡ááŒááºážá¡áá¯á¶ááŸá áºáá¯ááŸááááºá ááááá¯á¶áž á¡áá±ážááŒá®ážáá¯á¶ážá áááºááá¯ááºááẠáá±ážááá¯á· ááá¯ááºáá«áá°ážá áá¬ááŒá áºááá¯á·áá²ááá¯áá±á¬á· áá°áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážá áááºážááŸá±á·ááŸá¬ áá®á¡áá¯ááºááœá±ááᯠáá¯ááºáá¬ážááŒá®ážáá¬ážááá¯á·ááá¯á·á áá¯áááá¡áá±ááŸáá·áºá áááºáá¯á¶ážááŒááºáá²ááŒá áºáá«áá ááá¯á·áá±á¬áẠmodules ááŸáá·áº provisioners áá»á¬ážááœáẠáááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áááºááŒáá¯ážá á¬ážáá«á
á€áááºááŸá¬ á á¬ááœááºá á¬áááºážá áá®ážááá¯ážáá±á¬ááºá¡ááá¯ááºážááŒá áºáááºá ááᯠáááºááœá±ážáá±ááá¯ááºáááºâ âáá áºáá¯áá¯áá±á¬á· ááá²ááœá²áá°ážá ááá¯á¶ááŒááºáá°ážá" áá«áá±ááá·áº ááŒá±á¬ááºáá¡ááœááºáž ááœá±á·áááºá
á¡áᯠáá® modules ááœá±ááᯠáááºááá¯áá±á«áºáááá²ááá¯áᬠááŒá±á¬ááŒáá¡á±á¬ááºá
áá»áœááºá¯ááºááá¯á·ááá¯ááºááẠá¡áá»áááºááŸáá·áºá¡áá»áŸ ááŒá®ážááœá¬ážáá¬áááºááᯠáá»áœááºá¯ááºááá¯á· áá¬ážáááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááœáẠááá¯ááºáá áºááá¯ááºáááŸááá±á¬á·áá«á áá»áœááºá¯ááºááá¯á·ááœáẠááá¯áẠ20 ááŸááá±ááŒá®ááŒá áºáááºá áááºážááá¯á·á¡á¬ážáá¯á¶ážááẠááá¯ááºááœá²áá áºáá¯áá²ááœáẠááŸááá±áááºá ááá¯á·ááá¯áẠááá¯áá«áá«ážáá¯ááœáẠááŒá áºááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·ááᯠáá±áá¡ááá¯ááºá á¡áá»áá¯á·áá±á¬ á¡á áááºá¡ááá¯ááºážáá»á¬ážááŒáá·áº á áááºáá»áá¯ážáá»ááºááá¯ááºáááºááŒá áºáááºá ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠáááºáá°ááŒá¯ááŒááºážááŸáá·áº áá®ážááŸá¯ááºááŒááºážááá¯ááºáᬠá¡ááá¯ááºážá¡áá»áá¯á·ááŸááááºááᯠáá»áœááºá¯ááºááá¯á· áá¬ážáááºáá«áááºá ááá¯ááá¯áááºááŸá¬á áá»áœááºá¯ááºááá¯á·ááẠááœááºáááºá¡áááºážá¡ááŒá áºáá»á¬ážááᯠááŒá±á¬ááºážáá²áá«á áá»áœááºá¯ááºááá¯á· áá¬áá¯ááºááá·áºáááºááᯠáá¬ážáááºááááºá áá»áœááºá¯ááºááá¯á·ááá»ááºá¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áº áá»áœááºá¯ááºááá¯á· áá¬áá¯ááºááá·áºáááºá á€ááŸá®ááá¯á¡á¬ážáá¬ážááŸá¯ááᯠáááºááá¯á·ááŒá áºáá±á«áºá á±áááºáááºáž á áááºááŒáá·áº áá»áœááºá¯ááºááá¯á· áá¬ážáááºááá«áááºá
á¡á áœááºážááŸá áºáááºááŸááááºá áááá¡á áœááºážááẠá¡á¬ážáá¯á¶ážáá²ááœáẠáá áºáá¯ááŒá áºáááºá áá»áœááºá¯ááºááá¯á·ááœáẠáá¬á áá¬ááá¯ááºáá áºáá¯ááŸááááºá áááºááŸáá¡áá»áááºááœááºá áááºážááẠTerraform áááºááá¯ááºááŸáááá¬ážáááºá¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºááŒá áºáááºá
ááá¯áá° áááºážááᯠááŒááºážáááºááŒá®áž áááºááŸá¬ážááá¯ááºááẠáᯠáá±ážáá¬ážáá¬ážáááºá á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸá áá°áá»á¬ážááẠááá±á¬áá»ááºááᯠáá¯á¶á á¶á¡áá»áá¯ážáá»áá¯ážááŒáá·áº á áááºá¡áá¯á¶ážááŒá¯áá¬áá±á¬ááŒá±á¬áá·áº áááºážááẠá¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áºááŸáá·áº áá±ážááœá¬ááŒá±á¬ááºáž Terraform á¡ááá¯ááºážá¡ááá¯ááºážá០ááááŸááá¬áááºá ááŒá®ážáá±á¬á· ááŒá¿áá¬ááœá±ááŸááááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠáá áºáá±áá¬áááºážááœáẠá á¬áááºážááŒá¯á á¯áá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠâTerraform á¡á á®á¡á ááºâ ááá¯ááŸáááºááá·áºá¡áá« á¡ááŒá±á¡áá±áá»á¬ážááŸáááŒá®áž Terraform ááẠá¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážá á¡ááŒá±á¡áá±áá»á¬ážááᯠááœááºážáá¶ááœááºážáá¶áááºá¡áá á¡áá»áááºáá»á¬ážá áœá¬ áá¯ááºááœá¬ážááá¯ááºáááºá
á¥ááá¬á¡á¬ážááŒáá·áº 5 áááá ẠááŒá¬ááŒáá·áºáááºá áá áºáá»áá¯á·á¡ááœááºáá±á¬á· áá«á á¡áá»áááºáá±á¬áºáá±á¬áºááŒá¬áááºá 15 áááá áºáá±á¬ááºááŒá¬áá²á· ááá á¹á ááœá±ááᯠááœá±á·áá°ážáááºá AWS API ááẠá¡áááºážá¡ááŒá áºáá áºáá¯á á®á á¡ááŒá±á¡áá±ááŸáá·áº ááŒá áºáá»ááºáá±áááºáá»á¬ážááᯠá¡ááŒá±ááŸá¬ááẠ15 áááá áºááŒá¬ ááŒáá¯ážáááºážáá²á·áááºá á€áááºááŸá¬ á¡ááœááºááŒá®ážáá¬ážáá±á¬ á§áááá¬ááŒá áºáááºá
ááá¬áá¡á¬ážááŒáá·áºá áááºááẠáá áºáá±áá¬áááºážááœáẠáá áºáá¯áá¯ááᯠááŒá±á¬ááºážáá²ááá¯ááá·áºá¡áá«ááœáẠáááºá ááºááŒá¿áá¬áá áºáᯠáá±á«áºáá¬áááºááŒá áºááŒá®ážá ááá¯á·áá±á¬áẠ15 áááá áºá á±á¬áá·áºáá«á áááºážááẠááá·áºá¡á¬áž ááŒá±á¬ááºážáá²ááŸá¯á¡áá»áá¯á·ááᯠáááºážáááºá áá áºáá¯áá±ážáááºá áááºááẠáá¶ááœá±ážááœá±ážááŒá®áž "Yes" áá¯áá±ážááŒá®áž áá áºáá¯áá¯ááŸá¬ážááœá¬ážáá«áááºá á€áááºááŸá¬ á¡ááœááºááŸááºáááºáá±á¬ á¥ááá¬áá áºáá¯ááŒá áºáááºá Terraform ááẠááá·áºá¡á¬áž ááŒá¿áá¬áá»á¬ážá០áá¬ááœááºááẠáááŒáá¯ážá á¬ážáá«á ááá¯ááá¯áááºááŸá¬ áááºá¡ááá¯ááŸááá±á¬á¡áá¬ááᯠáá±ážáá«á ááŒá¿áá¬ááœá± ááŸááááºá Terraform 0.11 ááẠááá·áºá¡á¬áž áááºááá·áºáááºážááŒáá·áºáá»áŸ áá°áá®ááẠáááŒáá¯ážá á¬ážáá±á¬áºáááºážá 0.12 ááœáẠáááºááŒá±á¬ááá¯ááºáá±á¬ á áááºáááºá á¬ážá áá¬áá±áá¬á¡áá»áá¯á·ááŸááááº- "Vasyaá áááºážáá«ááá¯ááááºááá¯áá»ááºáááºá áááºážááá±á¬áá±á«ááºááá¯ááºááá¬áž"
áá¯ááááááºážáááºážááŸá¬ á€á§áááá¬ááᯠáá»áŸá±á¬á·áá»áááºááŒá áºáááºá ááá¯ááá¯áááºááŸá¬ áá áºáá±áá¬á០áá¯ááºážáá±á«áºááá¯ááŸá¯áá»á¬ážááẠá¡ááŒá¬ážáá áºáá±áá¬á០áá»áááºáááºááŸá¯ áááºážáá«ážááá¯ááºáááºá
áá áºáá¯áááºážáá±á¬ááŒá¿áá¬ááŸá¬ áááºááẠáá¯ááºáá»á¬ážáá»á¬ážáá±ážááẠááá¯á¡ááºáááºá ááá¯ááá¯áááºááŸá¬ áááºááẠááá¯ááºá¡áá»á¬ážá¡ááŒá¬ážááœáẠvariable áá»á¬ážááᯠáá±á¬áºááŒááŒá®áž áááºážááᯠá¡ááºááááºáá¯ááºááẠááá¯á¡ááºáá«áááºá ááá»áá¯á·áá°ááœá±á áááŒáá¯ááºáá°ážá áá«á áá»áœááºáá±á¬á·áºá¡ááœáẠáá¯á¶ááŸááºáá«áá²á á¡áá»áá¯á·á âáá«ááᯠáá áºáá±áá¬áááºážááŸá¬ áá¬ááá¯á·áá±ážáá¬ážáá²á á¡á¬ážáá¯á¶ážááᯠáá áºáá±áá¬áááºážááŸá¬ áá¬ážáááºâ áᯠáá°á¡áá»áá¯á·á áááºááŒáááºá áá«á ááŒá áºááá¯ááºáá±ááá·áº áá«á áá¯áááá¡á áœááºáž áá±á¬ááºááŸá¯áá«á
á€á¡áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá áºáá±áá¬áááºážááœáẠáááºáá°ááŸáááááºážá áá áºá ááŸá áºá áá¯á¶ážá ááá¯ááá¯áá¬á áá áºá á¯á¶áá áºáá±á¬ááºá áá¯á¶ážáá±áááºá
áá®ážááŒá¬ážá¡á áááºá¡ááá¯ááºážáá áºáá¯á ááá±á¬ááºáá áºáᯠááá¯á·ááá¯áẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯á¡á¬áž áááºáá°ááá±á«áºááá¯ááááºážá áá°áá«ážáá±á¬ááºá០áá¯áá áºáá±á¬ááºá áá«áá¡á±ážáááºá
á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážá¡ááŒá±ááŸá¬ á¡áááºáá áºáá±áá¬ááœááºááŒá áºáááºá ááá±á¬áá»ááºá ááŒá®ážáá±áááºááá¯áááºá ááŒá±ááŸááºážáá»ááºá ááá·áºáá»á±á¬áºááŸá¯áááŸááá²á· á¡ááŒá±á¡áá±áá»áá¯ážááŸá¬ ááŒá¯á¶áááŸá¬ááŒá áºááŒá®áž á¡áá¬á¡á¬ážáá¯á¶ážá á¡á²áá®á·ááŸá¬ á¡áá¯ááºáááŒá áºáá¬ááŒá±á¬áá·áº áá±á¬ááŸá±á¬ááŒá®áž á¡áá¯á¶ážáááºááá¯ááºáá«á ááŸá áºáá¯áá¯á¶ážááŸá¬ á¡á¬ážáá¬áá»ááºááœá±ááŸááááºááá¯áᬠáá¬ážáááºáá¬ážáááœá±á·áá±á¬á· áá«á ááŸá¬ážá áá¬áááŸááá«áá°ážá
stack VPC ááŸá¬ áá áºáá¯áá¯ááŒá±á¬ááºážáá²ááœá¬ážááŒá®áž EC2 ááŸá¬ áá®á¡ááŒá±á¬ááºážá¡áá²ááœá±ááᯠá¡áá¯á¶ážáá»ááá¯áááºááá¯áááºá á¥ááᬠááá·áºááŸá¬ subnet á¡áá áºáá áºáá¯ááŸáááá¯á· autoscaling group ááᯠá¡ááºááááºáá¯ááºááá¯áááºááá¯áááºáá±á¬á· áá® dependency orchestration ááá¯á·áá±á«áºáá«áááºá ááŒá±ááŸááºážáááºážá¡áá»áá¯á·ááŸááá«áááº- áááºáá°á áá¬ááá¯áá¯á¶ážáá¬áá²á
áááºááá¯ááŒá±ááŸááºážáá»ááºááœá±ááŸááá²ááá¯á· á¡ááŒá¶ááŒá¯ááá¯ááºáá«áááºá ááŸá±á¬áºááá¬ááá¯áá¯ááºáá±á¬ááºááẠTerraform ááá¯áá¯á¶ážááá¯ááºáááºá ááá¯á·ááá¯áẠTerraform ááá¯á¡áá¯á¶ážááŒá¯ááẠmakefiles ááá¯áá¯á¶ážááá¯ááºáááºá á¡á²áá®ááŸá¬ áá áºáá¯áᯠááŒá±á¬ááºážáá²ááœá¬ážááá¬ážááá¯áᬠááŒáá·áºáááºážá áá®ááŸá¬áá² á áááºááá¯ááºáá«áááºá
áá®áá¯á¶ážááŒááºáá»ááºááᯠáááºáááºááá¯ááá±á¬áá»áá²á á€á¡áá¬ááẠá¡á±ážááŒáá±á¬ááŒá±ááŸááºážáá»ááºááŒá áºáááºáᯠáááºáá°á·ááá¯áá»áŸ áá¯á¶ááŒááºáá«ááá¬ážá á¡ááŒá¯á¶ážáá áºáá¯ááᯠááŒááºááá¯ááºááá±á¬á· áá¶ááááœá± ááá¯ážáááºáá¬áááºá
áá¯ááºáá«áááºá áá«ááᯠá¡áááºááŸá¬ áá ááºážáá«áá²á·á Terraform ááẠTerraform á០áá¯ááºáá±á¬ááºááẠáááºáá±á¬á¡áá«á០áá®ááá¯ááºážááá¯ááºáá²á·áá«á
á¡á á®áááºáá¶á á¬áá áºáá¯ááœáẠáá°ááá¯á·á âááá¯ááºáá°ážá áá«á á¡áá¯ááºáááŒá áºáá°ážáâ á¡áááááá±á¬á· á¡áá¯ááºáááŒá áºááá·áºáá°ážá Terraform á០Terraform ááá¯áááºááœáá·áºááá¯ááºáá±á¬á¡áá«ááœááºáááºážáááºá¡ááœááºá¡áááºááŒá®ážáá¯á¶ááááºááŒá áºáá±á¬áºáááºážá ááá¯á·áá±á¬áẠTerraform ááá¯áááºááá¯ááá¯á·ááá¯ááºááá·áºáá«á Terraform ááẠá¡ááŒá²áááºáž á¡ááœááºááœááºáá°á áœá¬ á áááºááá·áºáááºá
áá áºáá±áá¬áááºážááœáẠáá áºá á¯á¶áá áºáá¯ááŒá±á¬ááºážáá²ááœá¬ážáá±á¬á¡áá«ááœáẠáá¯ááºážáá±á«áºááá¯ááŸá¯á¡á¬áž ááá¯á¡ááºáá«áá Terragrunt ááŸááá«áááºá
Terragrunt ááẠáááºá¡á¬áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ áá±á¬áºáá»á°ážáá»á¬ážááá¯á· áá±á«áºááá¯ááŸá¯áá»á¬ážááᯠááŸáááŸáá¯ááºážáááºááŸáá·áº ááŒáá¯ážááá¯ááºááá¯ááºá á±ááá·áº Terraform á á¡ááá¯áááá¯ááááºáá áºáá¯ááŒá áºáááºá
áá¯á¶ááŸáẠTerraform ááœá²á·á ááºážááŸá¯áá¯á¶á ᶠááá¯ááºááẠá€áá²á·ááá¯á· ááŒá áºáá¯á¶ááááºá
áááºáá±á«áºááá¯ááá¯áá±á¬ áá®ážááá·áº module áá áºáá¯á¡á¬áž áááºáááºááŸááºáá«á
áá±á¬áºáá»á°ážááœáẠáááºááá·áºááŸá®ááá¯ááŸá¯ ááŸáááááºážá
ááŒá®ážáá±á¬á· áá® module á áá¬ááŒááºážáá»ááºááœá±ááᯠáááºáá¶áá«ááá²á Terragrunt á¡ááŒá±á¬ááºáž ááááá¯á· áá®áá±á¬ááºáá«áá²á
á á¬ááœááºá á¬áááºážááẠááá¯áá±áá¬ááœááºááŸáááŒá®áž GitHub ááœáẠááŒáẠ1 ááŸááááºá áá«áá±ááá·áº ááá á¹á áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážááŸá¬ áá«ááᯠáááºáááá¬ážááá¯á· ááá¯áá«áááºá áááºážááẠTerraform ááŸáá·áºá áááºáá¯ááºáá±á¬ááºááá·áºáá¯áá¹ááá®áá»á¬ážááœááºá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœááºááœááºáá°áááºá
ááá¯á·ááŒá±á¬áá·áº áá®ážááŸá¯ááºááŒááºážááẠTerragrunt ááŒá áºáááºá á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá»á¬ážááŸááá«áááºá
á¡áᯠcode áá²á· áááºááá¯á¡áá¯ááºáá¯ááºáááá²ááá¯áᬠááŒá±á¬ááŒáá·áºáá¡á±á¬ááºá
ááá·áºáá¯ááºááœáẠá¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááá·áºááẠááá¯á¡ááºáá«áá ááá á¹á á¡áá»á¬ážá á¯ááœáẠáááºážááẠááœááºáá°áááºá áááºááẠá¡áááºážá¡ááŒá áºá¡áá áºááᯠáá±ážáá¬ážáá±áááºá á¡áá¬á¡á¬ážáá¯á¶ážááẠááá¯ážááŸááºážáá«áááºá
á¡áááºá ááá·áºááœáẠáááºááŒáá¯áááºáááºáá®ážáá¬ážááá·áº á¡áááºážá¡ááŒá áºá¡áá»áá¯á·ááŸááá«áá á¥ááá¬á ááẠAWS á¡áá±á¬áá·áºáá áºáá¯ááœáá·áºááŒá®ážáá±á¬áẠTerraform á¡ááŒá±á¬ááºáž áá±á·áá¬ááŒá®áž ááá·áºááœááºááŸáááŒá®ážáá¬ážá¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯áá«áá ááá¯á·ááŸáᬠáááºá module ááᯠá€áááºážááŒáá·áº ááá¯ážáá»á²á·ááŒááºážááẠááá·áºáá»á±á¬áºáááá·áºáááºá áááºážááẠááŸáááŒá®ážáá¬ážá¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááᯠáá¶á·ááá¯ážáá±ážáááºá
block resource ááᯠá¡áá¯á¶ážááŒá¯á á¡áááºážá¡ááŒá áºá¡áá áºáá»á¬áž áááºáá®ážááŒááºážááᯠáá¶á·ááá¯ážáá²á·áááºá
á¡ááœááºááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá¯á¶ážááŒá¯áá²á·ááá·áºá¡áá±á«áºáá°áááºá á¡ááœáẠID ááᯠá¡ááŒá²áááºáž ááŒááºáá±ážáááºá
Terraform 0.11 ááœáẠáá¯áááá¡ááœááºáááá¬áááºááŸá¬ážáá±á¬ááŒá¿áá¬ááŸá¬ á á¬áááºážáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážááŒá áºáááºá
áá®ááá¯áá»áá¯áž áá¯á¶ážá áœá²áá°á á¬áááºážááŸáááẠá¡áááºá¡áá²ááŸááááºá
block resource áá¯á¶ážááŒá®áž áá®á¡áá¯á¶ážááŒá¯áá°ááœá±ááᯠáááºáá®ážáá²á·á¡áá« á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá á¬áááºážáá áºáá¯áá¯á¶ážááá¯ááŒááºá áá áºáá¯á á®á¡ááœáẠááá¯ááºáá áºáá¯áááºáá®ážáááºá á¡á¬ážáá¯á¶ážá¡áááºááŒá±áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡áááºááœááºááŸááá±á¬ user3 ááᯠá€áá±áá¬á០áááºááŸá¬ážááá·áºáááºá ááá¯á·áá±á¬áẠá¡ááœáŸááºážááẠááŒá±á¬ááºážáá²ááœá¬ážáá±á¬ááŒá±á¬áá·áº áá°á·áá±á¬ááºá០áááºáá®ážáá¬ážáá±á¬ á¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠááŒááºáááºáááºáá®ážáááºááŒá áºáááºá
á¡ááŒá±á¡áá±ááŸááá±á¬ áááºáááºážáá»ááºááœáẠá á¬áááºážáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááŒááºážá áá¬áá¬áá±á¬áááºáááºážáá»ááºáá°ááẠá¡áááºáááºážá á€á¡áááºážá¡ááŒá áºááᯠáááºáá®ážááá·áºá¡áá« áááºááá¯ážá¡áá áºáá áºáᯠáááºáá®ážááá·áº á¡ááŒá±á¡áá±ááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá AWS Access Key ááá¯á·ááá¯áẠAWS áá»áŸáá¯á·ááŸááºáá®ážá ááá¯ááá¯áááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááẠá¡áá¯á¶ážááŒá¯áá°áá áºáŠážááᯠáááºáá®ážáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠAccess ááá¯á·ááá¯áẠáá»áŸáá¯á·ááŸááºáá±á¬á·á¡áá áºááᯠáááŸááááºá áá¯á¶ážá áœá²áá°áá áºáŠážááᯠáá»ááºááá¯ááºááá¯ááºážá á€á¡áá¯á¶ážááŒá¯áá°ááœáẠáá±á¬á·á¡áá áºáá áºáᯠááŸááá«áááºá áá«áá±ááá·áº áá«á Feng Shui ááá¯ááºáá«áá°ážá áá¬ááŒá±á¬áá·áºáá²ááá¯áá±á¬á· áá¯á¶ážá áœá²áá°á á¡ááœá²á·ááá± ááœááºááœá¬ážááá¯ááºáž áá°á·á¡ááœáẠá¡áá¯á¶ážááŒá¯áá°á¡áá áºááᯠáááºáá®ážáá±ážááẠá¡áá¯á¶ážááŒá¯áá°á áá«ááá¯á·áá²á· áá°áááºáá»ááºážááŒá áºáá»ááºááŸá¬ ááá¯ááºáá«áá°ážá
áá«á ááŒá±ááŸááºážáá»ááºáá«á áá«á Jsonnet ááŸá¬áá±ážáá¬ážáá²á·áá¯ááºáá«á Jsonnet ááẠGoogle á០ááá°áá¬áá¯á¶á á¶áá¬áá¬á áá¬ážáá áºáá¯ááŒá áºáááºá
á€á¡áááá·áºááẠááá·áºá¡á¬áž á€áá¯á¶á á¶áááááºááᯠáááºáá¶ááœáá·áºááŒá¯ááŒá®áž á¡ááœááºááœáẠááá·áºáá¯á¶á á¶á¡ááá¯ááºáž ááŒá¯áá¯ááºáá¬ážááá·áº json ááá¯ááºááᯠááŒááºáá±ážáááºá
ááá°áá¬áá¯á¶á á¶á áá®ááá¯áá«á
Terraform ááẠááá·áºá¡á¬áž HCL ááŸáá·áº Json ááŸá áºáá»áá¯ážáá¯á¶ážááᯠáá°áá®áá±á¬áááºážááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº ááá·áºááœáẠJson ááᯠáá¯ááºáá¯ááºááá¯ááºá áœááºážááŸááá«á áááºážááᯠTerraform áá²ááá¯á· ááŒááºááœá¬ážááá¯ááºáááºá ááá¯ážáá»á²á·ááŸá¯ .tf.json áá«áá±á¬ ááá¯ááºááᯠá¡á±á¬ááºááŒááºá áœá¬ áá±á«ááºážáá¯ááºáá¯ááºáá«áááºá
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠáá¯á¶ááŸááºá¡ááá¯ááºáž áá¯ááºáá±á¬ááºáááº- terraform init, terrorm áááºáá±á¬ááºáááºá ááŒá®ážáá±á¬á· áá»áœááºáá±á¬áºááá¯á·á áá¯á¶ážá áœá²áá° ááŸá áºáá±á¬ááºááᯠáááºáá®ážáááºá
á¡áá¯ááᯠáá áºá á¯á¶áá áºáá±á¬áẠá¡áááºážá ááœááºááœá¬ážááẠáá»áœááºáá±á¬áºááá¯á· áááŒá±á¬ááºáá±á¬á·áá°ážá json ááá¯ááºááᯠáááºážááŒááºáá«áááºá Vasya Pupkin áá»ááºáá áºáá²á·ááŒá®áž Petya Pyatochkin áá»ááºáá áºáá²á·áááºá Petya Pyatochkin ááẠáá±á¬á·á¡áá áºááᯠáááºáá¶áááŸááááºááá¯ááºáá«á
Terraform ááᯠá¡ááŒá¬ážáááááá¬áá»á¬ážááŸáá·áº áá±á«ááºážá ááºááŒááºážááẠá¡ááŸááºáááẠTerraform áá¡áá¯ááºááá¯ááºáá«á Terraform ááẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáá®ážáááºá¡ááœáẠááááºáá±á¬ááºážáá áºáá¯á¡ááŒá Ạáááºáá®ážáá¬ážááŒááºážááŒá áºáááºá áá±á¬ááºááŸáá±á«áºáá¬ááá»áŸá¡áá¬á¡á¬ážáá¯á¶ážááẠTerraform áá áá¯ážááááºáá°áááºááŸá¯ááá¯ááºáá«á ááŒá®ážáá±á¬á· á¡á²áá®áá²ááŸá¬ áááºááá¯á· áááá¯áá°ážá áááºááá¯á¡ááºááá»áŸááᯠáá¯ááºáá±á¬ááºáá±ážáá±á¬ Ansible ááŸááá«áááºá
ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠTerraform ááᯠááá¯ážáá»á²á·ááŒá®áž áá áºáá¯áá¯ááŒá®ážááŒá±á¬ááºááŒá®ážáá±á¬áẠá¡áá»áá¯á·áá±á¬ command ááá¯áá±á«áºááá¯ááá·áºá¡áá« á¡ááŒá±á¡áá±áá»á¬áž ááŒá áºáá±á«áºáá¬áá«áááºá
ááááááºážá áá»áœááºá¯ááºááá¯á·ááẠá€á¡áááá·áºááᯠáá±ážáá¬ážááá·áºáá±áá¬ááœáẠá¡ááœááºáá áºáᯠáááºáá®ážáááºá
ááá¯á·áá±á¬áẠshell terraform output ááŸá€ command ááá¯áá±á«áºááŒá®ážáá»áœááºá¯ááºááá¯á·ááá¯áá»ááºáá±á¬áááºááá¯ážááá¯áááºááŸááºáá«á ááá¯á·ááŒá±á¬áá·áºá command ááᯠá¡á á¬ážááá¯ážáááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááŒáá·áº áá¯ááºáá±á¬ááºáááºá á¡áááºážá¡áááºááŒá±áááºá
áá¯ááááááºážá á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á·á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážáá±á«áºáá°áááºá null_resource ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒá áºáááºá á¡áááºážá¡ááŒá áºááŒá±á¬ááºážáá²ááŸá¯á¡áá»áá¯á·á ID ááᯠáááŒá¬áá®ááœáẠáá°áá®áá±á¬ local-exe áá¯áá±á«áºááá¯ááºáááºá
Amazon ááẠá¡ááŒá¬ážáá±á¬ á¡áá»á¬ážáá°ááŸá¬ áá¶á·ááá¯ážáá±ážáá°áá»á¬ážáá²á·ááá¯á·ááẠáááºážáááá¯ááºááá¯áẠá¡á áœááºážá¡áááºážááá á¹á áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááá±á¬ááŒá±á¬áá·áº áááºážááẠá á¬ááœááºáá±á«áºááœáẠáá»á±á¬ááœá±á·áá±áá«áááºá
á¡ááŒá áºáá»á¬ážáá¯á¶ážááá á¹á ááŸá¬ AWS á¡áá±á¬áá·áºáá áºáá¯ááœáá·áºáá±á¬á¡áá«á áááºá¡áá¯á¶ážááŒá¯ááá·áºáá±ááá»á¬ážááẠá¡áá±ážááŒá®ážáááºá á€á¡ááºá¹áá«áááºááᯠááá¯áá±áá¬ááœáẠááœáá·áºáá¬ážáá«ááá¬ážá áá®áááºáá¬á 2013 áá±á¬ááºááá¯ááºážááœáẠáááºááœáá·áºááá¯ááºáááºááŒá áºáááºá áááºááẠVPC ááœáẠáá¯á¶áá±á¡áá¯á¶ážááŒá¯áá±ááẠá áááºááá¯á·ááŒá áºááá¯ááºáááºá ááá·áºáááºáá»ááºáá»á¬ážáá»á¬ážá áœá¬ááŸááááºá ááŒá®ážáá±á¬á· Amazon á áá°ááá¯á·ááᯠá á¬ááœááºá á¬áááºážááœá± ááá»áŸá±á¬ááºáá¯á¶áž ááŒáá·áºáá»á²ááœá¬ážáááºá
ááŸá±á¬ááºááŒááºááẠá¡ááŒá¶ááŒá¯áá¬ážáá±á¬ á¡áá»ááºá¡áá»áá¯á·ááŸááá«áááºá
á áááºáááºá Terraform á¡á á®á¡á áẠááá¯á·ááá¯áẠTerraform CLI á¡ááœááºážááŸá áá»áŸáá¯á·ááŸááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŸá±á¬ááºááŒááºáá«á á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠtfvars ááá¯ááºááœááºááŒá áºá á± ááá¯á·ááá¯áẠáááºáááºážáá»ááºááŒá±á¬ááºážáá²ááŸá¯ááŒá áºá á±ááá¯ááºáááºááŒá áºá á± ááá·áºááá¯ááºáááºá
ááá¯á·áá±á¬áº áááºááẠá€ááŸá±á¬áºá¡áááá·áºáá áºáá¯áá¯á¶ážááᯠá¡ááœááºáá»ááºááẠáááá¯á¡ááºáá«á Terraform á¡á á®á¡á áẠ- var ááŸáá·áº off áá«ááá¯á·ááœá¬ážáá«á ááá variable ááẠvará áá¯ááá variable ááẠvará ááááá á áá¯áá¹áááŒá áºáááºá áá»áœááºáá±á¬áº á¡áá»á¬ážáá¯á¶ážáá¯á¶ážáá²á· áá¯ááºá¡ááŒá Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá²á· á¡áá±ážá¡ááŒá®ážáá¯á¶áž áááá¬áááá±á¬á· áá¯ááºááᯠááŒáá·áºáá¯á¶áá²á· á¡á²áá®áá±áá¬ááŸá¬ ááŒáá·áºáá»ááºáá¬ážáá²á· á¡áá¬ááᯠááŸááºážááŸááºážáááºážáááºáž áá¬ážáááºáá¬ážááá·áºáá«áááºá áááºá¡ááŒá±á¡áá±áá²á· áááºáááºááá¯ážááœá± ááŸáááá·áºáá²á ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºá á¡á á¯á¡áá±ážááᯠáááºáá®ážááẠáá°á¡áá¯á¶ážááŒá¯áá²á·ááá·áº ááá·áºáááºáá»ááºáá»á¬ážááᯠVasya á¡á¬áž áá±ážááŒááºážááẠáááá¯á¡ááºáá«á áááºáááºážáá»ááºááŸáá·áº áááŒá¬áá ááá¯ááºáá®ááá·áº tfvars extension ááŒáá·áº ááá¯ááºáá áºáá¯ááœáá·áºááẠááá¯á¡ááºááŒá®áž ááá¯á¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒáá·áºááŸá¯áá«á
ááá¯á·á¡ááŒááºá áááºáááºááá¯áá»áŸá±á¬á·áá»ááẠáá áºááŸááºáááºááŒá±áá»á¬ážááᯠááá¯á¶ážáá«ááŸáá·áºá á€á¡ááœááºááŒá±á¬áá·áº áá±ážáááºáá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ module áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯ááá¯ááœááºáá°áááºá
ááá¯á·á¡ááŒáẠááŒáá¯ááºáá°áá«áááᯠááá·áºáááºááẠáááá¯á¡ááºáá«á áá»áœááºá¯ááºááœáẠáááºážááŒá Ạ150 ááŸáááŒá®áž Amazon parallelism ááᯠáá°áááºáž 10 á០100 ááá¯á· ááá¯ážááŒáŸáá·áºááá¯áá«áá áá áºáá¯áᯠááŸá¬ážááœá¬ážááá¯ááºáááºá áá«ááŸááá¯áẠá¡áá¯á¡áááºááŒá±ááá¯ááºáá±ááá·áº Amazon á áááºážáá¯ááºážáá±á«áºáá¬áá»á¬ážááœááºážáááºááá¯á· ááŒá±á¬ááẠááŒá¿áá¬áááºáááá·áºáááºá
Terraform ááẠá€ááŒá¿áá¬á¡áá»á¬ážá á¯ááᯠááŒááºáááºá áááºááẠááŒáá¯ážá á¬ážáááºááŒá áºáá±á¬áºáááºáž áááºáá¬áá»áŸáá®ážáá«ážá¡á±á¬ááºááŒááºáááºááá¯ááºáá«á Parallelism=1 ááẠAWS API á¡ááœááºáž ááá¯á·ááá¯áẠTerraform áááºáá±á¬ááºááŸá¯áá±ážáá°á¡ááœááºážá áá»áá¯á·ááœááºážáá»ááºá¡áá»áá¯á·ááᯠááá¯ááºáááá«á á¡áá¯á¶ážááŒá¯ááẠá¡áá±ážááŒá®ážáá±á¬á¡áá¬ááŒá áºáááºá ááá¯á·áá±á¬ááºáááºáááºááŸááºáááºááá¯á¡ááºáááº- parallelism=1 ááŸáá·áº Terraform áá±á«áºááá¯ááŸá¯áá áºáá¯ááŒá®ážáá¯á¶ážáááºá¡ááá á±á¬áá·áºáá«á ááá¯á·áá±á¬ááºáá¯áááá ááá¯á·áá±á¬ááºááááááŒá áºáááºá áá°ááá¯á·ááᯠáá áºáá¯á¶ážááŒá®ážáá áºáá¯á¶áž ááœáŸáá·áºáá áºáááºá
áá°ááœá±á áá»áœááºáá±á¬á·áºááᯠâáá¬ááá¯á· Terraform workspace á ááá±á¬ááºážáá°ážááá¯á· áááºááá¬áá²â áá¯ááºá¡ááŒá Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááááá¬áááẠáááºááá·áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáááºáá®ážáá¬ážáááºááŸáá·áº áááºááá·áºáááºááá¯ážáá»á¬ážááŸááááºááᯠááŒáá·áºáááºááŒá áºáááºáᯠáá»áœááºá¯ááºáá¯á¶ááŒááºáá«áááºá
áá¯ááºáááºážááœááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá áááºáá®ážááá¬ážáá«á áááºážááẠá¡áá¯á¶ážááŒá¯áá°áá»á¬áž Terraform á¡áá¯ááºáá±áá¬áá»á¬ážááá«áá² áá»áœááºá¯ááºááá¯á·áá±ááá¯ááºááááá¯ááºáá±á¬ GitHub ááŒá¿áá¬áá»á¬ážááœáẠáá±ážáá¬ážáá²á·áááºááᯠáááá¯ááá¯áá«á ááá¯ááºáá°áž áá®ááᯠááá¯ááºáá°ážá Terraform Enterprise ááẠá á®ážááœá¬ážáá±ážááá¯ááºáᬠááŒá±ááŸááºážáá»ááºáá áºáá¯ááŒá áºáááºá HashiCorp á០Terraform ááẠáá»áœááºá¯ááºááá¯á· á¡áá¯ááºáá±áá¬áá»á¬áž ááá¯á¡ááºááŒá±á¬ááºáž áá¯á¶ážááŒááºáá²á·áááºá ááá¯á·ááŒá±á¬áá·áº áááºážááᯠáá±ážáá±ážááá¯á· ááá¯ááºááŒá¬ážáá²á·áááºá áá®ážááŒá¬ážááá¯ááºááœá²áá áºáá¯ááŸá¬ ááá·áºááᬠááá¯ááœááºáááºááá¯á· áá»áœááºáá±á¬áºáááºáá«áááºá ááá¯á·áá±á¬áẠááá¯ááºá¡áááºážááẠáááºááŸááááá·áºáááºá ááá¯á·áá±á¬áº ááá¯ááŸááºážáááºážááœá¬ážáá«áááºá
Code áá²á· áááºááá¯á¡áá¯ááºáá¯ááºáááá²á ááááºáá±á¬á· á á¬áááºážááœá±áá²á· á¡áá¯ááºáá¯ááºáá¬á áá áºáá¯áááºážáá±á¬ áá¬áá»ááºááŸá¯áá«áá²á Terraform ááá¯ááá¯ááá¯ááœááºáá°á áœá¬áá°áá«á á€á¡áá¬ááẠááá·áºá¡ááœáẠáá±á¬ááºážáá±á¬á¡áá¬ááŸááºááá»áŸááᯠááŒá¯áá¯ááºáá±ážááá·áº á¡áá¬ááá¯ááºáá«á á¡á²áá®ááŸá¬ á á¬ááœááºá á¬áááºážááŸá¬ áá±ážáá¬ážáá²á·á¡áá¬á¡á¬ážáá¯á¶ážááᯠááœááºážáá»á áᬠáááá¯áá«áá°ážá
á¡á á®áááºáá¶á á¬á áá±á«ááºážá ááºááŸá¬ âá¡áá¬áááºá¡ááœááºâ áᯠáá±ážáá¬ážáá¬ážáááºá áá®á¡ááŒá±á¬ááºážááᯠá¡ááá¯áá»á¯á¶ážááŒá±á¬áááºá á¡áá¬áááºá¡ááœááºá ááá¯ááá¯áááºááŸá¬ 0.12 ááẠáááŒá¬áá®ááœááºááŸááá¬áá±á¬á·áááºááŒá áºáááºá
0.12 ááẠáá á¹á ááºážá¡áá áºáá áºáááºááŒá áºáááºá áá¯á¶ááŸáẠáááá¯ááááºáá±ážááœá²ááŒááºážá០áááºážáááºáá¬áá«áá áááºáááºááŸáá·áº áá¬áááºáá»á¬ážááᯠáááŒáá¯ááºáááºáááºáž áááœááºáá»ááºáá±á¬áºáááºáž á¡ááŒá±á¡áá±áá±á«áºáá°áááºá ááŒá±á¬ááºážáá²áá±áá±á¬ ááááºááá¯á·ááŒááºážá áááºá¡áá»á¬ážááŒá®ážááœááºááœá¬ážáá²á·á¡ááœáẠ0.12 á ááá·áºá¡ááœáẠááŒá±ááŸááºážáá±ážáá«áááá·áºáááºá
áá«áá±ááá·áº! á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ modules áá»á¬ážááŸáá·áº third-party solutions áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á ááá¯ááá¯ááŸáá·áºááá¯á ááá¯ážááá¯ážááŸááºážááŸááºážáá±ážáá«á 0.12 ááẠááá·áºá¡ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒá¯ááŒááºáá±ážáááºáᯠáá»áŸá±á¬áºááá·áºáá±á áá¬áááá¯áá«á
á¡á á®áááºáá¶á á¬á¡ááœáẠáá»á±ážáá°ážáááºáá«áááºá áá¯ááºá¡ááŒá Ạá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááŒá±á¬ááºážááᯠáááºááŒá±á¬áá²á·ááŒá®áž á á¬áá±ážááœá²áá»á¬ážá¡ááŒá±á¬ááºáž á áá¬ážáá¯á¶ážáá áºáá¯á¶ážáááºáž ááŒá±á¬áá²á·áááºá áá±á¬áºáá»á°ážáá»á¬ážááœáẠá ááºážáááºááŸá¯áá»á¬áž ááá¯á¡ááºáá«ááá¬ážá áá«áááºáá°á·áá¬áááºáá²á áá«ááá¯ááºááá¯ááºáá±ážááá¯á· ááá¯á¡ááºááá¬áž áá«ááŸááá¯áẠáá±á¬áºáá»á°ážááœá±áá²á· áá¬áááºáá¬ážá
áá¬ááá·áºááŸá áºááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠá ááºážáááºááẠáá¯á¶ážááŒááºáá¬ážáá±á¬ á¡á á®áááºáá¶á á¬áá»á¬ážááŸáá·áº ááŒáá·áºáá±áááá·áºáááºá áá¬ááᯠá á¯á¶á ááºážáááá² ááá¯áá¬á á¡ááŒá®ážáá¬ážáá¯á¶áž áá±ážááœááºážáá«á ááŸá®ááá¯ááŸá¯áá»á¬ážá áœá¬ááŸáááŒá®áž ááá°áá®áá±á¬áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážáá¶á០ááá·áºáááºáá»ááºáá»á¬ážáá»á¬ážá áœá¬ááŸááááºá áááºážáá²á·áá« á áá¬ážááŒá±á¬áá±áá²á·á¡áá« âáá« á á¬áá±ážááœá²ááœá±ááá¯áááºâ ááá¯á·áá±ážáá±á¬á· âáááºáž áá¬á ááºážáááºááŸá¬áá²â áááºážáá²á·áá±áááŸá¬ áááºážá ááºážáááºáááºááŒá±á¬áááºá á¡á²áá®á¡áá«áá»ááẠáá«á áá«á·áá±áááŸá¬ á¡áá¯ááºáááŒá áºáá°ážááá¯á· áá«ááŒá±á¬áááºá ááá¯ááá¯áááºááŸá¬á á€ááá á¹á ááá¯ááẠáá»áœááºá¯ááºááá¯á·ááá±á¬áá°ááá¯ááºáááºááá¯ááºáá±á áááºážááá¬ááá¯ááºážááá¯ááºáᬠááŒá¿áá¬ááœá± á¡áá»á¬ážááŒá®ážááŸááááºááá¯áᬠáááŒá±á¬ááá¯áá«áá°ážá ááá¯ááá¯áá¬á áá®á á¬áá±ážááœá²ááœá±ááᯠáá¯á¶áá±á¬ááºá¡á±á¬áẠáááºááá¯áá±ážáááá²á
áá»áœááºá¯ááºááẠá€á¡ááŒá±á¬ááºážá¡áá¬ááᯠáááºááŒáœá áœá¬ áá¯áá±ááááŒá¯áá±áá«áááºá ááá¯ááá¯áááºááŸá¬ áááºáá±ážáá¬ážáá²á·ááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡áá±á«áº á¡ááŒá±áá¶á á á áºáá±ážááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá¯ááºáááºážá ááá¯ááá¯áááºááŸá¬ áááºááẠá€áá¯ááºááᯠáá±ážáá²á·áá«á áá»áœááºá¯ááºááẠá ááºážáááºááŸá¯áá»á¬ážááᯠáááºáá®ážááá¯ááºáááºáá°ááá·áºá¡áá»ááºá¡áá±á«áº á¡ááŒá±áá¶á áááºážááᯠrun ááẠááá¯á¡ááºáá«áááºá
Antoná á¡á á®áááºáá¶á á¬á¡ááœáẠáá»á±ážáá°ážáááºáá«áááºá áá»áœááºáá±á¬á·áºáá¬ááẠValery áá«á áá¿ááá±ážááœááºážáá±ážáá áºáá¯áá±ážáá«áá á±á á¡ááŒá±á¡áá±á¡á áá±áá¬áá»áá¬ážááŸá¯á ááŒáá·áºáá»ááºááŸá¯ ááŸááááºá á á®áá¶áá±á¬ááºááœááºááŒááºážááẠáá»áœááºá¯ááºáá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáááºáá®ážáá±ážáááºá ááŒáá·áºáá»ááºáá¬ááœáẠá¡áá¯á¶ážáááºáá±á¬á¡áá¬áá áºáá¯ááŒá áºááá·áº á¥ááá¬á áá¬áá¬áá»á¬ážá á¡ááá®áá±ážááŸááºážáá»á¬ážá áááºááŒáá·áº ááŒáá·áºáááºážáá±ážáá«áááºá ááá¯á·á¡ááŒáẠTerraform ááẠá á®áá¶áá±á¬ááºááœááºáá±ážáááºá¡ááœáẠááá¯ááá¯áá¯ááºáá±á¬ááºáááºááŸáááŒá®áž Ansible ááẠAnsible ááẠáá¯ááºááá¯ááºážááá¯ááºáá¬á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœááºáááºážááŒá áºáá±á¬ááŒá±á¬áá·áºá nginxá Postgres ááᯠinstall áá¯ááºááœáá·áºááŒá¯áááºá ááá¯á·áá±á¬áºáá áºáá»áááºáááºážááŸá¬ááẠAnsible ááẠá¥ááá¬á¡á¬ážááŒáá·áº Amazon ááá¯á·ááá¯áẠGoogle á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á®áá¶áá±á¬ááºááœááºáá±ážááŒááºážááᯠááœáá·áºááŒá¯áá¬ážáá¯á¶ááááºá ááá¯á·áá±á¬áº Terraform ááẠáááºážá module áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá±á¬á·ááºáá²ááºá¡áá»áá¯á·ááᯠá¡áá¯á¶ážáá»ááá¯ááºá á±áá«áááºá ááá·áºá¡ááŒááºá¡áá Terraform ááŸáá·áº Ansible á¡ááŒá¬ážááœááºááŸááá±á¬ áááºá ááºáá»ááºážá¡áá»áá¯á·ááŸááá«ááá¬ážá áááºááá·áºáá±áá¬ááœáẠá¡áá¯á¶ážááŒá¯áááá¯áá±á¬ááºážááááºážá ááá¯á·ááá¯áẠá¥ááá¬á¡á¬ážááŒáá·áºá Ansible ááẠá¡ááŸáá¯ááºááŒá áºáá±ááŒá®áᯠáááºáááºáá«ááá¬ážá á¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠTerraform ááᯠá¡áá¯á¶ážááŒá¯ááẠáááºááŒáá¯ážá á¬ážááá·áºáá«ááá¬ážá
áá±ážááœááºážáá±á¬ááºážá Valeryá Terraform ááẠ2014 áá¯ááŸá áºááááºážá áááºááœááºáá»áẠáááºááŸááºáá»ááºáá»á¬ážááœáẠááŒá±á¬ááºážáá²ááŒááºážáááŸáááŒá±á¬ááºáž áá»áœááºá¯ááºáá¯á¶ááŒááºáá«áááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœáẠáááºáá®ážáá²á·ááŒá®áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœáẠáá±áá¯á¶ážáá²á·áááºá áá»áœááºá¯ááºááá¯á·ááœáẠá á®áá¶ááœá²á·á ááºážááŸá¯ á á®áá¶ááá·áºááœá²ááŸá¯ Ansible ááá¯á¡ááºáá±áá±ážááẠá á áááºáá±á«áºááŸá¯ááŸá¬ launch_configuration á¡ááœááºážááœáẠáá¯á¶ážá áœá²áá°áá±áá¬áá»á¬áž ááŸááá±ááŒááºážáááºááŒá áºáááºá ááŒá®ážáá±á¬á· ááẠAnsible á áááºááá¯á·ááᯠááœá²áá¯ááºáá«á á€áááºááŸá¬ áá»áœááºá¯ááºá¡ááŸá áºáááºáá¯á¶áž á á¶áááºááŸááºáá»ááºááŒá áºáááºá
ááŸááá±á¬á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááŒá±á¬ááºážááŒá±á¬áá»áŸáẠá€áá¯á¶ááá¯á á¯áá±á¬ááºážááá·áº Packer áá²á·ááá¯á·áá±á¬ á¡áá¯á¶ážáááºááŸá¯áá»á¬ážááŸááá«áááºá ááá¯á·áá±á¬áẠTerraform ááẠá€áá¯á¶ááá¯ááŸá¬ááœá±áááºááŸáá·áº áááºážá launch_configuration ááᯠá¡ááºááááºáá¯ááºááẠáá±áá¬á¡áááºážá¡ááŒá áºááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯ááá¯áááºááŸá¬á á€áááºážá¡á¬ážááŒáá·áº ááá¯ááºááá¯ááºážááẠTracker ááᯠáŠážá áœá¬ááœá²áá¯ááºááŒá®ážáá±á¬áẠTerraform ááá¯ááœá²ááŒááºážááŒá áºáááºá áááºáá±á¬ááºááŸá¯ ááŒá áºáá±á«áºáá¬áá«á ááŒá±á¬ááºážáá²ááŸá¯á¡áá ẠááŒá áºáá±á«áºáá¬áááºá
áááºá¹ááá¬áá«! á¡á á®áááºáá¶á á¬á¡ááœáẠáá»á±ážáá°ážáááºáá«áááºá áá»áœááºáá±á¬á·áºáá¬ááẠMisha á RBS áá¯áá¹ááá®áá«á á¡áááºážá¡ááŒá áºáá áºáá¯áááºáá®ážáá±á¬á¡áá«ááœáẠAnsible ááᯠá á®áá¶áá±ážáá°ááŸáá áºááá·áº áááºáá±á«áºááá¯ááá¯ááºáá«áááºá Ansible ááœáẠdynamic inventory áá¯áá±á«áºáá±á¬ á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯áááºáž ááŸááá«áááºá Terraform ááᯠááẠáŠážá áœá¬áá±á«áºááá¯ááá¯ááºááŒá®ážá ááá¯á·áá±á¬áẠááŒááºáááºá០á¡áááºážá¡ááŒá áºáá»á¬ážááᯠááá°ááŒá®áž áááºážááᯠáá¯ááºáá±á¬ááºááá·áº Ansible ááᯠáá±á«áºááá¯ááºáááºá áááºá¡áá¬á ááá¯áá±á¬ááºážáá²á
áá°ááœá±á ááŸá áºáá¯á áá¯á¶ážááᯠáá®áá°áá®áá»áŸ áá¯á¶ážá áœá²ááŒáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠautoscaling á¡á¯ááºá á¯á¡ááŒá±á¬ááºáž áááŒá±á¬áá«á Ansible ááŸá áááºááŒáœáá±á¬á á¬áááºážá¡ááºážááẠá¡áááºááŒá±ááá·áºá¡áá¬áᯠáá»áœááºá¯ááºáááºáá«áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº autoscaling group ááœáẠlaunch_configuration áá¯áá±á«áºáá±á¬ áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯áẠtoolkit ááŸáááŒá®ážááŒá áºáááºá launch_configuration ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºážááŒá áºá¡áá áºáá áºáá¯ááᯠáááºáá®ážáá±á¬á¡áá«ááœáẠá áááºááẠááá¯á¡ááºááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠááŸááºáááºážáááºáá«áááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºáá¡ááŒááºá¡á Amazon ááẠáááºááŒáœáá±á¬á á¬áááºážá¡ááºážááá¯á¡áá¯á¶ážááŒá¯á Terraform ts ááá¯ááºááá¯áááºááŸá¯ááŒááºážáááºá¡ááœááºá¡áá»áœá¶ááŒá áºáááºá á¡áááºá áááºááẠ"autoscaling group" á ááá±á¬ááá¬ážáááŸááá±á¬ á¡ááŒá¬ážáááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠDigitalOcean ááá¯á·ááá¯áẠautoscaling group áááŸááá±á¬ á¡ááŒá¬ážáááºáá±á¬ááºááŸá¯áá±ážáá°ááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áẠAPI ááᯠááá¯ááºááá¯ááºááœá²áá¯ááºáááºá IP ááááºá á¬áá»á¬ážááᯠááŸá¬ááœá±áááºáá®ážááẠááá¯á¡ááºáá«áááºá áááºááŒáœáá±á¬á á¬áááºážááá¯ááºáá áºáá¯ááŒá áºááŒá®áž Ansible ááẠáááºážááá¯ááŒááºáááºážááŒá®ážááŒá áºáááºá ááá¯ááá¯áááºááŸá¬ Amazon á¡ááœáẠlaunch_configuration ááŸáááŒá®áž á¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠdynamic inventory ááŸááá«áááºá
source: www.habr.com