Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

എന്റെ ടെറാഫോർം എഴുതാൻ ഞാൻ AI- നെ ആവശ്യപ്പെട്ടു. യാഥാര് ത്ഥ്യ പരിശോധന

ശരിയായി കാണപ്പെടുന്നു, നന്നായി പ്രവർത്തിക്കുന്നു, നിങ്ങളുടെ ഡാറ്റാബേസ് ലോകത്തിനു തുറക്കുന്നു. ആ ഐ. ഐ. ക്ക് കിട്ടാത്ത എന്തെല്ലാം വിരലുകൾ.

I asked AI to write my Terraform. A reality check
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

അകത്ത് AI എന്റെ DevOps ജോലി എടുക്കുമോ? ഞാൻ മുന്നറിയിപ്പ് നല് കി, ഐ. ഐ. തികഞ്ഞ രൂപം കാണിക്കുന്നതും, പക്ഷേ, വളരെ സൂക്ഷ്മമായി തകർന്നതുമായ ക്രമീകരണങ്ങൾ എഴുതുന്നു. വളരെ തുറന്ന ഒരു അനുമതി. ടെസ്റ്റില് പ്രവർത്തിക്കുന്ന ഒരു ക്രമീകരണം, യഥാർത്ഥ ട്രാഫിക്കില് വീഴും.

അത് പറയാൻ എളുപ്പമാണ്. ഈ പോസ്റ്റ് യഥാർത്ഥത്തിൽ എങ്ങനെയാണെന്ന് കാണിക്കുന്നു, അത് ഉല്പാദനത്തിലേക്ക് പ്രവേശിക്കുന്നത് തടയാൻ ഞാൻ ഉപയോഗിക്കുന്ന വർക്ക്ഫ്ലോയും.

പ്രിന്റ്

ഒരു സാധാരണ ദിവസം ഒരു AI അസിസ്റ്റന്റിന് ഞാൻ ചോദിക്കുന്ന ഒരു കാര്യം ഇതാ:

"ഒരു ചെറിയ വെബ് ആപ്ലിക്കേഷന് വേണ്ടി ഒരു AWS PostgreSQL ഡാറ്റാബേസിനായി ടെറാഫോർം എഴുതുക, ഒപ്പം ആപ്ലിക്കേഷൻ കണക്ട് ചെയ്യാവുന്ന ഒരു സുരക്ഷാ ഗ്രൂപ്പും".

ചുരുക്കവും യാഥാര് ത്ഥ്യബോധവും, സന്ദര് ശനത്തില് നിന്ന് വളരെ കുറവുള്ളതും. നമ്മളിൽ മിക്കവരും ആ വഴിക്കാണ് കുറിപ്പുകൾ എഴുതുന്നത്.

എന്തായിരുന്നു തിരിച്ചു വന്നത്?

ഉത്തരം സാധാരണയായി ഒരു വൃത്തിയുള്ള, നന്നായി ഫോർമാറ്റ് ചെയ്ത ടെറാഫോർം ബ്ലോക്കാണ്. ഇത് ഒരു RDS ഇൻസ്റ്റൻസും ഒരു സെക്യൂരിറ്റി ഗ്രൂപ്പും ചില വേരിയബിളുകളും സൃഷ്ടിക്കുന്നു. ആദ്യ ശ്രമത്തിൽ തന്നെ അത് ഫലിക്കും. പക്ഷെ പലപ്പോഴും ഈ പ്രശ്നങ്ങളില് ചിലത് ഉൾപ്പെടുന്നു:

resource "aws_security_group" "db" {
  name = "db-sg"

  ingress {
    from_port   = 5432
    to_port     = 5432
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]   # anyone on the internet
  }
}

resource "aws_db_instance" "main" {
  engine              = "postgres"
  instance_class      = "db.t3.micro"
  allocated_storage   = 20
  username            = "admin"
  password            = "ChangeMe123!"   # hardcoded secret
  publicly_accessible = true
  skip_final_snapshot = true
}

ഇവിടെ ഒരു സിന്റാക്സ് പിശകും ഇല്ല. terraform plan സന്തോഷവതിയാണ്. എന്നിട്ടും:

