Terraform Best Practices
Terraform consultingTwitter @antonbabenkoTerraform Weekly
ಕನ್ನಡ (Kannada)
ಕನ್ನಡ (Kannada)
  • ಸ್ವಾಗತ
  • ಮುಖ್ಯ ಪರಿಕಲ್ಪನೆಗಳು
  • ಕೋಡ್ ರಚನೆ
  • ಕೋಡ್ ರಚನೆ ಉದಾಹರಣೆಗಳು
    • ಟೆರಾಗ್ರಂಟ್
    • ಟೆರಾಫಾರ್ಮ್
      • ಸಣ್ಣ ಗಾತ್ರದ infrastructure ಟೆರಾಫಾರ್ಮ್ ನೊಂದಿಗೆ
      • ಮಧ್ಯಮ ಗಾತ್ರದ infrastructure ಟೆರಾಫಾರ್ಮ್ ನೊಂದಿಗೆ
      • ದೊಡ್ಡಗಾತ್ರದ infrastructure ಟೆರಾಫಾರ್ಮ್ ನೊಂದಿಗೆ
  • ನೇಮಿಂಗ್ conventionಗಳು
  • ಕೋಡ್ ಸ್ಟೈಲಿಂಗ್
  • ಆಗಾಗ್ಗೆ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು (FAQ)
  • ಉಲ್ಲೇಖಗಳು
  • ಟೆರ್ರಾಫಾರ್ಮ್ ಕಾಂಫಿಗುರೇಶನ್ ಗಳನ್ನು ಬರೆಯುವ ಬಗ್ಗೆ
  • ಕಾರ್ಯಾಗಾರ
Powered by GitBook
On this page
  • ಸಂಪನ್ಮೂಲ (Resource)
  • ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್
  • Infrastructure (ಮೂಲಸೌಕರ್ಯ) ಮಾಡ್ಯೂಲ್
  • ಕಾಂಪೊಸಿಷನ್
  • ಮಾಹಿತಿ (ಡೇಟಾ) ಮೂಲ
  • Remote (ರಿಮೋಟ್) ಸ್ಥಿತಿ
  • ಪೂರೈಕೆದಾರರು (Providers), ಒದಗಿಸುವವರು, ಇತ್ಯಾದಿ
  • ಏಕೆ ಕಷ್ಟ?
Export as PDF

ಮುಖ್ಯ ಪರಿಕಲ್ಪನೆಗಳು

Previousಸ್ವಾಗತNextಕೋಡ್ ರಚನೆ

Last updated 2 years ago

ಅಧಿಕೃತ ಟೆರಾಫಾರ್ಮ್ ದಾಖಲೆಗಳು ಎಲ್ಲಾ ವಿವರವಾಗಿ ವಿವರಿಸುತ್ತವೆ .ಈ ವಿಭಾಗದ ಉಳಿದ ಭಾಗವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅದನ್ನು ಗಮನವಿಟ್ಟು ಓದಿ.

ಈ ವಿಭಾಗವು ಪುಸ್ತಕದೊಳಗೆ ಬಳಸಲಾದ ಪ್ರಮುಖ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ.

ಸಂಪನ್ಮೂಲ (Resource)

ಸಂಪನ್ಮೂಲಗಳು ಎಂದರೆ aws_vpc, aws_db_instance, ಇತ್ಯಾದಿ. ಸಂಪನ್ಮೂಲವು ಪೂರೈಕೆದಾರರಿಗೆ ಸೇರಿದೆ, argument ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, property ಗಳನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ ಮತ್ತು life cycleಅನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಸಂಪನ್ಮೂಲವನ್ನು ರಚಿಸಬಹುದು, retrieve ಮಾಡಬಹುದು, ನವೀಕರಿಸಬಹುದು ಮತ್ತು ಅಳಿಸಬಹುದು.

ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್

