Logo GH

תשתית כקוד: Terraform, Anable

תשתית כקוד: Terraform, Anable

1) מדוע IC וכיצד כלים שונים

Terraform - תזמור הצהרתי: יוצר/משנה תשתית ענן (VPC, K8s, LB, DB, IAM) באמצעות ספקים. מנהל משאבי חיים ומחסן את המדינה.
Ansible - פרוצדורלי קונפיג-IC וניהול הגדרות: הגדרות מארחים/תוכנה (חבילות, קבצים, שירותים), יודע איך לספק יישומים, תבנית, תזמור של צעדים. ללא סוכן (SSH/WinRM), עם אידמפוטנטיות של משימות.

שילוב: Terraform - ”ממה עשויה הפלטפורמה,” Ansible - ”איך היא מוגדרת ומושקת”.

2) מבנה של מחסומים ושכבות

אנחנו ממליצים על 3 שכבות:

1. רשתות, IAM, KMS, יומני בסיס/ניטור.

2. פלטפורמה: אשכולות קוברנטס, מסדי נתונים, תורים, ערימת תצפית.

3. עומסי עבודה: רווחים/שמות, חשבונות שירות, מדיניות, תצורות.

Repo:
  • מודולים וסביבות ('מודולים/',' קנאה/').
  • תפקידים ('תפקידים/'), ספרי משחק (' ספרי משחק/'), מלאי ('המצאות/').
  • חוקים של אופ "א/קונסטלציה.
  • תסריטי CI/CD (מוך/תוכנית/יישום/מבחן).

3) טרה פורם: מודולים, מצב, סביבות

3. 1 מודולים

קטן, בשימוש חוזר: "vpc", "eks'," rds "," redis "," alb "," iam-face ".
כניסות ”משתנים”. TF ', Outputs = "Outfuts. tf ', גרסאות - דרך הרישום של מודולים/git-תגיות.

דוגמה לקריאת מודול:
hcl module "vpc" {
source = "git::ssh://git@repo/iac. git//modules/vpc? ref=v1. 6. 0"
name  = "prod-core"
cidr  = "10. 0. 0. 0/16"
azs  = ["eu-central-1a","eu-central-1b"]
}

3. 2 מצב

אחורי מרוחק (S3/GCS + DynamOdB/LockTable) + מנעולים.
הפרדה לפי סביבה: Tfstate ',' היערכות. Tfstate '.
מצב-דריפט: ”תכנית טרפורם” במודיעה על לוח זמנים; התראה כאשר נסחף.

גיבוי לדוגמה:
hcl terraform {
backend "s3" {
bucket     = "iac-state"
key      = "prod/network/terraform. tfstate"
region     = "eu-central-1"
dynamodb_table = "iac-locks"
encrypt    = true
}
}

3. 3 מרחבי עבודה/קנאות

אפשרויות:
  • ספריות נפרדות 'קנאה/פרוד', 'קנאה/שלב' (ויזואלי).
  • מקומות עבודה עבור וריאציות אור, אבל להימנע מערבוב סודות.
  • פרמטרים באמצעות 'tfvars': "pod. Tfvars', 'במה. Tfvares '.

4) Ansible: תפקידים, ממציאים, Idempotence

4. 1 תפקידים וספרי שעשועים

תקן גלקסיה:

roles/
nginx/
tasks/main. yml templates/.j2 handlers/main. yml defaults/main. yml playbooks/
site. yml
דוגמא לספר מהלכים:
yaml
- hosts: web become: true roles:
- role: nginx vars:
nginx_listen_port: 8080

4. 2 מלאי ודינמיקה

'inventory/prod/מארחים. yml' + משתנים 'קבוצה _ vars/host _ vars'.
מלאי דינמי: ”aws _ ec2”, ”gcp _ compute”, ”kubernetes”. ליבה ".

4. 3 אידמפוטנטיות

השתמש במודולים (לא ”מעטפת”) היכן שאפשר.
'שינוי _ כאשר '/' check _ mode' עבור ריצות יבשות.
מפעילים רק להרהר בשינויים.

5) סודות ותצורות

Terraform: הפרשת ערכים באמצעות ”רגישות = אמת”; הסודות עצמם אינם נמצאים במדינה (חנות ב-AWS Secrets Manager/HashiCorp Vault/KMS).
Ansible: כספת להצפנה משתנה (”Ansible-vault הצפנה”), אינטגרציה עם HashiCorp Vault/KMS.
GitOps: סודות בריפו/אחסון נפרד, גישה על ידי חיסיון מינימלי.

