ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenTofu 1.7, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π°ΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Terraform. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° OpenTofu ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°ΡΠ° Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Linux Foundation Ρ ΠΎΡΠΊΡΠΈΡ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°, ΡΡΡΡΠ°Π²Π΅Π½Π° ΠΎΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ Π΅Π½ΡΡΡΠΈΠ°ΡΡΠΈ (161 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ 792 ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΎΠ±ΡΠ²ΠΈΡ Π° ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°). ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Go ΠΈ Π΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· MPL 2.0.
Π€ΠΎΡΠΊΡΡ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π² ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ HashiCorp Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΊΡΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π»ΠΈΡΠ΅Π½Π· BSL 1.1, ΠΊΠΎΠΉΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠ°ΡΠΈ ΡΠ΅ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ ΠΈ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π° HashiCorp. ΠΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π»ΠΈΡΠ΅Π½Π·Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ²Π° Ρ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·ΠΈ ΡΠΈΠ½Π°Π½ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° Π½Π΅ΡΡΠΏΠ΅Ρ Π½Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ°Π½Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΡΡΠ°Π²ΡΡ Π½Π° ΠΏΠ°ΡΠ°Π·ΠΈΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ΅ Π½Π° HashiCorp Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΡΠ²ΠΌΠ΅ΡΡΠ½Π°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠΎ ΠΊΠΎΠ΄, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Ρ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ Π΅Π·ΠΈΠΊ ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π° ΠΊΠΎΠ΄Π°. OpenTofu ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ°Ρ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅, ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΠΈΡΠΊΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π°Π΄ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅.
OpenTofu ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΏΠ»Π°Π½ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (Execution Plan), ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ΅Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅. Π‘Π»ΠΎΠΆΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ, Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΡΡΠ°ΡΡΠΈΠ΅ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΡΠΎΠ²Π΅ΡΠΊΠΈΡ ΡΠ°ΠΊΡΠΎΡ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΡΠ² ΡΠ΅Π΄, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΠ»Π°Π½ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π³ΡΠ°Ρ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Π²Π΅ΡΡΠΈΡ OpenTofu 1.7:
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Π²Π°ΠΆΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½Π΅. Π¨ΠΈΡΡΠ°Π½Π΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΡΡ Π½Π° Π½Π΅ΡΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠ΅Π½ΠΈ Π»ΠΈΡΠ° Π΄ΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ°ΡΠΎΠ»Π°ΡΠ° Π·Π° ΡΠΈΡΡΠΎΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ AWS KMS, GCP KMS ΠΈ OpenBao.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΈ ΠΎΡ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°. Π£ΠΊΠ°Π·Π°Π½Π°ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ΅ΡΡΡΡΠΈ, Π½ΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΊΠΎΠ΄Π° OpenTofu. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΎΡ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°ΡΠ° Π·Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π² Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Lua ΠΈ Go.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠ° Π·Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ ΠΎΡ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ, Π½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² ΡΡΠ·Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΊΠ»ΠΈ "for_each" Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΠΈΠΌΠΏΠΎΡΡ, Ρ ΡΠ΅Π» ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ΅ΡΡΡΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
