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) } } } } } }