തെറ്റുകൾ, ഓരോന്നായി

  1. ഡാറ്റാബേസ് ഇന്റർനെറ്റിൽ നിന്നും ലഭ്യമാണ്. 0.0.0.0/0 5432 തുറമുഖത്ത്, കൂടാതെ publicly_accessible = true. ആപ്ലിക്കേഷന് ആക്സസ് വേണം, ലോകത്തിന് വേണ്ടിയല്ല.
  2. ഹാർഡ് കോഡ് ചെയ്ത പാസ്വേഡ് അത് ഗിറ്റിലും ടെറാഫോർം സ്റ്റേറ്റിലും അവസാനിക്കും.
  3. ശാന്തമായ ക്രിപ്ഷൻ ഇല്ല (storage_encrypted കാണുന്നില്ല).
  4. ബാക്കപ്പുകളൊന്നും ഇല്ല. സൂക്ഷിക്കാനുള്ള കാലാവധി നിശ്ചയിച്ചിട്ടില്ല, ഒപ്പം skip_final_snapshot = true അതായത് റിസോഴ്സ് ഇല്ലാതാക്കുന്നത് നിങ്ങളുടെ ഡാറ്റ സ്നാപ്പ്ഷോട്ട് ഇല്ലാതെ ഇല്ലാതാക്കുന്നു.
  5. ഇല്ലാതാക്കല് പരിരക്ഷയില്ല. ഒരു തെറ്റ്. terraform destroy അത് പോയി.
  6. പതിപ്പ് നിശ്ചയിക്കപ്പെട്ടിട്ടില്ല എഞ്ചിന് റെയോ, വിതരണക്കാരന്റെയോ കാര്യത്തില് , അടുത്ത റണ്ണില് വ്യത്യസ്തമായി പെരുമാറാം.
  7. ടാഗുകൾ ഇല്ല, അതുകൊണ്ട് ചെലവ് നിരീക്ഷണവും ഉടമസ്ഥാവകാശവും വ്യക്തമല്ല.

സത്യസന്ധമായി പറഞ്ഞാൽ, നിങ്ങൾ AI- യോട് ചോദിച്ചാൽ "ഇത് സുരക്ഷിതമാണോ? ", അത് സാധാരണയായി ഈ പ്രശ്നങ്ങളിൽ മിക്കതും കണ്ടെത്തും. പക്ഷെ അതാണു കാര്യം. ആദ്യം അത് നിങ്ങൾക്ക് സുരക്ഷിതമല്ലാത്ത ഒരു പതിപ്പ് തന്നു, ആത്മവിശ്വാസത്തോടെ.

ഒരു ട്യൂട്ടോറിയൽ പോലെ തന്നെ AI Terraform എഴുതുന്നു: ആദ്യ ശ്രമത്തിൽ തന്നെ പ്രവർത്തിക്കാൻ ഒപ്റ്റിമൈസ് ചെയ്തു, ഒരു ഓഡിറ്റിന് ശേഷമല്ല.

ആ കാക്കകൾ പിടിക്കുന്നതെന്താണ്?

ഇവിടെയാണ് വിരസമായ ഉപകരണങ്ങള് ക്ക് അവരുടെ സ്ഥാനം ലഭിക്കുന്നത്. ഞാന് ഈ കോഡ് ഓടിച്ചു.

  • terraform validate ഒപ്പം terraform fmt: സിന്റാക്സും ഫോർമാറ്റിംഗും. ആവശ്യമായ, പക്ഷേ മുകളിലുള്ള സുരക്ഷാ പ്രശ്നങ്ങൾ ഒന്നും തന്നെ അവർ കണ്ടില്ല.
  • തുള്ളി AWS നിയമങ്ങളുടെ കൂട്ടത്തിൽ: അസാധുവായ ഇൻസ്റ്റൻസിംഗ് തരങ്ങൾ, കാലഹരണപ്പെട്ട ആർഗ്യുമെന്റുകൾ, മികച്ച രീതികൾ നഷ്ടമായി.
  • ചെക്കോവ് അല്ലെങ്കില് ട്രിവി ഇവ പ്രധാനപ്പെട്ടവയെ പിടിക്കുന്നു. തുറന്ന പ്രവേശനം, പൊതു ഡാറ്റാബേസ്, എൻക്രിപ്ഷൻ നഷ്ടപ്പെട്ടത്, ബാക്കപ്പുകൾ നഷ്ടപ്പെട്ടത് , ഹാർഡ് കോഡ് ചെയ്ത രഹസ്യങ്ങൾ.
  • രഹസ്യ സ്കാനിംഗ് (ഗിറ്റ്ലീക്കുകൾ, ഗിറ്റ്ഹബ് പുഷ് പ്രൊട്ടക്ഷൻ): പാസ്വേഡ് പുഷ് ചെയ്യുന്നതിനു മുമ്പുതന്നെ പിടിച്ചെടുക്കുന്നു.

നിങ്ങളുടെ കമ്പനിയുടെ ആവശ്യങ്ങൾക്ക് ഡിസൈന് അനുയോജ്യമാണോ എന്നതല്ല അവർ മനസ്സിലാക്കുന്നത്. പകരം ഇത് ഓറോറയാകണോ? വില് db.t3.micro യഥാര് ത്ഥ ട്രാഫിക് കൈകാര്യം ചെയ്യാന് ? അത് ഈ വിപിസിയിൽ പെടുന്നുണ്ടോ? അതിന് ഇപ്പോഴും സന്ദര് ശനം അറിയുന്ന ഒരു മനുഷ്യനെ വേണം.

