Бірлік 3 / 11

Инфрақұрылымды код ретінде басқару: Terraform және IaC көмегімен жасанды интеллект

Табыстар:

  • IaC тұжырымдамасын және Terraform жұмыс циклін (бастау, жоспарлау, қолдану, күй, модуль) түсіну және жасанды интеллект қауіпсіз HCL жобаларын жасау мүмкіндігі
  • Әрбір өзгерісті қолданбас бұрын жоспармен тексеру және күтпеген жою/ауыстыру сызықтарын ұстау мүмкіндігі
  • Құпияларды кодтан тыс сақтау, күйді қауіпсіз сақтау және IAM рұқсаттарын азайту принциптерін қолдану мүмкіндігі

Бұрын серверді орнату бұлттық панель арқылы басу мәселесі болды: виртуалды машина жасау, желіні орнату, қауіпсіздік ережесін қосу. Бұл әдіс баяу, қатеге бейім және қайталанбайтын болды - сол ортаны екінші рет орнату мүмкін емес еді. Бүгінде инфрақұрылым код ретінде басқарылады. IaC (Инфрақұрылым код ретінде) - бұл қолмен емес, мәтіндік файлдардағы серверлер, желілер және дерекқорлар сияқты бұлттық ресурстарды сипаттау тәсілі. These files sit in version control (Git); Кім нені, қашан және нені өзгерткенін көре аласыз; Бір пәрменмен бірдей инфрақұрылымды бірнеше рет дәл осылай орнатуға болады.

Ең көп тараған IaC құралы Terraform болып табылады. Terraform сіз жазатын анықтамаларды HCL (HashiCorp Configuration Language — Terraform конфигурация тілі) деп аталатын оқылатын тілде қабылдайды, оларды бұлттық провайдердің (AWS, Azure, GCP) API интерфейсіне аударады және ресурстарды жасайды. AI HCL-ді жақсы біледі және күрделі блоктарды тез шығарады. Бірақ IaC-де қатенің құны жоғары: бір қате анықтама бүкіл өндірістік дерекқорды жоя алады. Сондықтан Terraform-дағы алтын ереже - әрбір өзгерісті жүзеге асырмас бұрын оны «жоспармен» көру.

Terraform жұмыс уақыты

Terraform үш негізгі пәрменмен жұмыс істейді — мұны білу AI шығысын басқарудың міндетті шарты болып табылады:

  • `terraform init`: жобаны бастайды, қажетті провайдер плагиндерін жүктейді.
  • `terraform plan`: ағымдағы жағдайды қалаған жағдаймен салыстырады және не қосу керектігін, нені өзгерту керектігін, нені жою керектігін көрсетеді. Ештеңені іске асырмайды. Бұл қауіпсіздіктің ең маңызды қадамы.
  • `terraform application`: ресурстарды жасау/өзгерту арқылы жоспарды іс жүзінде қолданады.

Additionally, two concepts are vital. Күй (күй файлы): Бұл Terraform өзі басқаратын ресурстардың ағымдағы күйін сақтайтын файл; Ол әдетте қашықтағы және құлыпталған қоймада сақталады, сондықтан оны екі адам бір уақытта өзгерте немесе жоя алмайды. Module: Reusable configuration package; Мысалы, көптеген жобаларда «желі орнату» модулін пайдалануға болады.

Кеңес: Terraform шығысындағы ең қауіпті белгі жоспар шығысындағы жолдарды жою немесе -/+ (ауыстыру) болып табылады. These mean that the resource will be deleted. Жоспарда күтпеген жойылуды көрсеңіз, ешқашан қолданбаңыз, алдымен оның не үшін пайда болғанын түсініңіз.

Step by step: Writing IaC with AI

  1. Clarify the desired infrastructure. "eu-central-1 жүйесінде бір VPC, екі ішкі желі, бір қауіпсіздік тобы және бір t3.micro EC2" сияқты нақты болыңыз.
  2. Specify provider and version. Қандай бұлт, қай Terraform және провайдер нұсқасы? Нұсқаны көрсетпесеңіз, AI ескірген/үйлесімсіз синтаксисті қайтаруы мүмкін.
  3. Have the HCL draft produced. Also request variables and outputs.
  4. Құпияны шығарыңыз. Құпия сөздер мен кілттер сияқты мәндер кодқа емес, айнымалыға және құпия қоймаға өтуі керек.
  5. 'init' + 'plan' іске қосыңыз. Жоспарды шығару жолын сызық бойынша оқу; Күтпеген жоюларды тексеріңіз.
  6. Кішкентайдан бастаңыз, біртіндеп жүзеге асырыңыз. Алдымен оны оқшауланған сынақ тіркелгісінде/ортасында қолданыңыз.

Қауіпсіздік: IaC-ға тән тәуекелдер

IaC күшті болғанымен қауіпті. Үш маңызды нүкте:

  1. Мемлекеттік ісінде бір құпия бар. Terraform күйі кейде дерекқор құпия сөздері сияқты құпия мәндерді ашық мәтінде сақтайды. Мемлекетті ешқашан жалпыға ортақ қоймаға қоймаңыз; Шифрланған, қолжетімділігі шектеулі қашықтағы серверді пайдаланыңыз.
  2. HCL ішіне құпияларды ендірмеңіз. password="prod123" сияқты жолдар Git тарихында тұрақты түрде жазылады. Оның орнына айнымалы мәнді пайдаланыңыз және мәнді орта айнымалы мәнінен (TF_VAR_...) немесе құпия қоймадан орындаңыз.
  3. Өте кең IAM рұқсаты. AI кейде әрекет сияқты блоктарды шығарады: «*» (бәріне рұқсат ету) «оны жұмыс істеуге мүмкіндік береді». Бұл осалдық; рұқсатты талап етілетін минимумға дейін тарылтыңыз.
Назар аударыңыз: Құпия Git тарихына енгеннен кейін, ол өткенде қалады және файлды жойсаңыз да, бұзылуы мүмкін. Қате жасасаңыз, құпияны дереу жойып, айналдырыңыз; Тек жою жеткіліксіз.

Тәуекелді жоспар белгілері кестесі

Басып шығаруды жоспарлаңыз

Мағынасы

не істеу керек

+жасау

Жаңа ресурс қосылады

Жалпы қауіпсіз, бірақ қарап шығыңыз

~ орнында жаңарту

The source will change on site

Verify impact (will there be an outage?)

-/+ ауыстырыңыз

Will be deleted and recreated

CAUTION: data loss may occur

- жою

Ресурс жойылады

ТОҚТАТУ: күтпесеңіз ешқашан өтініш бермеңіз

үш шағын іс

Case 1 — 2 days' work in 3 hours. Бір команда жаңа сынақ ортасын (VPC, ішкі желілер, RDS дерекқоры, ECS кластері) орнату үшін Terraform жазуды жоспарлады, бірақ олар HCL-ге жаңа ғана көшті. Олар AI архитектурасы мен нұсқаларын сипаттап, модульдік сызбаны жасады. Олар әрбір модульді жоспармен тексеріп, оны 3 сағат ішінде іске қосты; Қолмен сынақ және қателесу үшін оларға екі күн қажет болады.

2-жағдай — жоспар жойылды. Инженер AI жасаған жаңарту кодын қолданбастан жоспарды орындады. Шығару құрамында -/+ өндірістік дерекқор үшін ауыстыру — AI алмастырылмайтын өрісті ауыстыруға әрекеттенді, бұл дерекқорды жоюды және қайта құруды білдіреді. Инженер қолдануды тоқтатып, өзгертуді қауіпсіз әдіске ауыстырды. Жоспарлау әдеті апаттың алдын алды.

3-жағдай – жасырын ағып кету. Юниор, YZ db_password = "S3cret!" Ол сызықты сол күйінде жасап, оны итеріп жіберді. Кодты қарау кезінде ұсталды; Құпия сөз дереу жойылды және өзгертілді, мән айнымалыға ауыстырылды және құпия қоймадан жіберілді. Сабақ: HCL-де ешқашан ашық мәтіндік құпиялар болмайды.

Көшірілетін төрт үлгі

1) Инфрақұрылымдық жобаны қалыптастыру:

Terraform (~> 1.7 нұсқасы) бар [CLOUD: AWS] жүйесінде келесі инфрақұрылымды жазыңыз: [SOURCE LIST]. [X] аймағы. Ережелер:- Барлық сезімтал мәндерді айнымалы етіп жасаңыз, оларды HCL ішіне ендірмеңіз.- Провайдер нұсқасын түзетіңіз (қажетті_провайдерлер).- IAM рұқсаттарын азайтыңыз, "*" қолданбаңыз.- [X, Y] мәнін шығыс ретінде қайтарыңыз. Кодты модульдік және түсініктемелермен беріңіз.

2) Жоспардың нәтижесін түсіндіру:

Төмендегі «терраформалық жоспар» нәтижесін талдаңыз. Мені тізімдеңіз:(1) қандай ресурстар қосылған/өзгертілген/ЖОЮЛҒАН,(2) деректердің жоғалу немесе үзілу қаупі бар жолдар,(3) өтініш берер алдында қоятын 3 сұрақ.Жоспар: [OUTPUT]

3) Қауіпсіздік үшін бар HCL тексеру:

Қауіпсіздік үшін келесі Terraform кодын тексеріңіз: ендірілген құпия, тым кең IAM рұқсаты, ашық желі ережесі (0.0.0.0/0), шифрланбаған жад? Әрбір қорытындыны маңыздылығы мен түзету ретімен жазыңыз. Код: [HCL]

4) Қайталанатын кодты модульге түрлендіру:

Келесі қайталанатын Terraform кодын қайта пайдалануға болатын модульге түрлендіру: айнымалы мәндер қандай болуы керек, модуль интерфейсі қандай болуы керек? Сондай-ақ пайдалану үлгісін көрсетіңіз. Код: [HCL]

Әлсіз шақыру / Күшті шақыру

Әлсіз: «Terraform көмегімен дерекқорды жасаңыз».

Нәтиже: қандай бұлт, қандай қозғалтқыш, қай нұсқа, шифрланған немесе шифрланған немесе жоқ түсініксіз; Бұрынғы синтаксиспен AI кодқа құпия сөзді енгізетін жалпыға қолжетімді мысалды ұсына алады.

Күшті: "Terraform ~> 1.7 көмегімен AWS жүйесінде RDS PostgreSQL 15 данасын жасаңыз. Құпия сөзді айнымалы етіп жасаңыз, оны кодқа ендірмеңіз. Жад шифрланған, тек жеке ішкі желіден қол жетімді, жалпыға қолжетімді емес. Провайдер нұсқасын түзетіңіз. Соңғы нүктені шығыс ретінде қайтарыңыз."

Айырмашылық: екінші шақыру қозғалтқышты, нұсқаны, шифрлауды, желі шектеуін және құпия ережені береді — шығыс қауіпсіз және өнімге жақын.

Жалпы қателер

  • «Жоспар» жасамай «өтініш беру». IaC-тағы ең қымбат қателік; әрқашан бірінші жоспарлаңыз.
  • HCL ішіне құпияны енгізу. Git тарихына тұрақты ағып кетуді жасайды.
  • Мемлекет қауіпсіз емес сақтау. Шифрланбаған, құлпы ашылған, қоғамдық мемлекет – апат.
  • Нұсқаны түзетпейді. Нұсқаны көрсетпестен провайдерді пайдалану болашақта кенеттен сәтсіздікке әкеледі.
  • *`Әрекет: ""` сияқты кең рұқсат.** Ең аз артықшылық принципін бұзады.
  • Күтпеген «жоюды» елемеу. Жоспардағы жою жолдарын сұрақсыз қолдану.

Қысқаша айтқанда

IaC инфрақұрылымды қайталанатын, нұсқалық және тексерілетін кодқа айналдырады; Ең көп таралған құрал - Terraform. AI жылдам HCL түтіктерін шығарады, бірақ сіз нұсқаны, бұлтқа тән мәліметтерді және қауіпсіздік ережелерін қамтамасыз етуіңіз керек. Терраформдағы қателеспес ереже: әрбір өзгерісті жоспармен көру, күтпеген жоюларды сұрау, құпияларды кодтан алшақ ұстау және күйді қауіпсіз сақтау. Жоспар шығысындағы жою және ауыстыру жолдары ең мұқият оқылуы керек орындар болып табылады.

Қолданбалы тапсырма

Жоғарыдағы "Инфрақұрылым эскизін жасау" үлгісін пайдаланып, AI шағын инфрақұрылымды (мысалы, сақтау шелегі және кіру саясаты) жасауын сұраңыз. Содан кейін: (1) "тексеру" үлгісін кодқа енгізілген құпияны немесе * рұқсаттарды тексеріңіз; (2) мүмкін болса, сынақ тіркелгісінде init + жоспарын іске қосыңыз және "жоспарды түсіндіру" үлгісімен жоспар нәтижесін оқыңыз; (3) кез келген күтпеген жоюларды/өзгерістерді ескеріңіз.

бақылау парағы

  • [ ] Сұрауыма бұлтты, Terraform/провайдер нұсқасын және шифрлау/желі шектеулерін қостым.
  • [ ] Кодта ашық мәтін құпиясы жоқ; дәлдік мәндерінің айнымалысы.
  • [ ] Мен IAM/рұқсаттарды ең аз рұқсаттарға дейін тарылттым, * Мен оны пайдаланбадым.
  • [ ] Мен қолданбас бұрын жоспарды орындадым және шығыс жолды жол бойынша оқыдым.
  • [ ] Жоспарда күтпеген жою/ауыстыру жоқ екенін растадым.
  • [ ] Күй шифрланған, құлыпталған және шектелген серверде сақталғанына сенімдімін.