ಸಂಪನ್ಮೂಲ module ಎನ್ನುವುದು ಸಂಪರ್ಕಿತ ಸಂಪನ್ಮೂಲಗಳ ಸಂಗ್ರಹವಾಗಿದ್ದು ಅದು ಸಾಮಾನ್ಯ ಕ್ರಿಯೆಯನ್ನು ಒಟ್ಟಿಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, AWS VPC ಟೆರಾಫಾರ್ಮ್ ಮಾಡ್ಯೂಲ್ VPC, ಸಬ್‌ನೆಟ್‌ಗಳು, NAT ಗೇಟ್‌ವೇ, ಇತ್ಯಾದಿಗಳನ್ನು ರಚಿಸುತ್ತದೆ). ಇದು ಪೂರೈಕೆದಾರರ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಅದರಲ್ಲಿ ಅಥವಾ ಉನ್ನತ ಮಟ್ಟದ ರಚನೆಗಳಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದಾಗಿದೆ (ಉದಾಹರಣೆಗೆ, infrastructure ಮಾಡ್ಯೂಲ್ ನಲ್ಲಿ).

Infrastructure (ಮೂಲಸೌಕರ್ಯ) ಮಾಡ್ಯೂಲ್

Infrastructure ಮಾಡ್ಯೂಲ್ ಎನ್ನುವುದು ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳ ಸಂಗ್ರಹವಾಗಿದೆ. ಈ ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳು ತಾರ್ಕಿಕವಾಗಿ ಪ್ರತ್ಯೇಕವಾದವುಗಳು. ಆದರೆ ಪ್ರಸ್ತುತ ಪರಿಸ್ಥಿತಿ/ಪ್ರಾಜೆಕ್ಟ್/ಸೆಟಪ್ನಲ್ಲಿ ಯಾವುದೊ ಒಂದು ನಿಯೋಜಿತ ಉದ್ದೇಶವನ್ನು ಪೂರೈಸುತ್ತದೆ. ಇದು ಡೌನ್‌ಸ್ಟ್ರೀಮ್ ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳಿಗೆ ಮತ್ತು ಸಂಪನ್ಮೂಲಗಳಿಗೆ ರವಾನಿಸಲಾಗುವ ಕಾಂಫಿಗುರೇಷನ್ಗಳನ್ನು ಪೂರೈಕೆದಾರರಿಗೆ ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರತಿ ತಾರ್ಕಿಕ ವಿಭಜಕಕ್ಕೆ (ಉದಾ., AWS ಪ್ರದೇಶ, Google ಪ್ರಾಜೆಕ್ಟ್ )ಒಂದು ಯೂನಿಟ್ ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಸೀಮಿತವಾಗಿರುತ್ತದೆ.

ಉದಾಹರಣೆಗೆ, ಮಾಡ್ಯೂಲ್ AWS ಫಾರ್ಗೇಟ್‌ನಲ್ಲಿ ಅನ್ನು ಚಲಾಯಿಸಲು ಅಗತ್ಯವಿರುವ infrastructure ಅನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ನಂತಹ ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ.

ಮತ್ತೊಂದು ಉದಾಹರಣೆಯೆಂದರೆ, ಮಾಡ್ಯೂಲಿನಲ್ಲಿ ನಂತಹ ಬಹು ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಒಟ್ಟಿಗೆ infrastructure ನಿರ್ವಹಿಸಲು ಬಳಸಲಾಗುತ್ತಿದೆ ಮತ್ತುಡಾಕರ್ imagesಅನ್ನು ನಿರ್ಮಿಸಲು, ತಳ್ಳಲು ಮತ್ತು ನಿಯೋಜಿಸಲು ಡಾಕರ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸಲಾಗುತ್ತಿದೆ. ಎಲ್ಲಾ ಒಂದೇ ಸೆಟ್‌ನಲ್ಲಿ.

ಕಾಂಪೊಸಿಷನ್

ಕಾಂಪೊಸಿಷನ್ ಎನ್ನುವುದು infrastructure ಮಾಡ್ಯೂಲ್‌ಗಳ ಸಂಗ್ರಹವಾಗಿದೆ, ಇದು ಹಲವಾರು ತಾರ್ಕಿಕವಾಗಿ ಬೇರ್ಪಟ್ಟ ಪ್ರದೇಶಗಳಲ್ಲಿ ವ್ಯಾಪಿಸಬಹುದು (ಉದಾ., AWS ಪ್ರದೇಶಗಳು, ಹಲವಾರು AWS ಖಾತೆಗಳು). ಸಂಪೂರ್ಣ ಸಂಸ್ಥೆ ಅಥವಾ ಪ್ರಾಜೆಕ್ಟ್-ಗೆ ಅಗತ್ಯವಿರುವ ಸಂಪೂರ್ಣ infrastructureಅನ್ನು ವಿವರಿಸಲು ಕಾಂಪೊಸಿಷನ್ ಬಳಸಲಾಗುತ್ತದೆ. ಕಾಂಪೊಸಿಷನ್ infrastructure ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಅವು ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ , ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳು ವೈಯಕ್ತಿಕ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ .

ಮಾಹಿತಿ (ಡೇಟಾ) ಮೂಲ

ಮಾಹಿತಿ ಮೂಲವು ಓದಲು-ಮಾತ್ರ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಪೂರೈಕೆದಾರರ ಕಾಂಫಿಗುರೇಶನ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಇದನ್ನು ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್ ಮತ್ತು infrastructure ಮಾಡ್ಯೂಲ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.

ಮಾಹಿತಿ ಮೂಲ terraform_remote_state ಎನ್ನುವುದು ಉನ್ನತ ಮಟ್ಟದ ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು ಕಾಂಪೊಸಿಷನ್-ಗಳ ನಡುವಿನ ಸೇತುವೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

Remote (ರಿಮೋಟ್) ಸ್ಥಿತಿ

ಪೂರೈಕೆದಾರರು (Providers), ಒದಗಿಸುವವರು, ಇತ್ಯಾದಿ

ಪೂರೈಕೆದಾರರು, ಒದಗಿಸುವವರು ಮತ್ತು ಕೆಲವು ಇತರ ಪದಗಳನ್ನು ಅಧಿಕೃತ ದಾಖಲಾತಿಯಲ್ಲಿ ಚೆನ್ನಾಗಿ ವಿವರಿಸಲಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ಇಲ್ಲಿ ಪುನರಾವರ್ತಿಸಲು ಯಾವುದೇ ಅರ್ಥವಿಲ್ಲ. ನನ್ನ ಅಭಿಪ್ರಾಯದ ಪ್ರಕಾರ, ಉತ್ತಮ ಟೆರಾಫಾರ್ಮ್ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಬರೆಯುವುದಕ್ಕೂ ಇದಕ್ಕೂ ಸಂಬಂಧವಿಲ್ಲ.

ಏಕೆ ಕಷ್ಟ?

ಅಣುಗಳಾದ್ಯಂತ (ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು infrastructure ಮಾಡ್ಯೂಲ್‌ಗಳು) ಮಾಹಿತಿಯ ಪರಾಮರ್ಷಣೆಯನ್ನು ಮಾಡ್ಯೂಲ್‌ಗಳ ಔಟ್‌ಪುಟ್‌ಗಳು ಮತ್ತು ಮಾಹಿತಿ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.

ಮೇಲೆ ವಿವರಿಸಿದ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಸೂಡೋ-ರಿಲೇಶನ್ ಗಳಲ್ಲಿ ಇರಿಸಿದಾಗ ಅದು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:

composition-1 {
  infrastructure-module-1 {
    data-source-1 => d1

    resource-module-1 {
      data-source-2 => d2
      resource-1 (d1, d2)
      resource-2 (d2)
    }

    resource-module-2 {
      data-source-3 => d3
      resource-3 (d1, d3)
      resource-4 (d3)
    }
  }
}

ಮೂಲವು ಬಾಹ್ಯ ಪ್ರೋಗ್ರಾಮ್ ಅನ್ನು ಮಾಹಿತಿ ಮೂಲವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಇದರಿಂದ ಟೆರಾಫಾರ್ಮ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಬೇರೆಡೆ ಬಳಕೆಗಾಗಿ ಅನಿಯಂತ್ರಿತ ಮಾಹಿತಿಯು ಲಭ್ಯವಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗಾಗಿ ಮಾಡ್ಯೂಲ್‌ನಲ್ಲಿಫೈಲ್ ಹೆಸರನ್ನು ಬಾಹ್ಯ ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕರೆಯುವ ಮೂಲಕ ಲೆಕ್ಕಾಚಾರ ಮಾಡಲಾಗುತ್ತದೆ.

ಮಾಹಿತಿ ಮೂಲವು HTTP GET URL ಗೆ ವಿನಂತಿಯನ್ನು ಮಾಡುತ್ತದೆ ಮತ್ತು ಬಂದ response ಅನ್ನು export ಮಾಡುತ್ತದೆ. ಇದು native ಟೆರಾಫಾರ್ಮ್ ಪೂರೈಕೆದಾರರು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಎಂಡ್ ಪಾಯಿಂಟ್ ಗಳಿಂದ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ಉಪಯುಕ್ತವಾದ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿದೆ.

Infrastructure ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು ಕಾಂಪೊಸಿಷನ್ ಗಳು ತಮ್ಮ remote ಸ್ಥಳದಲ್ಲಿ ಲಭ್ಯವಾಗಿಸಬೇಕು. ಅದನ್ನು ಇತರರು ನಿಯಂತ್ರಿತ ರೀತಿಯಲ್ಲಿ ಹಿಂಪಡೆಯಬಹುದು (ಉದಾ., ACL, version ,ಲಾಗಿಂಗ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವಂತದ್ದು)

Infrastructure ಅಲ್ಲಿ ವೈಯಕ್ತಿಕ ಸಂಪನ್ಮೂಲಗಳು ಪರಮಾಣುಗಳಂತೆ ಹಾಗು ಸಂಪನ್ಮೂಲ ಮಾಡ್ಯೂಲ್‌ಗಳು ಅಣುಗಳಂತೆ (ಪರಮಾಣುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ). ಮಾಡ್ಯೂಲ್ ಎನ್ನುವುದು ಚಿಕ್ಕ ಆವೃತ್ತಿಯ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಬಹುದಾದ ಘಟಕವಾಗಿದೆ. ಇದು argumentಗಳ ನಿಖರವಾದ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿದ್ದು , basic ಕಾರ್ಯವನ್ನು ಮಾಡಲು ಅಂತಹ ಘಟಕಕ್ಕೆ ಮೂಲಭೂತ ತರ್ಕವನ್ನು ಅಳವಡಿಸುತ್ತದೆ. e.g., ಮಾಡ್ಯೂಲ್‌ aws_security_group ಹಾಗು aws_security_group_rule ಸಂಪನ್ಮೂಲಗಳನ್ನು inputನ ಆಧಾರದ ಮೇಲೆ ಸೃಷ್ಟಿಸುತ್ತದೆ. This ಸಂಪನ್ಮೂಲಗ ಮಾಡ್ಯೂಲ್‌ ಅನ್ನು ಬೇರೆ ಮೊಡ್ಯೂಲ್ ಗಳ ಜೊತೆ infrastructure ಮೊಡ್ಯೂಲ್ ಸೃಷ್ಟಿಸಲು ಉಪಯೋಗಿಸಬಹುದಾಗಿದೆ.

ಕಂಪೋಸಿಷನ್ ಗಳ ಪರಮರ್ಷಣೆಯನ್ನು ರಿಮೋಟ್ ಸ್ಟೇಟ್ ಮಾಹಿತಿ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹೆಚ್ಚಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. .

ಬಾಹ್ಯ ಮಾಹಿತಿ
terraform-aws-lambda module
http
ಟೆರಾಫಾರ್ಮ್ ಸ್ಥಿತಿಯನ್ನು
terraform-aws-security-group
ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳ ನಡುವೆ ಮಾಹಿತಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಹಲವು ಮಾರ್ಗಗಳಿವೆ
ಅಂಶಗಳನ್ನು
terraform-aws-atlantis
Atlantis
terraform-aws-vpc
terraform-aws-security-group
terraform-aws-cloudquery
terraform-aws-modules
Simple infrastructure composition