рдЯреЗрд░рд╛рдлрд╛рд░реНрдорд░ - рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рд╛рдзрд╛рд░

рдЯреЗрд░рд╛рдлрд╛рд░реНрдорд░ - рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рд╛рдзрд╛рд░
рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирдпрд╛рдБ CLI рдЙрдкрдХрд░рдгрдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрддрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдЬреБрди рдореИрд▓реЗ рдкреБрд░рд╛рдиреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд▓реЗрдЦреЗрдХреЛ рдЫреБред

рд╕рдорд╕реНрдпрд╛

Terraform рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ Devops/Cloud/IT рд╕рдореБрджрд╛рдпрдорд╛ рдорд╛рдирдХ рднрдПрдХреЛ рдЫред рдХреБрд░рд╛ рдХреЛрдбрдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░ рдЙрдкрдпреЛрдЧреА рдЫред рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рдзреЗрд░реИ рд░рдорд╛рдИрд▓реЛрд╣рд░реВ рд╕рд╛рдереИ рдзреЗрд░реИ рдХрд╛рдБрдЯрд╛рд╣рд░реВ, рдзрд╛рд░рд┐рд▓реЛ рдЪрдХреНрдХреБрд╣рд░реВ рд░ рд░реЗрдХрд╣рд░реВ рдЫрдиреНред
Terraform рдХреЛ рд╕рд╛рде рдирдпрд╛рдБ рдЪреАрдЬрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди, рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╡рд╛ рдореЗрдЯрд╛рдЙрди рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред рдХреНрд▓рд╛рдЙрдбрдорд╛ рдареВрд▓реЛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рднрдПрдХрд╛ рд░ рдЯреЗрд░рд╛рдлрд░реНрдо рдорд╛рд░реНрдлрдд рд╕рд┐рд░реНрдЬрдирд╛ рдирдЧрд░реНрдиреЗрд╣рд░реВрд▓реЗ рдХреЗ рдЧрд░реНрдиреБрдкрд░реНрдЫ? рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╛рдЙрдбрд▓рд╛рдИ рдкреБрди: рд▓реЗрдЦреНрдиреЗ рд░ рдкреБрди: рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рдорд╣рдБрдЧреЛ рд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЫред
рдореИрд▓реЗ реи рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдпреЛ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реЗрдВ, рд╕рдмреИрднрдиреНрджрд╛ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рдЬрдм рддрдкрд╛рдИрдВ рдЯреЗрд░рд╛рдлрд░реНрдо рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ Git рдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рд╣реБрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ, рддрд░ рддрдкрд╛рдИрдВрд╕рдБрдЧ 2+ рдмрд╛рд▓реНрдЯреАрд╣рд░реВ рдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╣рд╛рддрд▓реЗ рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рд▓реЗрдЦреНрди рдзреЗрд░реИ рдЫред
рдЫрдиреН рдореБрджреНрджрд╛ рдЯреЗрд░рд╛рдлрдордорд╛ рд╕рдиреН реирежрезрек рджреЗрдЦрд┐ рдЖрдпрд╛рдд рд╣реБрдиреЗ рдЖрд╢рд╛рдорд╛ реирежрезрем рдорд╛ рдмрдиреНрдж рднрдПрдХреЛ рдерд┐рдпреЛред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╕рдмреИ рдХреБрд░рд╛ рддрд╕реНрд╡рд┐рд░рдорд╛ рдорд╛рддреНрд░ рджрд╛рдпрд╛рдБ рджреЗрдЦрд┐ рдмрд╛рдпрд╛рдБ рджреЗрдЦрд┐ рдЫ

рдЪреЗрддрд╛рд╡рдиреА: рд▓реЗрдЦрдХ рдЖрдлреНрдиреЛ рдЖрдзрд╛ рдЬреАрд╡рди рд░реВрд╕рдорд╛ рдмрд╕реНрджреИрдирдиреН рд░ рд░реВрд╕реАрдорд╛ рдереЛрд░реИ рд▓реЗрдЦреНрдЫрдиреНред рд╣рд┐рдЬреНрдЬреЗ рддреНрд░реБрдЯрд┐рд╣рд░реВрдмрд╛рдЯ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреБрд╣реЛрд╕реНред

рд╕рдорд╛рдзрд╛рдирд╣рд░реВ

1. AWS рдХрд╛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рд░ рдкреБрд░рд╛рдирд╛ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЫрдиреН рдЯреЗрд░рд╛рдлреЙрд░реНрдорд┐рдЩред рдЬрдм рдореИрд▓реЗ рдореЗрд░реЛ 250+ рдмрд╛рд▓реНрдЯреАрд╣рд░реВ рдорд╛рд░реНрдлрдд рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдВ, рдореИрд▓реЗ рдмреБрдЭреЗрдВ рдХрд┐ рддреНрдпрд╣рд╛рдБ рд╕рдмреИ рдЦрд░рд╛рдм рдерд┐рдпреЛред AWS рд▓реЗ рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рдзреЗрд░реИ рдирдпрд╛рдБ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджреИ рдЖрдПрдХреЛ рдЫ, рддрд░ рдЯреЗрд░рд╛рдлрд░реНрдорд┐рдЩрд▓рд╛рдИ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдерд╛рд╣рд╛ рдЫреИрди рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдпреЛ рд░реВрдмреА рд╣реЛред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡рд┐рд░рд▓ рджреЗрдЦрд┐рдиреНрдЫред рд╕рд╛рдБрдЭ реи рдмрдЬреЗрдкрдЫрд┐ рдкрдард╛рдПрдБ рддрд╛рдиреНрдиреЗ рдЕрдиреБрд░реЛрдз рддреНрдпрд╣рд╛рдБ рдердк рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдердкреНрди рд░ рдпрд╕реНрддреЛ рд╕рдорд╛рдзрд╛рди рд╕рдмреИ рдЙрдкрдпреБрдХреНрдд рдЫреИрди рднрдиреЗрд░ рдорд╣рд╕реБрд╕ред
рдЯреЗрд░рд╛рдлрд╛рд░реНрдорд┐рдЩрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ: рдпрд╕рд▓реЗ AWS SDK рдмрд╛рдЯ рдбрд╛рдЯрд╛ рд▓рд┐рдиреНрдЫ рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдорд╛рд░реНрдлрдд tf рд░ tfstate рдЙрддреНрдкрдиреНрди рдЧрд░реНрдЫред
рдпрд╣рд╛рдБ 3 рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН:
1. рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВрдорд╛ рд╕рдзреИрдВ рдврд┐рд▓рд╛рдЗ рд╣реБрдиреЗрдЫ
2. tf рдлрд╛рдЗрд▓рд╣рд░реВ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдЯреБрдХреНрд░рд┐рдПрдХреЛ рдмрд╛рд╣рд┐рд░ рдЖрдЙрдБрдЫрдиреН
3. tfstate tf рдмрд╛рдЯ рдЕрд▓рдЧ рд░реВрдкрдорд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдиреНрдЫ рд░ рд╕рдзреИрдВ рдЕрднрд┐рд╕рд░рдг рд╣реБрдБрджреИрди
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдХреБрдиреИ рдирддрд┐рдЬрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫ рдЬрд╕рдорд╛ 'рдЯреЗрд░рд╛рдлрд╛рд░реНрдо рдкреНрд▓рд╛рди' рднрдиреНрдЫ рдХрд┐ рдХреБрдиреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЫреИрдирдиреН

2. рдЯреЗрд░рд╛рдлрд░реНрдо рдЗрдореНрдкреЛрд░реНрдЯ' рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рдирд┐рд░реНрдорд┐рдд рдХрдорд╛рдгреНрдб рд╣реЛред рдпрд╕реНрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ?
рддрдкрд╛рдИрдВрд▓реЗ рдирд╛рдо рд░ рд╕реНрд░реЛрддрдХреЛ рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдЦрд╛рд▓реА TF рдлрд╛рдЗрд▓ рд▓реЗрдЦреНрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ `terraform import` рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рд╕реНрд░реЛрдд ID рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЯреЗрд░рд╛рдлрд░реНрдорд▓реЗ рдкреНрд░рджрд╛рдпрдХрд▓рд╛рдИ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдЫ, рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫ рд░ tfstate рдлрд╛рдЗрд▓ рдмрдирд╛рдЙрдБрдЫред
рдпрд╣рд╛рдБ 3 рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН:
1. рд╣рд╛рдореАрд▓реЗ tfstate рдлрд╛рдЗрд▓ рдорд╛рддреНрд░ рдкрд╛рдЙрдБрдЫреМрдВ, рд░ tf рдЦрд╛рд▓реА рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рд▓реЗрдЦреНрдиреБрдкрд░реНрдЫ рд╡рд╛ tfstate рдмрд╛рдЯ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрдкрд░реНрдЫред
2. рдПрдХ рдкрдЯрдХрдорд╛ рдПрдЙрдЯрд╛ рд╕реНрд░реЛрддрд╕рдБрдЧ рдорд╛рддреНрд░ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рд░ рдореИрд▓реЗ 250+ рдмрд╛рд▓реНрдЯрд┐рдирд╣рд░реВрд╕рдБрдЧ рдлреЗрд░рд┐ рдХреЗ рдЧрд░реНрдиреБрдкрд░реНрдЫ?
3. рддрдкрд╛рдИрдВрд▓реЗ рд╕рдВрд╕рд╛рдзрдирд╣рд░реВрдХреЛ ID рдерд╛рд╣рд╛ рдкрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ - рдЕрд░реНрдерд╛рддреН, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХреЛрдбрдорд╛ рдмреЗрд░реНрдиреБ рдкрд░реНрдЫ рдЬрд╕рд▓реЗ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкрд░рд┐рдгрд╛рдо рдЖрдВрд╢рд┐рдХ рдЫ рд░ рд░рд╛рдореНрд░реЛ рдорд╛рдкрди рдЧрд░реНрджреИрди