6) מדיניות כקוד

OPA/Confest עבור תוכניות Terraform: איסור על S3 ציבורי, SG פתוח, משאבים לא מתוגגים (תגיות).
Terraform ענן/Enterprise - סנטינל כאלטרנטיבה.
מוך Ansible: סגנון וביטחון (ללא 'סודו: כן' איפה לא צריך, ללא raw-shell).

דוגמה לקונפסט (rego, מפושט):
rego package terraform. security

deny[msg] {
input. resource_type == "aws_security_group_rule"
input. values. cidr_blocks[_] == "0. 0. 0. 0/0"
input. values. from_port == 22 msg:= "SSH from 0. 0. 0. 0/0 is forbidden"
}

7) בדיקת ICAC

Terraform: 'tflint',' tfsec '/' checov ', Terratest (Go) לבדיקות אינטגרציה.
"Ansible-wint', מולקולה (+ Docker/Podman/EC2) לבדיקת תפקידים.
בדיקות עשן לאחר התקף: גשושיות HTTP, פורט/תהליכים, זכויות.

8) CI/CD -GitOps

צינור (בקשת משיכה/מיזוג):

1. מוך/סק: tflint, tfsec/checkov, ansible-wint.

2. תכנית: ”תכנית טרפורמית” עם פרסום של חפץ (תגובה במר).

3. שער המדיניות: Confest/Sentinel.

4. יישום (ידני/מאושר): רק על ראשי עם חתימה של חפצים.

5. פריסה בלתי אפשרית: "- צ 'ק" על הבמה, ואז - "diff' in prod.

6. פוסט-בדיקות: סינתטי/גשוש, לשחרר לוח מחוונים.

GitOps:
  • שמור על מניפסטים כמקור של אמת; Argo CD/Flux עבור קוברנטס, אבל אשכולות/פרימיטיבים בסיסיים דרך Terraform.

9) תבניות עבור קוברנטס, רשתות, מסדי נתונים

9. 1 קוברנטס

TERRAFORM: EKS/GKE/AKS אשכולות, צמתים, IAM, LAID, LB.
Ansible: AMI/bastion preduction, image assembly/repositories, postainall (חוטבי עצים/סוכנים/אוטל).

9. 2 רשתות והיקף

Terraform: VPC/subnets/NAT/Transit-Gateway/WAF, מסלולים.
Ansible: NGINX/Transfoy/HAPROXY config, TLS, WAF rules config.

9. 3 בסיסים/מטמונים/תורים

Terraform: RDS/CloudSQL group parmeter, Redis/ElastiCache, Kafka/MSK.
חימום מטמון, עבודות נדידה, הגדרת גיבויים/סוכנים.

10) דוגמאות של תצורות

10. 1 Terraform - RDS PostgreSQL + SG

hcl module "db" {
source        = "terraform-aws-modules/rds/aws"
engine        = "postgres"
engine_version    = "15. 4"
instance_class    = "db. m6g. large"
allocated_storage  = 100 name         = "core"
username       = var. db_user password       = var. db_password # см. secret data source vpc_security_group_ids = [module. db_sg. security_group_id]
multi_az       = true backup_retention   = 7
}

module "db_sg" {
source = "terraform-aws-modules/security-group/aws"
name  = "db-core"
vpc_id = module. vpc. vpc_id ingress_cidr_blocks = ["10. 0. 0. 0/8"]
ingress_rules    = ["postgresql-tcp"]
}

10. 2 טרה ־ פורם - מקור המידע של הסוד

hcl data "aws_secretsmanager_secret_version" "db" {
secret_id = "prod/db/core"
}
variable "db_password" {
type   = string sensitive = true default  = jsondecode(data. aws_secretsmanager_secret_version. db. secret_string). password
}

10. 3 Ansible - תפקיד postgresql-client (מקטע)

yaml
- name: Install packages apt:
name: [ "postgresql-client-15" ]
state: present update_cache: yes

- name: Create. pgpass copy:
dest: /home/deploy/.pgpass mode: '0600'
content: "{{ db_host }}:5432:core:{{ db_user }}:{{ db_password }}"
no_log: true

