Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/terra-farm/terraform-provider-octopus
Octopus provider for Terraform
https://github.com/terra-farm/terraform-provider-octopus
octopus octopus-deploy terraform terraform-provider
Last synced: 2 months ago
JSON representation
Octopus provider for Terraform
- Host: GitHub
- URL: https://github.com/terra-farm/terraform-provider-octopus
- Owner: terra-farm
- License: mit
- Created: 2016-06-20T04:03:05.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-11-30T19:18:52.000Z (about 5 years ago)
- Last Synced: 2023-08-19T03:33:31.658Z (over 1 year ago)
- Topics: octopus, octopus-deploy, terraform, terraform-provider
- Language: Go
- Homepage:
- Size: 47.9 KB
- Stars: 22
- Watchers: 5
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# terraform-octopus
A plugin for Terraform to control / integrate with [Octopus Deploy](https://octopus.com/).This is a work in progress. More providers and data-sources are planned, as well as a [Provisioner](https://www.terraform.io/docs/provisioners/index.html) to install the Octopus tentacle.
Tested against Octopus Deploy v3.3.17.
The following resource types are currently supported:
* `octopus_environment`: Creates and manages an Octopus Deploy environment
* `octopus_variable`: Creates and manages an Octopus Deploy variable (currently only project-level variables are supported)Note that variables are matched on both name and combined scopes (Environments, Roles, Machines, Actions). If a variable already exists with the specified name and scopes, the provider will start managing the existing variable.
The following data-source types are currently supported:
* `octopus_environment`: Tracks an existing Octopus Deploy environment
* `octopus_machine`: Tracks an existing Octopus Deploy machine
* `octopus_project`: Tracks an existing Octopus Deploy project
* `octopus_variable`: Tracks an existing Octopus Deploy variable (currently only project-level variables are supported)Data-sources are similar to variables, except they are read-only. The provider will read and track their state but never modify it.
To get started:
* On windows, create / update `$HOME\terraform.rc`
* On Linux / OSX, create / update `~/.terraformrc`And add the following contents:
```hcl
providers {
octopus = "path-to-the-folder/containing/terraform-provider-octopus"
}
```Create a folder containing a single `.tf` file:
```hcl
#
# This configuration will create an Octopus environment called "MyEnvironment" and configure a project-level variable named "MyVariable" to be scoped to it.
#provider "octopus" {
server_url = "https://my-octopus-server/"
api_key = "my-octopus-api-key"
}# Projects are a data source - the provider can read from them but not create or manage them.
data "octopus_project" "my_project" {
slug = "terraformtest" # The last segment of the URL in the browser when viewing the project home page.
}data "octopus_machine" "my_machine" {
slug = "Machines-351" # The last segment of the URL in the browser when viewing the machine details home page.
}resource "octopus_environment" "my_environment" {
name = "MyEnvironment"
}resource "octopus_variable" "my_variable" {
# This is the Id (or slug) of the project in which the variable is defined.
project = "${data.octopus_project.my_project.id}"name = "MyVariable"
value = "Hello World"# The scopes (environment, role, machine, action) to which the variable applies.
environments = ["${octopus_environment.my_environment.id}"]
}
```1. Run `terraform plan -out tf.plan`.
2. Verify that everything looks ok.
3. Run `terraform apply tf.plan`
4. Have a look around and
5. Run `terraform show` to inspect the current state.
6. when it's time to clean up...
7. Run `terraform plan -destroy -out tf.plan`
8. Verify that everything looks ok.
9. Run `terraform apply tf.plan`