Skip to content

Latest commit

 

History

History
175 lines (126 loc) · 2.86 KB

README.md

File metadata and controls

175 lines (126 loc) · 2.86 KB

terraform-provider-concourse

What

A terraform provider for concourse

Why

fly is an amazing tool, but configuration using scripts running fly is not ideal.

Prerequisites

Install go, and terraform.

How to install and use

make install

How to build and test for development

make
make integration-tests

Example terraform

Create a provider (using target from fly)

provider "concourse" {
  target = "target_name"
}

Create a provider (using a local username and password)

Note: this is not basic authentication

provider "concourse" {
  url  = "https://wings.pivotal.io"
  team = "main"

  username = "localuser"
  password = "very-secure-password"
}

Look up all teams

data "concourse_teams" "teams" {
}

output "team_names" {
  value = data.concourse_teams.teams.names
}

Look up a team

data "concourse_team" "my_team" {
  team_name = "main"
}

output "my_team_name" {
  value = data.concourse_team.my_team.team_name
}

output "my_team_owners" {
  value = data.concourse_team.my_team.owners
}

output "my_team_members" {
  value = data.concourse_team.my_team.members
}

output "my_team_pipeline_operators" {
  value = data.concourse_team.my_team.pipeline_operators
}

output "my_team_viewers" {
  value = data.concourse_team.my_team.viewers
}

Look up a pipeline

data "concourse_pipeline" "my_pipeline" {
  team_name     = "main"
  pipeline_name = "pipeline"
}

output "my_pipeline_team_name" {
  value = data.concourse_pipeline.my_pipeline.team_name
}

output "my_pipeline_pipeline_name" {
  value = data.concourse_pipeline.my_pipeline.pipeline_name
}

output "my_pipeline_is_exposed" {
  value = data.concourse_pipeline.my_pipeline.is_exposed
}

output "my_pipeline_is_paused" {
  value = data.concourse_pipeline.my_pipeline.is_paused
}

output "my_pipeline_json" {
  value = data.concourse_pipeline.my_pipeline.json
}

output "my_pipeline_yaml" {
  value = data.concourse_pipeline.my_pipeline.yaml
}

Create a team

Supports owners, members, pipeline_operators, and viewers.

Specify users and groups by prefixing the strings:

  • user:
  • group:
resource "concourse_team" "my_team" {
  team_name = "my-team"

  owners = [
    "group:github:org-name",
    "group:github:org-name:team-name",
    "user:github:tlwr",
  ]

  viewers = [
    "user:github:samrees"
  ]
}

Create a pipeline

resource "concourse_pipeline" "my_pipeline" {
  team_name     = "main"
  pipeline_name = "my-pipeline"

  is_exposed = true
  is_paused  = true

  pipeline_config        = file("pipeline-config.yml")
  pipeline_config_format = "yaml"
}

# OR

resource "concourse_pipeline" "my_pipeline" {
  team_name     = "main"
  pipeline_name = "my-pipeline"

  is_exposed = true
  is_paused  = true

  pipeline_config        = file("pipeline-config.json")
  pipeline_config_format = "json"
}