CMDB-Server/ec2-user/deploy/userXX/step1/Jenkinsfile

67 lines
1.9 KiB
Plaintext
Raw Normal View History

2025-07-03 17:24:43 +09:00
pipeline {
agent any
environment {
AWS_ACCESS_KEY_ID = credentials('aws-access-key-id') // JenkinsのCredentialで設定したキー
AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key') // 同じくCredentialで設定したシークレットキー
PUBLIC_IP = '' //WebサーバーのパブリックIP
PRIVATE_IP = '' //WebサーバーのプライベートIP
}
options {
skipDefaultCheckout(true)
}
stages{
stage("checkout") {
steps {
// Iacコードを取得
checkout scm
}
}
stage("terraform init") {
steps {
// 初期化
dir('step1'){
sh "terraform init"
}
}
}
stage("terraform plan") {
steps {
// 実行計画
dir('step1'){
sh "terraform plan -out=plan.out"
}
}
}
stage("terraform apply") {
steps {
// 実行
dir('step1'){
sh "terraform apply plan.out"
}
}
}
stage('Get Terraform Output') {
steps {
// ファイル出力
script {
dir('step1'){
PUBLIC_IP = sh(returnStdout: true, script: 'terraform output -raw instance_public_ip').trim()
PRIVATE_IP = sh(returnStdout: true, script: 'terraform output -raw instance_private_ip').trim()
}
dir("${env.WORKSPACE}/step2"){
def data1 = "[web]\n" + PRIVATE_IP + "\n"
def var1 = "ansible_port=22\n"
def var2 = "ansible_user=ec2-user\n"
def var3 = "ansible_ssh_private_key_file=~/.ssh_key\n"
def data2 = "[web:vars]\n" + var1 + var2 + var3
def data = data1 + "\n" + data2
writeFile(file: 'host', text: data)
}
}
}
}
}
}