Quản lý Pulumi Config Cho Nhiều Môi Trường Với Python – Góc Nhìn DevOps/DevSecOps

Pulumi Config là gì?
Pulumi Config là một hệ thống tích hợp trong Pulumi, cho phép bạn lưu trữ và quản lý các tham số cấu hình cho các stack (môi trường) khác nhau. Mỗi stack có thể có một tệp cấu hình riêng (Pulumi.<stack-name>.yaml), trong đó bạn định nghĩa các giá trị key-value hoặc thậm chí các đối tượng JSON phức tạp. Pulumi Config hỗ trợ cả giá trị thông thường và bí mật (secrets) được mã hóa để đảm bảo an toàn.
Ví dụ, bạn có thể định nghĩa các thông số như:
Cổng ứng dụng (port).
URL cơ sở dữ liệu.
Khóa API hoặc thông tin nhạy cảm khác.
Trong hạ tầng hiện đại, việc tách biệt cấu hình giữa các môi trường dev, staging, prod là điều bắt buộc để đảm bảo:
Mỗi môi trường có tài nguyên và thông tin xác thực riêng biệt
Tránh rò rỉ thông tin nhạy cảm (secret/token)
Dễ dàng triển khai CI/CD theo từng môi trường
Khi sử dụng Pulumi với Python làm IaC (Infrastructure as Code), Pulumi Config chính là công cụ chủ lực để bạn đạt được điều đó.
Pulumi Config
là hệ thống quản lý biến cấu hình (giống như .tfvars
trong Terraform), cho phép bạn:
Khai báo giá trị cấu hình theo từng stack
Quản lý secret một cách bảo mật
Tự động ánh xạ biến cấu hình vào code Python
Giả sử bạn có project Pulumi như sau:
infra/
├── Pulumi.dev.yaml
├── Pulumi.staging.yaml
├── Pulumi.prod.yaml
├── __main__.py
└── Pulumi.yaml
Mỗi stack sẽ có thông tin cấu hình riêng biệt (VD: region, DB password, subnet, v.v.)
Khởi tạo project Pulumi Python
mkdir infra && cd infra
pulumi new aws-python
Chọn tên project, sau đó Pulumi sẽ tạo sẵn Pulumi.yaml
và __main__.py
.
Tạo các stack
pulumi stack init dev
pulumi stack init staging
pulumi stack init prod
Cấu hình các biến
Ví dụ: bạn cần cấu hình vùng AWS và mật khẩu database.
# Cho stack dev
pulumi config set aws:region ap-southeast-1 --stack dev
pulumi config set dbPassword dev-pass --secret --stack dev
# Cho stack prod
pulumi config set aws:region ap-southeast-1 --stack prod
pulumi config set dbPassword prod-pass --secret --stack prod
Tạo file Pulumi.dev
.yaml
tự động:
config:
aws:region: ap-southeast-1
dbPassword:
secure: v1:encrypted-data
Truy xuất biến trong code Python
Trong __main__.py
:
import pulumi
import pulumi_aws as aws
config = pulumi.Config()
aws_config = pulumi.Config("aws")
# Lấy cấu hình thông thường
region = aws_config.require("region")
# Lấy biến nhạy cảm
db_password = config.require_secret("dbPassword")
# Demo tạo một secret trong AWS Secrets Manager
secret = aws.secretsmanager.Secret(
"db-secret",
name="db-password",
description="Database password"
)
secret_value = aws.secretsmanager.SecretVersion(
"db-secret-value",
secret_id=secret.id,
secret_string=db_password
)
pulumi.export("region", region)
Chạy theo từng môi trường
pulumi up --stack dev
pulumi up --stack staging
pulumi up --stack prod
Bạn có thể tích hợp điều này vào CI/CD pipeline dễ dàng:
bashCopyEditpulumi up --stack $ENVIRONMENT --yes
Subscribe to my newsletter
Read articles from Kilo directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
