Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save descrepes/a4d86d6770cc6982b7a9c3d8a8d2f05a to your computer and use it in GitHub Desktop.
Save descrepes/a4d86d6770cc6982b7a9c3d8a8d2f05a to your computer and use it in GitHub Desktop.
---
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: terraform
namespace: argo
spec:
templates:
- name: plan
inputs:
artifacts:
- name: terraform
path: /home/terraform
git:
repo: https://github.com/descrepes/terraform-argo-vmpool-demo.git
depth: 1
script:
imagePullPolicy: "Always"
image: descrepes/terraform:0.12.9-demo
command: ["sh"]
source: |
export ARM_ACCESS_KEY=ACCESS_KEY
export ARM_CLIENT_ID=CLIENT_ID
export ARM_CLIENT_SECRET=CLIENT_SECRET
export ARM_SUBSCRIPTION_ID=SUBSCRIPTION_ID
export ARM_TENANT_ID=TENANT_ID
export CLOUDFLARE_API_TOKEN=MYTOKEN
export TF_VAR_cloudflare_zone_id=MYZONEID
export TF_VAR_pingdom_user=MYUSERNAME
export TF_VAR_pingdom_password=MYPASSWORD
export TF_VAR_pingdom_api_key=MYAPIKEY
cp /home/terraform/*.tf /home/myuser/
/bin/terraform init -input=false /home/myuser
/bin/terraform plan -parallelism=2 -input=false -no-color -out=/home/myuser/tfclientsplan /home/myuser >> /tmp/terraform-change.log
outputs:
artifacts:
- name: terraform-plan
path: /home/myuser/
archive:
none: {}
- name: terraform-log
path: /tmp/terraform-change.log
archive:
none: {}
- name: apply
inputs:
artifacts:
- name: terraform-plan
path: /home/terraform
serviceAccountName: argo
script:
imagePullPolicy: "Always"
image: descrepes/terraform:0.12.9-demo
command: ["sh"]
source: |
export ARM_ACCESS_KEY=ACCESS_KEY
export ARM_CLIENT_ID=CLIENT_ID
export ARM_CLIENT_SECRET=CLIENT_SECRET
export ARM_SUBSCRIPTION_ID=SUBSCRIPTION_ID
export ARM_TENANT_ID=TENANT_ID
export CLOUDFLARE_API_TOKEN=MYTOKEN
export TF_VAR_cloudflare_zone_id=MYZONEID
export TF_VAR_pingdom_user=MYUSERNAME
export TF_VAR_pingdom_password=MYPASSWORD
export TF_VAR_pingdom_api_key=MYAPIKEY
/bin/terraform apply -input=false -parallelism=2 -no-color /home/terraform/tfclientsplan
- name: approve
suspend: {}
- name: update
dag:
tasks:
- name: plan
template: plan
outputs:
artifacts:
- name: terraform-plan
path: /home/myuser/
- name: approve
dependencies: [plan]
template: approve
- name: apply
template: apply
dependencies: [plan, approve]
arguments:
artifacts:
- name: terraform-plan
from: "{{tasks.plan.outputs.artifacts.terraform-plan}}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment