67 lines
1.9 KiB
Groovy
67 lines
1.9 KiB
Groovy
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|