рдореЗрд░реЛ рдирд┐рд░реНрдгрдп

рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ:
1. рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ tf рд░ tfstate рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдмреИ рдмрд╛рд▓реНрдЯреА/рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣/рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддреНрдпреЛ `рдЯреЗрд░рд╛рдлрд░реНрдо рдкреНрд▓рд╛рди` рдлрд░реНрдХрд┐рдпреЛ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЫреИрдирдиреНред
реи. рддрдкрд╛рдИрдВрд▓рд╛рдИ реи GCP + AWS рдХреНрд▓рд╛рдЙрдбрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ
3. рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд╕рдорд╛рдзрд╛рди рдЬреБрди рд╣рд░реЗрдХ рдкрдЯрдХ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ рд░ 3 рджрд┐рдирдХреЛ рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрддрдорд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдЧрд░реНрджреИрдиред
4. рдпрд╕рд▓рд╛рдИ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН - рд╕рдмреИрд▓рд╛рдИ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдЫ

рдЧреЛ рднрд╛рд╖рд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдорд▓рд╛рдИ рдпреЛ рдордирдкрд░реНрдЫ, рд░ рдпрд╕рдорд╛ рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ HCL рдлрд╛рдЗрд▓рд╣рд░реВ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЫ + рдЯреЗрд░рд╛рдлрд░реНрдордорд╛ рдзреЗрд░реИ рдХреЛрдб рдЬреБрди рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫред

рдмрд╛рдЯреЛ

рдкрд╣рд┐рд▓реЛ рдкреНрд░рдпрд╛рд╕
рдореИрд▓реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реЗрдВред рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддрдХреЛ рд▓рд╛рдЧрд┐ SDK рдорд╛рд░реНрдлрдд рдХреНрд▓рд╛рдЙрдбрд▓рд╛рдИ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрджреИ рд░ рдпрд╕рд▓рд╛рдИ рдЯреЗрд░рд╛рдлрд░реНрдордХреЛ рд▓рд╛рдЧрд┐ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрджреИред рдкреНрд░рдпрд╛рд╕ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣рдорд╛ рддреБрд░реБрдиреНрддреИ рдорд░реЗ рдХрд┐рдирднрдиреЗ рдорд▓рд╛рдИ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣рд▓рд╛рдИ рдорд╛рддреНрд░ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди 1.5 рджрд┐рди рдорди рдкрд░реЗрди (рд░ рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рд╕реНрд░реЛрддрд╣рд░реВ рдЫрдиреН)ред рдпрд╕рд▓реЗ рд▓рд╛рдореЛ рд╕рдордп рд▓рд┐рдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди/рдердкреНрди рд╕рдХрд┐рдиреНрдЫ

