رفتن به محتوا
بازگشت به وبلاگ
خودکارسازی

Jenkins CI/CD برای پایپلاین‌های زیرساخت

ساخت پایپلاین‌های Jenkins برای خودکارسازی زیرساخت: Plan/Apply Terraform، اجرای Ansible، مراحل آزمایش و دروازه‌های تأیید.

آبان ۱۴۰۴
۱۵ دقیقه مطالعه

مقدمه

Jenkins یک سرور اتوماسیون متنباز است که CI/CD را فعال میکند. برای تیمهای زیرساخت، Jenkins تست Ansible playbookها، Terraform planها و استقرارها را خودکار میکند.

نصب Jenkins

BASH
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key |   gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.gpg

apt update && apt install jenkins openjdk-17-jdk
systemctl enable jenkins && systemctl start jenkins

# رمز عبور اولیه
cat /var/lib/jenkins/secrets/initialAdminPassword

Jenkinsfile برای Ansible

GROOVY
pipeline {
    agent any

    stages {
        stage('Syntax Check') {
            steps {
                sh 'ansible-playbook --syntax-check -i inventory/production site.yml'
            }
        }

        stage('Dry Run') {
            steps {
                sh 'ansible-playbook -i inventory/production site.yml --check'
            }
        }

        stage('Deploy') {
            when { branch 'main' }
            input { message "استقرار در تولید؟" }
            steps {
                sh 'ansible-playbook -i inventory/production site.yml'
            }
        }
    }
}

Pipeline برای Terraform

GROOVY
pipeline {
    agent any

    stages {
        stage('Terraform Init') {
            steps { sh 'terraform init -input=false' }
        }
        stage('Terraform Plan') {
            steps { sh 'terraform plan -out=tfplan -input=false' }
        }
        stage('Terraform Apply') {
            when { branch 'main' }
            input { message "اعمال Terraform plan؟" }
            steps { sh 'terraform apply -input=false tfplan' }
        }
    }
}

خلاصه

  • Jenkins انعطافپذیرترین ابزار CI/CD برای اتوماسیون زیرساخت است
  • از Jenkinsfile (pipeline به عنوان کد) در مخزن خود استفاده کنید
  • دروازههای تأیید قبل از استقرار در تولید اضافه کنید
  • هرگز اسرار را در Jenkinsfileها hardcode نکنید