GH GambleHub

תשתית כקוד: 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

צרו קשר

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

Telegram
@Gamble_GC
התחלת אינטגרציה

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

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

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