рджреЛрд╕реНрд░реЛ рдкреНрд░рдпрд╛рд╕
рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╡рд┐рдЪрд╛рд░рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдпрд╣рд╛рдБред рдХреЗрд╡рд▓ рд▓рд┐рдиреБрд╣реЛрд╕реН рд░ tfstate рд▓рд╛рдИ tf рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕рдмреИ рдбрд╛рдЯрд╛ рддреНрдпрд╣рд╛рдБ рдЫ рд░ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рд╕рдорд╛рди рдЫрдиреНред рдзреЗрд░реИ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг tfstate рдХрд╕рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ ?? рдпрд╣реАрдВрдмрд╛рдЯ 'terraform refresh' рдЖрджреЗрд╢ рдЙрджреНрдзрд╛рд░рдорд╛ рдЖрдпреЛред terraform рд▓реЗ tfstate рдорд╛ рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВ рд▓рд┐рдиреНрдЫ рд░, ID рджреНрд╡рд╛рд░рд╛, рддрд┐рдиреАрд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдирд┐рдХрд╛рд▓реНрдЫ рд░ tfstate рдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рд▓реЗрдЦреНрдЫред рддреНрдпреЛ рд╣реЛ, рдХреЗрд╡рд▓ рдирд╛рдо рд░ рдЖрдИрдбреАрд╣рд░реВ рд╕рд╣рд┐рдд рдПрдЙрдЯрд╛ рдЦрд╛рд▓реА tfstate рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, `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. рдЖрдИрдбреА - рд╕реНрдЯреНрд░рд┐рдЩ
2. рдореЗрдЯрд╛рдбреЗрдЯрд╛ - рдЖрдХрд╛рд░ 1 рдХреЛ рдПрд░реЗ рд░ рдпрд╕рдорд╛ рдлрд┐рд▓реНрдбрд╣рд░реВ рднрдПрдХреЛ рд╡рд╕реНрддреБ рдЬреБрди рддрд▓ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ
3. spec - рдЖрдХрд╛рд░ 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",

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрджрд┐ рдХрд╕реИрд▓реЗ рдЕрдиреНрддрд░реНрд╡рд╛рд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рд╕рдорд╕реНрдпрд╛ рдЪрд╛рд╣рдиреНрдЫ рднрдиреЗ, рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдпреЛ рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рд░реНрд╕рд░ рд▓реЗрдЦреНрди рд╕реЛрдзреНрдиреБрд╣реЛрд╕реН :)
рдмрдЧ рдмрд┐рдирд╛ рдкрд╛рд░реНрд╕рд░ рд▓реЗрдЦреНрдиреЗ рдзреЗрд░реИ рдкреНрд░рдпрд╛рд╕ рдкрдЫрд┐, рдореИрд▓реЗ рдЯреЗрд░рд╛рдлрд░реНрдо рдХреЛрдбрдорд╛ рдпрд╕рдХреЛ рдЕрдВрд╢ рдлреЗрд▓рд╛ рдкрд╛рд░реЗ, рд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧред рд░ рд╕рдмреИ рдХреБрд░рд╛ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реЗрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ

рдкреНрд░рдпрд╛рд╕ рддреАрди
рдЯреЗрд░рд╛рдлрд░реНрдо рдкреНрд░рджрд╛рдпрдХрд╣рд░реВ рдмрд╛рдЗрдирд░реАрд╣рд░реВ рд╣реБрдиреН рдЬрд╕рдорд╛ рдХреНрд▓рд╛рдЙрдб рдПрдкреАрдЖрдИрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВ рд░ рддрд░реНрдХрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫрдиреНред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЙрдбрдХреЛ рдЖрдлреНрдиреИ рдкреНрд░рджрд╛рдпрдХ рд╣реБрдиреНрдЫ рд░ рдЯреЗрд░рд╛рдлрд░реНрдорд▓реЗ рдорд╛рддреНрд░ рджреБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдмреАрдЪрдХреЛ RPC рдкреНрд░реЛрдЯреЛрдХрд▓ рдорд╛рд░реНрдлрдд рдХрд▓ рдЧрд░реНрдЫред
рдЕрдм рдореИрд▓реЗ RPC рдХрд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЯреЗрд░рд╛рдлрд╛рд░реНрдо рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрд▓рд╛рдИ рд╕рд┐рдзреИ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рдпреЛ рд╕реБрдиреНрджрд░ рдврдВрдЧрд▓реЗ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрд┐рдпреЛ рд░ рдпрд╕рд▓реЗ рдЯреЗрд░рд╛рдлрд╛рд░реНрдо рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрд▓рд╛рдИ рдирдпрд╛рдБрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд░ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдпреЛред рдпреЛ рдкрдирд┐ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ tfstate рдорд╛ рд╕рдмреИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ tf рдорд╛ рд╣реБрдиреБ рд╣реБрдБрджреИрди, рддрд░ рддрдкрд╛рдЗрдБ рдХрд╕рд░реА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЖрдлреНрдиреЛ рдкреНрд░рджрд╛рдпрдХрд▓рд╛рдИ рд╕реЛрдзреНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╕рдкрдЫрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рдЬрдореНрдорд╛ рдЧрд░реНрдиреЗ рдЕрд░реНрдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреЛрд░реНрдиреЛрдЧреНрд░рд╛рдлреА рд╕реБрд░реБ рднрдпреЛ, tfstate рднрд┐рддреНрд░рдХрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдЧрд╣рд┐рд░рд╛рдЗрдорд╛ рд╕рдмреИ рд╕реНрддрд░рд╣рд░реВрдорд╛ рдЦреЛрдЬреНрджреИред

рдЕрдиреНрддрдорд╛, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдЙрдкрдпреЛрдЧреА CLI рдЙрдкрдХрд░рдг рдкрд╛рдпреМрдВ рдЬрд╕рдорд╛ рд╕рдмреИ рдЯреЗрд░рд╛рдлрд░реНрдо рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЭрд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рдердкреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рд╛рдереИ, рд╕реНрд░реЛрддрд╣рд░реВ рдердкреНрджрд╛ рдереЛрд░реИ рдХреЛрдб рд▓рд╛рдЧреНрдЫред рд╕рд╛рдереИ рд╕рдмреИ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рд╛рдорд╛рдирд╣рд░реВ рдЬрд╕реНрддреИ рд╕реНрд░реЛрддрд╣рд░реВ рдмреАрдЪрдХреЛ рдЬрдбрд╛рдирд╣рд░реВред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдлрд░рдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдерд┐рдП рдЬреБрди рд╕рдмреИ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред
рдореИрд▓реЗ рдЬрдирд╛рд╡рд░рдХреЛ рдирд╛рдо рдЯреЗрд░рд╛рдлреЛрдорд░ рд░рд╛рдЦреЗрдВред

рд╕рдорд╛рдкреНрдд

Terrafomer рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореАрд▓реЗ рджреБрдИ рдХреНрд▓рд╛рдЙрдбрд╣рд░реВрдмрд╛рдЯ tf + tfstate рдХреЛрдбрдХреЛ 500-700 рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдирд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдпреМрдВред рд╣рд╛рдореАрд▓реЗ рд▓рд┐рдЧреЗрд╕реА рдЪреАрдЬрд╣рд░реВ рд▓рд┐рди рд░ рдЯреЗрд░рд╛рдлрд░реНрдо рдорд╛рд░реНрдлрдд рдорд╛рддреНрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЫреБрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрд╖рдо рднрдпреМрдВ, рдХреЛрдб рд╡рд┐рдЪрд╛рд░рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдЙрддреНрдХреГрд╖реНрдЯ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ред рдпреЛ рдХреЗрд╡рд▓ рдЬрд╛рджреВ рд╣реЛ рдЬрдм рддрдкрд╛рдЗрдБ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХреНрд▓рд╛рдЙрдб рд▓рд┐рдиреБрд╣реБрдиреНрдЫ рд░ рдЯреЗрд░рд╛рдлрд░реНрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдЯреЛрд▓реА рдорд╛рд░реНрдлрдд рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред рд░ рддреНрдпрд╕рдкрдЫрд┐ grep/replace/git рд░ рдпрд╕реНрддреИред

рдореИрд▓реЗ рддреНрдпрд╕рд▓рд╛рдИ рдмрд╛рд╣рд┐рд░ рдирд┐рдХрд╛рд▓реЗрд░ рдорд┐рд▓рд╛рдПрд░ рд░рд╛рдЦреЗрдВ, рдЕрдиреБрдорддрд┐ рдкрд╛рдПрдБред рдмрд┐рд╣реАрдмрд╛рд░ (режрел/режреи/резреп) рдорд╛ рд╕рдмреИрдХрд╛ рд▓рд╛рдЧрд┐ GitHub рдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдпреЛред github.com/GoogleCloudPlatform/terraformer
рдУрдкрдирд╕реНрдЯреНрдпрд╛рдХ рд░ kubernetes рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЗ рдиреИ 600 рддрд╛рд░рд╛рд╣рд░реВ, 2 рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫрдиреНред рд░рд╛рдореНрд░реЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд╛рдирд┐рд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рдЫ
рдо рд╕рдмреИрд▓рд╛рдИ рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдиреНрдЫреБ рдЬреЛ Terraform рд╕рдБрдЧ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫрдиреН рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдХреБрд░рд╛ рдкреБрди: рд▓реЗрдЦреНрди рдЪрд╛рд╣рдБрджреИрдирдиреНред
рдо рдЕрдиреБрд░реЛрдзрд╣рд░реВ, рдореБрджреНрджрд╛рд╣рд░реВ, рддрд╛рд░рд╛рд╣рд░реВ рддрд╛рдиреНрди рдЦреБрд╕реА рд╣реБрдиреЗрдЫреБред

рдбреЗрдореЛ
рдЯреЗрд░рд╛рдлрд╛рд░реНрдорд░ - рдХреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рд╛рдзрд╛рд░

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди