kubernetesterraformtekton

terraform-cli : Duplicate value: "step-init". Maybe missing or invalid Task default/terraform-cli error


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

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


Solution

  • 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.