
OpenSource Solution الذي يحدد ويدير دورة الحياة الكاملة للموارد المستخدمة والمزودة في سحابة!
استكشف المستندات »
تساعد SLD على تسريع النشر ، والترجمة وجعل IAAC قابلة لإعادة الاستخدام ، وتوليد أشكال ديناميكية والحفاظ على متغيرات مختلفة في كل بيئة مع نفس الرمز. مع SLD ، يمكنك جدولة عمليات نشر البنية التحتية مثل تدميرها ، وإدارة المستخدمين حسب الأدوار والمداخن المنفصلة حسب الفريق والبيئة


الميزات الرئيسية:
SLD هي الطريقة السهلة لاستخدام رمز terrafrom الخاص بك!
تحتاج إلى Docker و Docker-Compse أو النوع (توصي).
استنساخ الريبو SLD
git clone https://github.com/D10S0VSkY-OSS/Stack-Lifecycle-Deployment.gitنشر SLD في K8s مع النوع
cd Stack-Lifecycle-Deployment/play-with-sld/kubernetes
sh kplay.sh startنتيجة:
Starting SLD for play
Creating cluster " kind " ...
✓ Ensuring node image (kindest/node:v1.20.2) ?
✓ Preparing nodes ? ?
✓ Writing configuration
✓ Starting control-plane ?️
✓ Installing CNI ?
✓ Installing StorageClass ?
✓ Joining worker nodes ?
Set kubectl context to " kind-kind "
You can now use your cluster with:
kubectl cluster-info --context kind-kindإنشاء مستخدم init
sh kplay.sh initنتيجة:
kind ok
docker ok
kubectl ok
jq ok
curl ok
init SLD
# ################################################
# Now, you can play with SLD ?️ #
# ################################################
API: http://localhost:5000/docs
DASHBOARD: http://localhost:5000/
---------------------------------------------
username: admin
password: Password08@
---------------------------------------------
قائمة endopints
sh kplay.sh listنتيجة:
kind ok
docker ok
kubectl ok
List endpoints
API: http://localhost:8000/docs
DASHBOARD: http://localhost:5000/تسجيل الدخول إلى لوحة القيادة:

انقر على رابط لوحة القيادة:

أضف حساب السحابة

املأ النموذج بالبيانات المطلوبة. في مثالنا سوف نستخدمه
بشكل افتراضي ، يركض العمالان كقواصي 1 و squad2 لغرض اللعب ، ولكن يمكنك تغييره وتوسيع نطاقه عندما تريد
عندما تضيف حسابًا إلى مزود (AWS ، GCP ، Azure) يتم إنشاء فرقة واحدة ، يجب عليك إنشاء عامل لاسم الفريق الذي تم إنشاؤه ، إذا لم تفعل ذلك ، فسيظل النشر في حالة "معلقة" للقراءة
أضف أخيرًا:
أضف وحدة أو مكدس terraform

البادئات المدعومة: AWS_ ، GCP_ ، Azure_
يمكنك تمرير المستخدم وكلمة المرور كـ https: // username: [email protected]/aws_vpc لـ ssh ، يمكنك تمريره كسر في النشر إلى المستخدم SLD
"*'= يتيح الوصول إلى الجميع ، يمكنك السماح بالوصول إلى واحد أو العديد من الفرق مفصولة بفواصل: Squad1 ، Squad2
https://release.hashicorp.com/terraform/
نشر أول مكدس الخاص بك !!!
قائمة المداخن للنشر

اختر نشر

ستقوم SLD بإنشاء نموذج ديناميكي يعتمد على متغيرات المكدس ، وملء النموذج واضغط على زر النشر

مهم! قم بتعيين نفس الفريق والبيئة التي أنشأناها مسبقًا عند إضافة الحساب (انظر إضافة حساب السحابة)
الآن ، ستتغير حالة المهمة مع تقدم النشر.

