Remote state — Infrastructure as Code vositasining resource identity va oxirgi ma’lum atributlarini lokal kompyuter o‘rniga umumiy masofaviy backend’da saqlash usuli. U jamoa va CI pipeline’lariga bitta authoritative state’dan foydalanish, locking, versiyalash va markaziy access nazoratini beradi. State konfiguratsiya kodi emas; real resource bilan logical address orasidagi bog‘lanish yozuvidir.
Zarurati
Lokal state faqat bitta operator uchun qulay. Fayl Gitga noto‘g‘ri qo‘shilishi, laptop yo‘qolishi yoki ikki muhandis turli nusxa bilan apply qilishi mumkin. Remote backend barcha run uchun bir manzil beradi va yangilanishni atomic yozishga harakat qiladi.
State yo‘qolsa cloud resurslar yo‘qolmaydi, ammo tool ularning qaysi logical addressga tegishli ekanini bilmaydi. Keyingi apply duplicate yaratishi yoki import talab qilishi mumkin. Shu sabab state kritik operational data hisoblanadi.
Locking
Ikki apply bir vaqtda bir state’ni yangilasa lost update va zid resource amallari yuz beradi. Backend lock olgan run tugamaguncha boshqasini kutadi yoki rad etadi. Plan faqat o‘qisa ham platforma va vositaga qarab lock olishi mumkin.
Process crash qilsa stale lock qoladi. Force-unlock faqat eski run haqiqatan tugaganiga ishonch bo‘lganda bajariladi. Aks holda parallel apply state’ni buzadi. Lock ID va owner auditda saqlanadi.
State mazmuni
| Ma’lumot | Maqsadi |
|---|---|
| Resource ID | Logical va real obyektni bog‘lash |
| Atributlar | Diff va dependency hisoblash |
| Provider metadata | Schema va boshqaruvchi provider |
| Output | Boshqa stack yoki operatorga qiymat |
| Dependency | Amal tartibini tiklash |
Sensitive atribut CLI’da yashirilsa ham state’da plain qiymat sifatida bo‘lishi mumkin. State maxfiy fayl kabi himoyalanadi.
Xavfsizlik
Backend transport va storage encryption’dan foydalanadi. Access identity bo‘yicha minimal: pipeline o‘z workspace state’ini o‘qib-yozadi, boshqa environment state’ini emas. Inson read access ham secret va infratuzilma topologiyasini oshkor qilishi mumkin.
Audit kim qachon state o‘qigan, yozgan yoki version tiklaganini qayd etadi. Public bucket, umumiy administrator key yoki uzoq muddatli CI credential katta xavf. Workload identity va qisqa token afzal.
Versiyalash va recovery
Object versioning noto‘g‘ri state yozuvi yoki o‘chirishdan oldingi nusxani tiklashga yordam beradi. Retention va immutable backup zararli o‘chirishga qarshi qo‘shimcha himoya beradi. Recovery faqat faylni almashtirish emas: real infratuzilma shu vaqtdan beri o‘zgargan bo‘lishi mumkin.
Restore oldidan current state, selected version va real resource inventari solishtiriladi. Eski state’ni ko‘r-ko‘rona qo‘yish keyingi apply’da yangi resource’ni o‘chirish yoki qayta yaratishi mumkin.
State boundary
Barcha tashkilot infratuzilmasini bitta state’da saqlash katta blast radius, uzun plan va keng ruxsat keltiradi. Environment, account, xizmat yoki lifecycle bo‘yicha alohida state ishlatiladi. Juda mayda bo‘linish esa ko‘p cross-state dependency va orchestration muammosini yaratadi.
Bir state’dagi resurslar odatda birga o‘zgaradigan va bir xil ownerga ega bo‘ladi. Database va application lifecycle’i farq qilsa ularni alohida state qilish mumkin. Output orqali zarur qiymatlar aniq contract sifatida uzatiladi.
State sharing
Bir stack boshqa stack outputini remote-state data source orqali o‘qishi mumkin. Bu consumerga ko‘pincha butun state’ni o‘qish huquqini beradi, hatto faqat bitta subnet ID kerak bo‘lsa ham. Sensitive boundary uchun kerakli qiymat service registry, parameter store yoki provider data source orqali e’lon qilinadi.
Output o‘zgarsa consumer planiga ta’sir qiladi. Producer va consumer release tartibi backward-compatible contractga tayanadi.
Drift va refresh
State real-time haqiqat emas, oxirgi ma’lum snapshot. Plan yoki refresh provider API’dan joriy holatni o‘qiydi. Console’da qilingan o‘zgarish state yangilanmaguncha ko‘rinmaydi.
Backend availability bo‘lmasa apply to‘xtaydi; lokal nusxa bilan aylanib o‘tish split ownership yaratishi mumkin. Remote state xizmati uchun availability, backup va disaster recovery infratuzilmaning o‘zi kabi rejalashtiriladi.
Bog‘liq tushunchalar
Infrastructure as Code, State locking, Backend, Encryption at rest, State file, Configuration drift, Output