0

I've been attempting to use Tekton to deploy some AWS infrastructure via Terraform but not having much success.

The pipeline clones a Github repo containing TF code , it then attempts to use the terraform-cli task to provision the AWS infrastructure. For initial testing I just want to perform the initial TF init and provision the AWS VPC.

Expected behaviour

  • Clone Github Repo
  • Perform Terraform Init
  • Create the VPC using targeted TF apply

Actual Result

task terraform-init has failed: failed to create task run pod "my-infra-pipelinerun-terraform-init": Pod "my-infra-pipelinerun-terraform-init-pod" is invalid: spec.initContainers[1].name: Duplicate value: "step-init". Maybe missing or invalid Task default/terraform-cli pod for taskrun my-infra-pipelinerun-terraform-init not available yet Tasks Completed: 2 (Failed: 1, Cancelled 0), Skipped: 1

Steps to Reproduce the Problem

Prerequisites: Install Tekton command line tool, git-clone and terraform-cli

create this pipeline in Minikube

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: my-infra-pipeline
spec:
  description: Pipeline for TF deployment
  params:
  - name: repo-url
    type: string
    description: Git repository URL
  - name: branch-name
    type: string
    description: The git branch
  workspaces:
  - name: tf-config
    description: The workspace where the tf config code will be stored
  tasks:
  - name: clone-repo
    taskRef:
      name: git-clone
    workspaces:
    - name: output
      workspace: tf-config
    params:
    - name: url
      value: $(params.repo-url) 
    - name: revision
      value: $(params.branch-name)
  - name: terraform-init
    runAfter: ["clone-repo"]
    taskRef:
      name: terraform-cli
    workspaces:
    - name: source
      workspace: tf-config
    params:
     - name: terraform-secret
       value: "tf-auth"
     - name: ARGS
       value:
         - init
  - name: build-vpc
    runAfter: ["terraform-init"]
    taskRef:
      name: terraform-cli
    workspaces:
    - name: source
      workspace: tf-config
    params:
     - name: terraform-secret
       value: "tf-auth"
     - name: ARGS
       value:
         - apply
         - "-target=aws_vpc.vpc -auto-approve"

Run the pipeline by creating a pipelinerun resource in k8s

Review the logs > tkn pipelinerun logs my-tf-pipeline -a

Additional Information

Pipeline version: v0.35.1

800711
  • 3
  • 2
  • Can you add the Pod specification to the question? – Marko E Jun 15 '22 at 12:37
  • @MarkoE - for which Pod? Tekton creates a pod for the past part of the pipeline, the git clone, but it doesn't successfully create the pod for the part that's failing. I'm not generating the pod specifications, this is done by Tekton. – 800711 Jun 15 '22 at 13:03

1 Answers1

1

There is a known issue regarding "step-init" in some earlier versions - I suggest you upgrade to latest version (0.36.0) and try again.

AlRal
  • 216
  • 3
  • 10