എന്റെ വർക്ക്ഫ്ലോ: സൃഷ്ടിക്കുക, പരിശോധിക്കുക, അവലോകനം ചെയ്യുക

  1. സന്ദര് ശനവുമായി ബന്ധപ്പെട്ട് സൃഷ്ടിക്കുക. നിങ്ങളുടെ ആചാരങ്ങൾ AI-ക്ക് നൽകുക: "ഞങ്ങളുടെ മൊഡ്യൂൾ X ഉപയോഗിക്കുക, ഒരിക്കലും പൊതുവായിരിക്കരുത്, എല്ലായ്പ്പോഴും എൻക്രിപ്റ്റ് ചെയ്യുക, AWS രഹസ്യ മാനേജർ, ഉടമയും ചെലവ് കേന്ദ്രവും അടയാളപ്പെടുത്തുക". റെപ്പോയിലെ ഒരു നിയമ ഫയൽ ഇവിടെ വളരെയധികം സഹായിക്കുന്നു, അതിനാൽ നിങ്ങൾ അത് ഓരോ തവണയും ആവർത്തിക്കേണ്ടതില്ല.
  2. ഓട്ടോമാറ്റിക് ആയി ലിന്റ്. fmt, validate, tflint, ചെക്കോവ് എന്നിവയ്ക്കുള്ള മുൻകൂർ കരാറുകള് , ആവശ്യമായ സ്റ്റാറ്റസ് പരിശോധനകളായി CI യില് ഒരേ പരിശോധനകൾ.
  3. സിഐയിലെ പദ്ധതി ആസൂത്രണം വായിക്കണം, കോഡ് മാത്രമല്ല.
  4. പ്രാധാന്യമുള്ളിടത്ത് പരിശോധിക്കുക: terraform test അല്ലെങ്കിൽ ഒരിക്കലും ലംഘിക്കപ്പെടാത്ത നിയമങ്ങളുടെ നയപരമായ പരീക്ഷണം.
  5. മനുഷ്യ അവലോകനം ഡിസൈനിനും ഉദ്ദേശത്തിനും ഊന്നൽ നല് കിയിട്ടുണ്ട്, കാരണം ഉപകരണങ്ങള് ഇതിനകം തന്നെ പാറ്റേണുകള് പരിശോധിച്ചിട്ടുണ്ട്.

ഇതിലും നല്ലത്: നിങ്ങളുടെ നിലവിലുള്ള, അവലോകനം ചെയ്ത മൊഡ്യൂളുകളിലേക്ക് AI നെ നയിക്കുക, അത് അസംസ്കൃത വിഭവങ്ങൾ എഴുതാൻ അനുവദിക്കുന്നതിനുപകരം. "ഞങ്ങളുടെ rds-postgres "എനിക്ക് ഒരു ഡാറ്റാബേസ് എഴുതുക" എന്നതിനേക്കാൾ വളരെ സുരക്ഷിത ഫലങ്ങൾ നൽകുന്നു.

അപ്പോള് , നിങ്ങള് ടെറഫോർമിന് വേണ്ടി AI ഉപയോഗിക്കണോ?

അതെ, അതെ. ഇത് ബോയിലർപ്ലേറ്റിനുള്ള വലിയ സമയം ലാഭിക്കുന്നു, അപരിചിതമായ കോഡ് പുനർനിർമിക്കുകയും വിശദീകരിക്കുകയും ചെയ്യുന്നു. അതിന്റെ ഔട്ട്പുട്ട് ഒരിക്കലും പൂർത്തിയായി കണക്കാക്കരുത്. പുതിയ സഹപ്രവർത്തകന്റെ ആദ്യ പിൻവലിക്കൽ അപേക്ഷ പോലെ തന്നെ അത് പാറ്റേണിലൂടെ അയച്ചു കൊടുക്കുക, കാരണം അത് ഏകദേശം അങ്ങനെ തന്നെ.

എന്റെ അഭിപ്രായം: ഐ. ഐ. ഒരു മികച്ച ആദ്യ ഡ്രാഫ്റ്റ് എഴുത്തുകാരനാണ്. നിങ്ങളുടെ ലിന്ററുകളും നയങ്ങളും അവലോകനവും എഡിറ്റർമാരാണ്, അടിസ്ഥാന സൌകര്യങ്ങളിൽ, എഡിറ്ററാണ് ഏറ്റവും പ്രധാനം.

ഡെസ്ലി