Terraformer - เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”

Terraformer - เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”
เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบšเบญเบเบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท CLI เปƒเบซเบกเปˆเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เบฝเบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป€เบเบปเปˆเบฒ.

เบšเบฑเบ™เบซเบฒ

Terraform เป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™เบŠเบธเบกเบŠเบปเบ™ Devops/Cloud/IT เบกเบฒเบ”เบปเบ™เปเบฅเป‰เบง. เบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”. เบกเบตเบ„เบงเบฒเบกเบกเปˆเบงเบ™เบซเบผเบฒเบเปƒเบ™ Terraform เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเป‰เบญเบกเบซเบผเบฒเบ, เบกเบตเบ”เปเบซเบผเบกเปเบฅเบฐ rakes.
เบ”เป‰เบงเบ Terraform เบกเบฑเบ™เบชเบฐเบ”เบงเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบชเบดเปˆเบ‡เปƒเปเปˆเป† เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบฑเบ”เบเบฒเบ™, เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบซเบผเบทเบฅเบถเบšเบžเบงเบเบกเบฑเบ™. เบœเบนเป‰เบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบขเบนเปˆเปƒเบ™เป€เบกเบ„เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เบœเปˆเบฒเบ™ Terraform เบ„เบงเบ™เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”? เบเบฒเบ™เบ‚เบฝเบ™เบ„เบทเบ™ เปเบฅเบฐเบชเป‰เบฒเบ‡เบ„เบฅเบฒเบงเบ—เบฑเบ‡เปเบปเบ”เบ„เบทเบ™เปƒเปเปˆเปเบกเปˆเบ™เบกเบตเบฅเบฒเบ„เบฒเปเบžเบ‡ เปเบฅเบฐ เบšเปเปˆเบ›เบญเบ”เป„เบž.
เบ‚เป‰เบญเบเบžเบปเบšเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบขเบนเปˆ 2 เบงเบฝเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™ Git เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒ terraform, เปเบ•เปˆเบ—เปˆเบฒเบ™เบกเบต 250+ buckets เปเบฅเบฐเบกเบฑเบ™เบกเบตเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™ terraform เบ”เป‰เบงเบเบกเบท.
เบกเบต เบšเบฑเบ™เบซเบฒ เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ 2014 เปƒเบ™ terrafom เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ›เบดเบ”เบฅเบปเบ‡เปƒเบ™เบ›เบต 2016 เบ”เป‰เบงเบเบ„เบงเบฒเบกเบซเบงเบฑเบ‡เบ—เบตเปˆเบˆเบฐเบกเบตเบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเปƒเบ™เบฎเบนเบšเบžเบฝเบ‡เปเบ•เปˆเบˆเบฒเบเบ‚เบงเบฒเป„เบ›เบŠเป‰เบฒเบ

เบ„เปเบฒเป€เบ•เบทเบญเบ™: เบœเบนเป‰เบ‚เบฝเบ™เบšเปเปˆเป„เบ”เป‰เบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เบฅเบฑเบ”เป€เบŠเบเบชเปเบฒเบฅเบฑเบšเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบฅเบฒเบงเปเบฅเบฐเบ‚เบฝเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบฅเบฑเบ”เป€เบŠเบเบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบฅเบฐเบงเบฑเบ‡เบเบฒเบ™เบชเบฐเบเบปเบ”เบ„เบณเบœเบดเบ”.

เบงเบดเบ—เบตเปเบเป‰เป„เบ‚

1. เบกเบตเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปเบฅเบฐเป€เบเบปเปˆเบฒเบชเปเบฒเบฅเบฑเบš AWS terraforming. เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบžเบฐเบเบฒเบเบฒเบกเป€เบญเบปเบฒ 250+ เบ–เบฑเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบœเปˆเบฒเบ™เบกเบฑเบ™, เบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบ—เบธเบเบขเปˆเบฒเบ‡เบšเปเปˆเบ”เบตเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. AWS เป„เบ”เป‰เปเบ™เบฐเบ™เปเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบซเบกเปˆเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เปเบ•เปˆ terraforming เบšเปเปˆเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเบกเบฑเบ™เปเบฅเบฐเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบฑเบ™เป€เบ›เบฑเบ™ ruby. เปเบกเปˆเปเบšเบšเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบ. เบซเบผเบฑเบ‡เบˆเบฒเบ 2 เปƒเบ™เบ•เบญเบ™เปเบฅเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเบปเปˆเบ‡ เบ”เบถเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹ เป€เบžเบทเปˆเบญโ€‹เป€เบžเบตเปˆเบกโ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบฎเบฑเบšโ€‹เบฎเบนเป‰โ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เปเบกเปˆเบ™โ€‹เบšเปเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹.
เบงเบดเบ—เบต terraforming เป€เบฎเบฑเบ”เบงเบฝเบ: เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ AWS SDK เปเบฅเบฐเบชเป‰เบฒเบ‡ tf เปเบฅเบฐ tfstate เบœเปˆเบฒเบ™เปเบกเปˆเปเบšเบš.
เบกเบต 3 เบšเบฑเบ™เบซเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰:
1. เบชเบฐเป€เบซเบกเบตเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบŠเบฑเบเบŠเป‰เบฒเปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡
2. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เป„เบŸเบฅเปŒ tf เบญเบญเบเบกเบฒเปเบ•เบเบซเบฑเบ
3. tfstate เบ–เบทเบเป€เบเบฑเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบˆเบฒเบ tf เปเบฅเบฐเบšเปเปˆเบชเบฐเป€เบซเบกเบต converge
เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ—เบตเปˆ 'เปเบœเบ™เบเบฒเบ™ terraform' เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡

2. `เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ terraform` เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ terraform. เบกเบฑเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เปเบ™เบงโ€‹เปƒเบ”?
เบ—เปˆเบฒเบ™เบ‚เบฝเบ™เป„เบŸเบฅเปŒ TF เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบ—เบตเปˆเบกเบตเบŠเบทเปˆเปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 'เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ terraform' เปเบฅเบฐเบœเปˆเบฒเบ™ ID เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. terraform เบ•เบดเบ”เบ•เปเปˆเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™, เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ tfstate.
เบกเบต 3 เบšเบฑเบ™เบซเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰:
1. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰เบฎเบฑเบšเป„เบŸเบฅเปŒ tfstate, เปเบฅเบฐ tf เปเบกเปˆเบ™เป€เบ›เบปเปˆเบฒ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบซเบผเบทเบ›เปˆเบฝเบ™เบˆเบฒเบ tfstate.
2. เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เปเบฅเบฐเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบฅเบฐเบ‚เป‰เบญเบเบ„เบงเบ™เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบเบฑเบš 250+ เบ„เบธ?
3. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰ ID เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบซเปเปˆเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™.
เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ”เบต

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ‚เบญเบ‡เบ‚เป‰เบญเบ

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™:
1. เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ tf เปเบฅเบฐ tfstate เบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ”เบฒเบงเป‚เบซเบผเบ”เบ—เบธเบ buckets/security group/load balancer and that 'terraform plan' เบเบฑเบšเบ„เบทเบ™เบกเบฒเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.
2. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ 2 GCP + AWS clouds
3. เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบธเบเบ„เบฑเป‰เบ‡เปเบฅเบฐเบšเปเปˆเป€เบชเบเป€เบงเบฅเบฒเปƒเบ™เปเบ•เปˆเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเปเบฒเบฅเบฑเบš 3 เบกเบทเป‰เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ
4. เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ” - เบ—เบธเบเบ„เบปเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบ”เบฝเบงเบเบฑเบ™

เบžเบฒเบชเบฒ Go เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบฎเบฑเบเบกเบฑเบ™, เปเบฅเบฐเบกเบฑเบ™เบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ HCL เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ terraform + เบฅเบฐเบซเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเปƒเบ™ terraform เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”.

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡

เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เปเบฒเบญเบดเบ”
เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ. เบ•เบดเบ”เบ•เปเปˆเบเบฑเบšเบ„เบฅเบฒเบงเบœเปˆเบฒเบ™ SDK เบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ—เบปเปˆเบ‡เบ™เบฒเบชเปเบฒเบฅเบฑเบš terraform. เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเป„เบ”เป‰เป€เบชเบเบŠเบตเบงเบดเบ”เบ—เบฑเบ™เบ—เบตเปƒเบ™เบเบธเปˆเบกเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบกเบฑเบ 1.5 เบกเบทเป‰เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบธเปˆเบกเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž (เปเบฅเบฐเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบ). เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบชเบฒเบกเบฒเบ”เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ / เป€เบžเบตเปˆเบก

เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเบชเบญเบ‡
เบญเบตเบ‡เปƒเบชเปˆเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบ เบ—เบตเปˆเบ™เบตเป‰. เบžเบฝเบ‡เปเบ•เปˆเป€เบญเบปเบฒเปเบฅเบฐเบ›เปˆเบฝเบ™ tfstate เป€เบ›เบฑเบ™ tf. เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เบกเบตโ€‹เปเบฅเบฐโ€‹เบžเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบกโ€‹เปเบกเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹. เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบš tfstate เป€เบ•เบฑเบกเบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ ?? เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡ 'terraform refresh' เบกเบฒเบŠเปˆเบงเบ. terraform เป€เบญเบปเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ tfstate เปเบฅเบฐ, เป‚เบ”เบ ID, เบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบžเบงเบเบกเบฑเบ™เปเบฅเบฐเบ‚เบฝเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญ tfstate. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบชเป‰เบฒเบ‡ tfstate เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบ—เบตเปˆเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบŠเบทเปˆเปเบฅเบฐ IDs, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 'terraform refresh' เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš tfstates เป€เบ•เบฑเบก. เป‚เบซเป‰เบ!
เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบฎเบฑเบ”เบฎเบนเบšเบžเบฒเบšเบฅเบฒเบกเบปเบเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš tfstate เป€เบ›เบฑเบ™ tf. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเบญเปˆเบฒเบ™ tfstate, เบกเบฑเบ™เปเบกเปˆเบ™ JSON, เปเบ•เปˆเบžเบดเป€เบชเบ”.
เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™

 "attributes": {
                            "id": "default/backend-logging-load-deployment",
                            "metadata.#": "1",
                            "metadata.0.annotations.%": "0",
                            "metadata.0.generate_name": "",
                            "metadata.0.generation": "24",
                            "metadata.0.labels.%": "1",
                            "metadata.0.labels.app": "backend-logging",
                            "metadata.0.name": "backend-logging-load-deployment",
                            "metadata.0.namespace": "default",
                            "metadata.0.resource_version": "109317427",
                            "metadata.0.self_link": "/apis/apps/v1/namespaces/default/deployments/backend-logging-load-deployment",
                            "metadata.0.uid": "300ecda1-4138-11e9-9d5d-42010a8400b5",
                            "spec.#": "1",
                            "spec.0.min_ready_seconds": "0",
                            "spec.0.paused": "false",
                            "spec.0.progress_deadline_seconds": "600",
                            "spec.0.replicas": "1",
                            "spec.0.revision_history_limit": "10",
                            "spec.0.selector.#": "1",

เบกเบต:
1. id - string
2. metadata - array เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” 1 เปเบฅเบฐเปƒเบ™เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบ—เบปเปˆเบ‡เบ™เบฒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.
3. spec - hash เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” 1 เปเบฅเบฐเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เบกเบนเบ™เบ„เปˆเบฒเปƒเบ™เบกเบฑเบ™
เปƒเบ™เบชเบฑเป‰เบ™, เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบกเปˆเบงเบ™เบŠเบทเปˆเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เบซเบผเบฒเบเบฅเบฐเบ”เบฑเบš

                   "spec.#": "1",
                            "spec.0.min_ready_seconds": "0",
                            "spec.0.paused": "false",
                            "spec.0.progress_deadline_seconds": "600",
                            "spec.0.replicas": "1",
                            "spec.0.revision_history_limit": "10",
                            "spec.0.selector.#": "1",
                            "spec.0.selector.0.match_expressions.#": "0",
                            "spec.0.selector.0.match_labels.%": "1",
                            "spec.0.selector.0.match_labels.app": "backend-logging-load",
                            "spec.0.strategy.#": "0",
                            "spec.0.template.#": "1",
                            "spec.0.template.0.metadata.#": "1",
                            "spec.0.template.0.metadata.0.annotations.%": "0",
                            "spec.0.template.0.metadata.0.generate_name": "",
                            "spec.0.template.0.metadata.0.generation": "0",
                            "spec.0.template.0.metadata.0.labels.%": "1",
                            "spec.0.template.0.metadata.0.labels.app": "backend-logging-load",
                            "spec.0.template.0.metadata.0.name": "",
                            "spec.0.template.0.metadata.0.namespace": "",
                            "spec.0.template.0.metadata.0.resource_version": "",
                            "spec.0.template.0.metadata.0.self_link": "",
                            "spec.0.template.0.metadata.0.uid": "",
                            "spec.0.template.0.spec.#": "1",
                            "spec.0.template.0.spec.0.active_deadline_seconds": "0",
                            "spec.0.template.0.spec.0.container.#": "1",
                            "spec.0.template.0.spec.0.container.0.args.#": "3",

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ–เป‰เบฒเปƒเบœเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”, เบžเบฝเบ‡เปเบ•เปˆเบ‚เปเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ‚เบฝเบ™ parser เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰ :)
เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ” terraform, เปเบฅเบฐเบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”. เปเบฅเบฐเบ—เบธเบเบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต

เบžเบฐเบเบฒเบเบฒเบกเบชเบฒเบก
เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ terraform เปเบกเปˆเบ™ binary เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš cloud API. เปเบ•เปˆเบฅเบฐเป€เบกเบ„เบกเบตเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐ terraform เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเป‚เบ—เบซเบฒเบžเบงเบเป€เบ‚เบปเบฒเบœเปˆเบฒเบ™เป‚เบ›เป‚เบ•เบ„เบญเบ™ RPC เบ‚เบญเบ‡เบกเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™.
เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ•เบดเบ”เบ•เปเปˆเบเบฑเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ terraform เป‚เบ”เบเบเบปเบ‡เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ— RPC. เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบขเปˆเบฒเบ‡เบชเบงเบเบ‡เบฒเบกเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ terraform เป„เบ›เบซเบฒเบœเบนเป‰เปƒเบซเบกเปˆเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”. เบกเบฑเบ™เบเบฑเบ‡เบ›เบฒเบเบปเบ”เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเบ‚เบปเบ‡เป€เบ‚เบ”เปƒเบ™ tfstate เบ„เบงเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™ tf, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเป„เบ”เป‰เปเบ™เบงเปƒเบ”? เบžเบฝเบ‡เปเบ•เปˆเบ–เบฒเบกเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบญเบทเปˆเบ™ เป† pornography recursive เบ‚เบญเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ„เบปเป‰เบ™เบซเบฒเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบžเบฒเบเปƒเบ™ tfstate เปƒเบ™เบ—เบธเบเบฅเบฐเบ”เบฑเบšเปƒเบ™เบ„เบงเบฒเบกเป€เบฅเบดเบ.

เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบท CLI เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ terraform เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเปƒเบซเบกเปˆเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบเบฒเบ™เป€เบžเบตเปˆเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบฅเบฐเบซเบฑเบ”เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบšเบงเบเบเบฑเบšเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ goodies เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เปเบ™เปˆเบ™เบญเบ™, เบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเบฐเบ—เบดเบšเบฒเบเป„เบ”เป‰เบ—เบฑเบ‡เบซเบกเบปเบ”.
เบ‚เป‰เบญเบเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบชเบฑเบ” Terrafomer.

Finale

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Terrafomer, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡ 500-700 เบžเบฑเบ™เบชเบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” tf + tfstate เบˆเบฒเบเบชเบญเบ‡เป€เบกเบ„. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบญเบปเบฒโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบกเปโ€‹เบฅเบฐโ€‹เบ”เบปเบโ€‹เปเบฅเบฐโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบœเบฑเบ”โ€‹เบเบฑเบšโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบœเปˆเบฒเบ™ terraformโ€‹, เป€เบŠเบฑเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹เป‚เบ„เบ‡โ€‹เบฅเปˆเบฒเบ‡โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เป€เบ›เบฑเบ™โ€‹เปเบ™เบงโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆ magic เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบญเบปเบฒเป€เบกเบ„เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™เบœเปˆเบฒเบ™เบ—เบตเบกเบ‡เบฒเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™ terraform. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ grep / replace / git เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒ combed เบกเบฑเบ™โ€‹เบญเบญเบโ€‹เปเบฅเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบฑเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹, เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹. เบ›เปˆเบญเบเบญเบญเบเบกเบฒเป€เบกเบทเปˆเบญ GitHub เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™เปƒเบ™เบงเบฑเบ™เบžเบฐเบซเบฑเบ” (02.05.19/XNUMX/XNUMX). github.com/GoogleCloudPlatform/terraformer
เป„เบ”เป‰เบฎเบฑเบš 600 เบ”เบฒเบงเปเบฅเป‰เบง, 2 เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš openstack เปเบฅเบฐ kubernetes. เบ„เบณเบ•เบดเบŠเบปเบกเบ—เบตเปˆเบ”เบต. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบ›เบฐเบŠเบฒเบŠเบปเบ™
เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Terraform เปเบฅเบฐเบšเปเปˆเบ‚เบฝเบ™เบ„เบทเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰.
เบ‚เป‰เบญเบเบˆเบฐเบ”เบตเปƒเบˆเบ—เบตเปˆเบˆเบฐเบ”เบถเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เบšเบฑเบ™เบซเบฒ, เบ”เบฒเบง.

Demo
Terraformer - เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™