рдЯреЗрд░рд╛рдлреЙрд░реНрдорд░ - рдХреЛрдб рдЯреВ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░

рдЯреЗрд░рд╛рдлреЙрд░реНрдорд░ - рдХреЛрдб рдЯреВ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░
рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╡реАрди CLI рдЯреВрд▓рдмрджреНрджрд▓ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдЬреЗ рдореА рдЬреБрдиреНрдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓рд┐рд╣рд┐рд▓реЗ рдЖрд╣реЗ.

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

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

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╕рд░реНрд╡ рдХрд╛рд╣реА рдлрдХреНрдд рдЙрдЬрд╡реАрдХрдбреВрди рдбрд╛рд╡реАрдХрдбреЗ рдЪрд┐рддреНрд░рд╛рдд рдЖрд╣реЗ

рдЪреЗрддрд╛рд╡рдгреА: рд▓реЗрдЦрдХ рдЖрдкрд▓реЗ рдЕрд░реНрдзреЗ рдЖрдпреБрд╖реНрдп рд░рд╢рд┐рдпрд╛рдордзреНрдпреЗ рд░рд╛рд╣рдд рдирд╛рд╣реА рдЖрдгрд┐ рд░рд╢рд┐рдпрдирдордзреНрдпреЗ рдереЛрдбреЗ рд▓рд┐рд╣рд┐рддреЛ. рд╢реБрджреНрдзрд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рдЪреБрдХрд╛рдВрдкрд╛рд╕реВрди рд╕рд╛рд╡рдз рд░рд╣рд╛.

рдЙрдкрд╛рдп

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

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

рдорд╛рдЭрд╛ рдирд┐рд░реНрдгрдп

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

рдЧреЛ рд▓рдБрдЧреНрд╡реЗрдЬрдореБрд│реЗ рдорд▓рд╛ рддреА рдЖрд╡рдбрддреЗ, рдЖрдгрд┐ рддреНрдпрд╛рдд рдЯреЗрд░рд╛рдлреЙрд░реНрдордордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдПрдЪрд╕реАрдПрд▓ рдлрд╛рдЗрд▓реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╛рдпрдмреНрд░рд░реА рдЖрд╣реЗ + рдЯреЗрд░рд╛рдлреЙрд░реНрдордордзреНрдпреЗ рдмрд░реЗрдЪ рдХреЛрдб рдЬреЗ рдЙрдкрдпреЛрдЧреА рдЕрд╕реВ рд╢рдХрддрд╛рдд.

рдорд╛рд░реНрдЧ

рдкрд╣рд┐рд▓рд╛ рдкреНрд░рдпрддреНрди
рдореА рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдЖрд╡реГрддреНрддреАрдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдирд╛рд╕рд╛рдареА SDK рджреНрд╡рд╛рд░реЗ рдХреНрд▓рд╛рдЙрдбрд╢реА рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзрдгреЗ рдЖрдгрд┐ рддреЗ рдЯреЗрд░рд╛рдлреЙрд░реНрдорд╕рд╛рдареА рдлреАрд▓реНрдбрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ. рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдЧреНрд░реБрдкрд╡рд░ рд╣рд╛ рдкреНрд░рдпрддреНрди рддрд╛рдмрдбрддреЛрдм рд╕рдВрдкрд▓рд╛ рдХрд╛рд░рдг рдорд▓рд╛ рдлрдХреНрдд рд╕рд┐рдХреНрдпреБрд░рд┐рдЯреА рдЧреНрд░реБрдкрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 1.5 рджрд┐рд╡рд╕ рдЖрд╡рдбрд▓реЗ рдирд╛рд╣реАрдд (рдЖрдгрд┐ рддреЗрдереЗ рдмрд░реАрдЪ рд╕рдВрд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд). рдмрд░рд╛рдЪ рдХрд╛рд│ рдЖрдгрд┐ рдирдВрддрд░ рдлреАрд▓реНрдб рдмрджрд▓рд▓реЗ/рдЬреЛрдбрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд

рджреБрд╕рд░рд╛ рдкреНрд░рдпрддреНрди
рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрд▓реНрдкрдиреЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдпреЗрдереЗ. рдлрдХреНрдд рдШреНрдпрд╛ рдЖрдгрд┐ tfstate tf рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛. рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рддреЗрдереЗ рдЖрд╣реЗ рдЖрдгрд┐ рдлреАрд▓реНрдб рд╕рдорд╛рди рдЖрд╣реЗрдд. рдЕрдиреЗрдХ рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╕рд╛рдареА рдкреВрд░реНрдг рдЯреАрдПрдлрд╕реНрдЯреЗрдЯ рдХрд╕реЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ?? рдЗрдереЗрдЪ `рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд░рд┐рдлреНрд░реЗрд╢` рдХрдорд╛рдВрдб рдмрдЪрд╛рд╡рд╛рд╕рд╛рдареА рдЖрд▓рд╛. рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕рд░реНрд╡ рд╕рдВрд╕рд╛рдзрдиреЗ tfstate рдордзреНрдпреЗ рдШреЗрддреЗ рдЖрдгрд┐, ID рджреНрд╡рд╛рд░реЗ, рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдХрд╛рдврддреЗ рдЖрдгрд┐ tfstate рд╡рд░ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд▓рд┐рд╣рд┐рддреЗ. рдореНрд╣рдгрдЬреЗ, рдлрдХреНрдд рдирд╛рд╡реЗ рдЖрдгрд┐ рдЖрдпрдбреА рдЕрд╕рд▓реЗрд▓реЗ рд░рд┐рдХрд╛рдореЗ tfstate рддрдпрд╛рд░ рдХрд░рд╛, `terraform refresh` рдЪрд╛рд▓рд╡рд╛ рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣рд╛рд▓рд╛ рдкреВрд░реНрдг tfstate рдорд┐рд│реЗрд▓. рд╣реБрд░реНрд░реЗ!
рдЖрддрд╛ 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",

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

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

рд╕рд░рддреЗрд╢реЗрд╡рдЯреА, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдЙрдкрдпреБрдХреНрдд CLI рд╕рд╛рдзрди рдорд┐рд│рд╛рд▓реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕рд░реНрд╡ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдкреНрд░рджрд╛рддреНрдпрд╛рдВрд╕рд╛рдареА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреБрдореНрд╣реА рд╕рд╣рдЬрдкрдгреЗ рдПрдХ рдирд╡реАрди рдЬреЛрдбреВ рд╢рдХрддрд╛. рддрд╕реЗрдЪ, рд╕рдВрд╕рд╛рдзрдиреЗ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдереЛрдбрд╛ рдХреЛрдб рд▓рд╛рдЧрддреЛ. рддрд╕реЗрдЪ рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╡рд╕реНрддреВ рдЬрд╕реЗ рдХреА рд╕рдВрд╕рд╛рдзрдирд╛рдВрдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди. рдЕрд░реНрдерд╛рдд, рдЕрдиреЗрдХ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреНрдпрд╛ рдЬреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рдпреЗрдгрд╛рд░ рдирд╛рд╣реА.
рдореА рдкреНрд░рд╛рдгреНрдпрд╛рдЪреЗ рдирд╛рд╡ рдЯреЗрд░рд╛рдлреЛрдорд░ рдареЗрд╡рд▓реЗ.

рдЕрдВрддрд┐рдо

рдЯреЗрд░рд╛рдлреЛрдорд░ рд╡рд╛рдкрд░реВрди, рдЖрдореНрд╣реА рджреЛрди рдврдЧрд╛рдВрдордзреВрди tf + tfstate рдХреЛрдбрдЪреНрдпрд╛ 500-700 рд╣рдЬрд╛рд░ рдУрд│реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реНрдпрд╛. рдЖрдореНрд╣реА рдкрд░рдВрдкрд░рд╛рдЧрдд рдЧреЛрд╖реНрдЯреА рдШреЗрдК рд╢рдХрд▓реЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдлрдХреНрдд рдЯреЗрд░рд╛рдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рд╕реНрдкрд░реНрд╢ рдХрд░реВ рд╢рдХрд▓реЛ, рдЬрд╕реЗ рдХреА рдХреЛрдб рдХрд▓реНрдкрдирд╛ рдореНрд╣рдгреВрди рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдордзреНрдпреЗ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдПрдХ рдкреНрд░рдЪрдВрдб рдХреНрд▓рд╛рдЙрдб рдШреЗрддрд╛ рдЖрдгрд┐ рддреЗ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╡рд░реНрдХрд░ рдлрд╛рдЗрд▓реНрд╕рдЪреНрдпрд╛ рд░реВрдкрд╛рдд рдЯреАрдорджреНрд╡рд╛рд░реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рд╣реА рдлрдХреНрдд рдЬрд╛рджреВ рдЕрд╕рддреЗ. рдЖрдгрд┐ рдирдВрддрд░ grep/replace/git рд╡рдЧреИрд░реЗ.

рдореА рдХрдВрдШреА рдХреЗрд▓реА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдареЗрд╡рд▓реА, рдкрд░рд╡рд╛рдирдЧреА рдорд┐рд│рд╛рд▓реА. рдЧреБрд░реБрд╡рд╛рд░реА (02.05.19/XNUMX/XNUMX) рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА GitHub рд╡рд░ рд░рд┐рд▓реАрдЭ рдХреЗрд▓реЗ. github.com/GoogleCloudPlatform/terraformer
рдЖрдзреАрдЪ 600 рддрд╛рд░реЗ, рдУрдкрдирд╕реНрдЯреЕрдХ рдЖрдгрд┐ kubernetes рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА 2 рдкреБрд▓ рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдЪрд╛рдВрдЧрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдкреНрд░рдХрд▓реНрдк рд▓реЛрдХрд╛рдВрд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ
рдореА рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рд╕рд▓реНрд▓рд╛ рджреЗрддреЛ рдХреА рдЬреНрдпрд╛рдВрдирд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдорд╕рд╣ рдХрд╛рдо рд╕реБрд░реВ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рдЖрдгрд┐ рдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣реВ рдирдХрд╛.
рдорд▓рд╛ рд╡рд┐рдирдВрддреНрдпрд╛, рд╕рдорд╕реНрдпрд╛, рддрд╛рд░реЗ рдЦреЗрдЪрдгреНрдпрд╛рдд рдЖрдирдВрдж рд╣реЛрдИрд▓.

рдбреЗрдореЛ
рдЯреЗрд░рд╛рдлреЙрд░реНрдорд░ - рдХреЛрдб рдЯреВ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