يمكنك التحكم في دورة حياة التنفيذ
يمكنك تدمير ، إعادة التنفيذ بأن SLD ستحتفظ بالقيم القديمة أو يمكنك أيضًا تحرير هذه القيم حسب الرغبة.
وأخيراً يمكنك إدارة دورة الحياة برمجياً ، والتعامل مع تدمير / إنشاء البنية التحتية ، وهي ممارسة جيدة لخطة الادخار !!! 
تستخدم SLD الواجهة الخلفية عن بُعد الخاصة بها ، لذلك لا تحتاج إلى تكوين أي واجهات خلفية في Terraform. يوضح المثال التالي تكوين الواجهة الخلفية
terraform {
backend "http" {
address = "http://remote-state:8080/terraform_state/aws_vpc-squad1-develop-vpc_core"
lock_address = "http://remote-state:8080/terraform_lock/aws_vpc-squad1-develop-vpc_core"
lock_method = "PUT"
unlock_address = "http://remote-state:8080/terraform_lock/aws_vpc-squad1-develop-vpc_core"
unlock_method = "DELETE"
}
}
في الوقت الحالي ، يدعم SLD MongoDB و S3 والواجهة الخلفية المحلية (لأغراض الاختبار فقط) لتكوين MongoDB كواجهة خلفية ، يجب عليك تمرير المتغيرات التالية كمعلمات لخدمة الحالة البعيدة:
# docker-compose.yaml
environment:
SLD_STORE: mongodb
SLD_MONGODB_URL: "mongodb:27017/"
MONGODB_USER: admin
MONGODB_PASSWD: admin
# k8s yaml
env:
- name: SLD_STORE
value: mongodb
- name: SLD_MONGODB_URL
value: "mongodb:27017/"
- name: MONGODB_USER
value: admin
- name: MONGODB_PASSWD
value: admin
لتكوين S3 ، يمكنك تمرير مفاتيح AWS و AWS السرية ، في حالة تشغيل SLD في AWS ، يوصى باستخدام الأدوار
env:
- name: SLD_STORE
value: "S3"
- name: SLD_BUCKET
value: "s3-sld-backend-cloud-tf-state"
- name: AWS_ACCESS_KEY
value: ""
- name: AWS_SECRET_ACCESS_KEY
value: ""
لـ Azure Env ، تحتاج إلى تعيين Env التالي
env:
- name: SLD_STORE
value: azure
- name: AZURE_STORAGE_CONNECTION_STRING
value: "DefaultEndpointsProtocol=https;AccountName=<YOUR ACCOUNT>;AccountKey=<YOUR ACCESS KEY>;EndpointSuffix=core.windows.net"
شاهد سلسلة Connection-Configure-Configure-Configure
لمجموعة Google Cloud Storage:
SLD_STORE=gcp
export GOOGLE_APPLICATION_CREDENTIALS="/app/sld-gcp-credentials.json"
استيراد مفتاح حساب خدمة Google إلى K8S Secret
kubectl create secret generic gcp-storage --from-file=~/Downloads/storage.json
تعديل SLD-Remote-State.yml Set GCP تخزين السحابة الخلفية و Secret Mount:
apiVersion: apps/v1
kind: Deployment
metadata:
name: remote-state
labels:
name: remote-state
spec:
replicas: 1
selector:
matchLabels:
name: remote-state
template:
metadata:
labels:
name: remote-state
spec:
subdomain: primary
containers:
- name: remote-state
image: d10s0vsky/sld-remote-state:latest
volumeMounts:
- name: gcp
mountPath: "/app/gcp"
readOnly: true
env:
- name: SLD_STORE
value: gcp
- name: GOOGLE_APPLICATION_CREDENTIALS
value: "/app/gcp/storage.json"
resources:
limits:
memory: 600Mi
cpu: 1
requests:
memory: 300Mi
cpu: 500m
imagePullPolicy: Always
command: ["python3", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080", "--workers", "1"]
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /
port: 8080
httpHeaders:
- name: status
value: healthy
initialDelaySeconds: 60
periodSeconds: 60
volumes:
- name: gcp
secret:
secretName: gcp-storage
لتكون قادرًا على استخدام مخرجات المداخن الأخرى ، يمكنك تكوينها على النحو التالي للمفتاح ALWYS هو نفسه مثل "اسم المهمة"
| اسم المكدس | حساب فرقة | البيئة | نشر الاسم |
|---|---|---|---|
| AWS_VPC | فرقة 1 | يطور | VPC_CORE |
data "terraform_remote_state" "vpc_core" {
backend = "http"
config = {
address = "http://remote-state:8080/terraform_state/aws_vpc-squad1-develop-vpc_core"
}
}
مثال اختبار:
echo "data.terraform_remote_state.vpc_core.outputs"|terraform console
العمال في SLD مسؤولون عن تنفيذ نشر البنية التحتية. يمكنك استخدام عامل واحد أو أكثر لكل حساب أو عدة حسابات في نفس الوقت. كل هذا يتوقف على درجة التوازي والفصل الذي تفكر فيه
# Example k8s worker for account squad1, change this for each of your accounts
# Stack-Lifecycle-Deployment/play-with-sld/kubernetes/k8s/sld-worker-squad1.yml
# Add replicas for increment paralelism
# Add more squad accounts if you want to group accounts in the same worker:
# command: ["celery", "--app", "tasks.celery_worker", "worker", "--loglevel=info", "-c", "1", "-E", "-Q", "squad1,"another_squad_account"]
apiVersion: apps/v1
kind: Deployment
metadata:
name: stack-deploy-worker-squad1
labels:
name: stack-deploy-worker-squad1
spec:
replicas: 1
selector:
matchLabels:
name: stack-deploy-worker-squad1
template:
metadata:
labels:
name: stack-deploy-worker-squad1
spec:
subdomain: primary
containers:
- name: stack-deploy-worker-squad1
image: d10s0vsky/sld-api:latest
imagePullPolicy: Always
env:
- name: TF_WARN_OUTPUT_ERRORS
value: "1"
resources:
limits:
memory: 600Mi
cpu: 1
requests:
memory: 300Mi
cpu: 500m
command: ["celery", "--app", "tasks.celery_worker", "worker", "--loglevel=info", "-c", "1", "-E", "-Q", "squad1"]
# Example docker-compose worker for account squad1, change this for each of your accounts
# Stack-Lifecycle-Deployment/play-with-sld/docker/docker-compose.yml
worker:
image: d10s0vsky/sld-api:latest
entrypoint: ["celery", "--app", "tasks.celery_worker", "worker", "--loglevel=info", "-c", "1", "-E", "-Q", "squad1"]
environment:
BROKER_USER: admin
BROKER_PASSWD: admin
depends_on:
- rabbit
- redis
- db
- remote-state
لدى SLD ثلاثة أدوار تم تكوينها مسبقًا للمستخدمين لإدارة هذا بسهولة.
| أدوار | نِطَاق | وصف |
|---|---|---|
| يودا | عالمي | النطاق العالمي ، يمكن أن ترى جميع الفرق وهي مسؤول كامل |
| darth_vader | فرقة واحدة أو أكثر | الحد من نطاق الفريق ، يمكن أن ترى الفرق المخصصة وأنت مدير كامل لتلك الفرق فقط |
| Stormtrooper | فرقة واحدة أو أكثر | نطاق فرقة الحدود ، يمكن أن ترى فرقًا مخصصة ويمكنها فقط نشر النشر المخصص على فرقة الانتماء |
| R2-D2 | كل ، واحد أو العديد من فرقة | هذا الدور مخصص فقط لتحديد الهوية ويجب أن يرتبط بالمتابعة السابقة ، فإن حالة استخدامها مخصصة لمستخدمي BOT الذين يصلون إلى واجهة برمجة التطبيقات |

المساهمات هي ما يجعل مجتمع المصدر المفتوح مكانًا رائعًا للتعلم وإلهام وإنشاء. أي مساهمات تقدمها موضع تقدير كبير .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) موزعة تحت رخصة معهد ماساتشوستس للتكنولوجيا. انظر LICENSE لمزيد من المعلومات.
مكدس دورة الحياة