Skip to content

achanupgrade/terraform-provider-slack

This branch is up to date with jmatsu/terraform-provider-slack:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5e67365 · Jun 27, 2022
Jun 27, 2022
Jun 26, 2022
May 8, 2020
Jun 27, 2022
Jun 26, 2022
Mar 30, 2019
Nov 18, 2019
Jun 21, 2022
Nov 25, 2020
Jun 27, 2022
Jun 26, 2022
Jun 26, 2022
Jun 26, 2022
Jun 26, 2022

Repository files navigation

terraform-provider-slack

CircleCI

This is a Terraform provider for Slack

Installation

ref: https://registry.terraform.io/providers/jmatsu/slack/latest

Or build a binary by yourself.

$ go clone ... && cd /path/to/project
$ go mod download
$ go build .
$ mv terraform-provider-slack ~/.terraform.d/plugins/[architecture name]/

See https://www.terraform.io/docs/configuration/providers.html#third-party-plugins for more details.

Requirements

  • Terraform >= v0.12.0 (v0.11.x may work but not supported actively)
  • Scope: users:read,users:read.email,usergroups:read,usergroups:write,channels:read,channels:write,groups:read,groups:write
    • users:read.email is required since v0.6.0

Limitations

Several resources that require Slack Plus or Enterprise Grid are not supported. e.g. a slack user (not a data source)

Resources

provider "slack" {
  # A token must be of an user. A bot user's token cannot be used for usergroup api call.
  # To get a token, Botkit is one of recommended methods.
  token = "SLACK_TOKEN"
}

data "slack_user" "..." {
  query_type = "id" or "email"
  query_value = "<user id>" or "<email>"
}

data "slack_conversation" "..." {
  channel_id = <channel id>
}

data "slack_usergroup" "..." {
  usergroup_id = <usergroup id>
}

resource "slack_conversation" "..." {
  name = "<name>"
  topic = "..."
  purpose = "..."
  action_on_destroy = "<archive|none>" # this is required since v0.8.0
  is_archive = <true|false>
  is_private = <true|false>
}

resource "slack_usergroup" "..." {
  handle      = "<mention name>"
  name        = "<name>"
  description = "..."
  auto_type   = "" or "admins" or "owners"
}

resource "slack_usergroup_members" "..." {
  usergroup_id = "<usergroup id>"
  members = ["<user id>", ...]
}

resource "slack_usergroup_channels" "..." {
  usergroup_id = "<usergroup id>"
  channels = ["<channel id>", ...]
}

Import

$ terraform import slack_conversation.<name> <channel id>
$ terraform import slack_usergroup.<name> <usergroup id>
$ terraform import slack_usergroup_members.<name> <usergroup id>
$ terraform import slack_usergroup_channels.<name> <usergroup id>

Trouble Shooting

Show provider's debug logs

Enable the provider logging. All custom logs should have provider=jmatsu/slack in its body.

# The following expects you are using `slack` as provider name
TF_LOG=json TF_LOG_PROVIDER_SLACK=TRACE ...cmd

Development

Source codes consist of an entrypoint main.go and slack/**.go.

Try the built provider in projects

Build and install the provider into your machine.

Currently, only ~/.terraform.d is supported.

# choose OS_NAME and ARCH of your machine
make install-${OS_NAME}_${ARCH}

Use the built provider by specifying the custom source.

terraform {
  required_providers {
    slack = {
      # please make sure ~/.terraform.d/plugins/github.com/jmatsu/slack/${version}/${OS_NAME}_${ARCH}/terraform-provider-slack_v${version} exists and it's executable.
      source = "github.com/jmatsu/slack"
      version = "${version}"
    }
  }
}

Other commands

# Build the binary
make build

# Run test
make test

# Apply gofmt (overwrite mode)
make fmt

Release

CI will build and archive the release artifacts to GitHub Releases and terraform provider registry.

version="/\d\.\d\.\d/"

# please make sure your working branch is same to the default branch.
git tag "v$version"
git push "v$version"

LICENSE

Under MIT

Maintainers

@jmatsu, @billcchung

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 96.8%
  • Shell 2.3%
  • Makefile 0.9%