- name: Smoke query shell: psql -h {{ db_host }} -U {{ db_user }} -d core -c "select 1"
register: psql_out changed_when: false

10. 4 קביל - NGINX עם תבנית

yaml
- name: Deploy nginx. conf template:
src: templates/nginx. conf. j2 dest: /etc/nginx/nginx. conf notify: Restart nginx

- name: Ensure nginx running service:
name: nginx state: started enabled: true

handlers:
- name: Restart nginx service: { name: nginx, state: restarted }

11) סחיפה וניהול ציות

תוכנית טרפורם תקופתית במפתח קריאה בלבד; יוצר כרטיס כשיש אי התאמה.
צ 'ק שנקבע לתפקידים קריטיים (מצב ביקורת).
דיווחים: מדיניות OPA/Confest נכשלה, לא מתויגת/גיבוי/ניטור משאבים.

12) יכולת תצפית וביקורת

טריפורם יישום 'יומנים ותכנון חפצים - לחסוך לאחסון אובייקטים.
Ansible: "callback _ plugins' (json) # log מרכזי/ELK; כולל תעודה מזהה, בצע סיוע, trace_id.
מטריצות: זמן ביצוע של תוכניות/ספרי משחק, תדירות של שינויים, כיסוי מבחן.

13) בטיחות

מודול/חתימת תפקיד או תגיות/חשיש קבועים.
זכויות ה-IAM המינימליות (”plan” with ”apply”), מפרידים בין תפקידי המודיעים לבין האפליקציה האנושית.
הצפנה של מצב/יומנים, רשמים פרטיים של מודולים/תפקידים.
מדיניות ”אין סודות בטקסט ישיר בווידאו”, סורקים סודיים (gitleaks/trafflehog).

14) אנטי דפוסים

מודול מפלצות טרפורמי אחד ”לכל דבר”; גרסאות מודול חסרות.
מקומי 'terraform. אין מנעולים.
עריכה ידנית בענן מעל IC = סחף נצחי.
Ansible 'shell'/' command' במקום modules (שובר אידמפוטנטיות).
מלאי ”בקובץ אחד” ללא קבוצות/משתנים, ערבוב פרוד/שלב.
סודות בארס/מאגרים, היעדר כספת/KMS.
להגיש בקשה ללא תוכנית וללא ביקורת עמיתים.

15) רשימת יישומים (0-45 ימים)

0-10 ימים

הגדרת backend/lock מרוחק, הרחבת מודולי Terraform.
אפשר tflint/tfsec/checkov, Ansible-wint; משא ומתן תגי משאבים/תוויות.
צור תפקידים אפשריים עבור NGINX/סוכנים/לוגרים; לארגן מלאי.

11-25 ימים

הוספת קונפסט/אופ "א, טרטסט ומולקולה למודולים/תפקידים קריטיים.
מודיע: "תכנית על מר, פריט תכנית, ידני ליישום עם אישור; אנסופי '- צ' ק 'בשלב.
אינטגרציה אחסון סודי (מנהל כספת/KMS/סודות).

26-45 ימים

לוח זמנים אוטומטי לזיהוי סחיפה, דו "חות מדיניות.
ספרייה של מודולים/תפקידים עם וריאציות; "לקרוא אותי. md' בכל אחד.
GitOps: הערות של שחרור, שילוב עם ניטור ושערים התראה.

16) מדדי בגרות

% של סביבות עם מדינה מרוחקת ומנעולים = 100%.
הנתח של מודולים/תפקידים עם בדיקות (טרטסט/מולקולה) הוא 70%.
הזמן הממוצע ממר ליישם הוא שעות, לא ימים.
אפס ”סחף ידני” (כל השינויים עוברים דרך מר).
100% מהמשאבים הקריטיים מכוסים על ידי מדיניות כקוד (תגיות, הצפנה, גיבוי).

17) מסקנה

Terraform מפרט בסיס תשתית ניתן לחיזוי; קביל מביא מארחים ושירותים למדינה הרצויה. הוסף מדיניות כקוד, מדינה מרוחקת עם מיקום, בדיקות, ניהול סודי ו-CI/CD עם תוכנית סקירה _ תקפה - ולולאת ה-ICC שלך הופכת לניתנת לשליטה, מאובטחת ומהירה, ושחרורים הם אטומיים והפיכים.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.