Skip to content
This repository has been archived by the owner on Nov 14, 2022. It is now read-only.

nicgrayson/terraform-provider-marathon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

723723b · Jul 21, 2017
May 22, 2017
May 22, 2017
Jul 21, 2017
Jul 21, 2017
May 9, 2017
Oct 10, 2016
May 22, 2017
Jul 21, 2017
May 22, 2017
May 22, 2017
May 22, 2017
Jul 20, 2017
May 22, 2017
Apr 17, 2017

Repository files navigation

Marathon Terraform Provider

Build Status

Install

$ go get github.com/nicgrayson/terraform-provider-marathon

Usage

Provider Configuration

Use a tfvar file or set the ENV variable

$ export TF_VAR_marathon_url="http://marthon.domain.tld:8080"
variable "marathon_url" {}

provider "marathon" {
  url = "${var.marathon_url}"
}

If Marathon endpoint requires basic auth (with TLS, hopefully), optionally include username and password:

$ export TF_VAR_marathon_url="https://marthon.domain.tld:8443"
$ export TF_VAR_marathon_user="username"
$ export TF_VAR_marathon_password="password"
variable "marathon_url" {}
variable "marathon_user" {}
variable "marathon_password" {}

provider "marathon" {
  url = "${var.marathon_url}"
  basic_auth_user = "${var.marathon_user}"
  basic_auth_password = "${var.marathon_password}"
}

To use Marathon from a DCOS cluster you need to get a token and include the framework path in the Marathon URL:

export TF_VAR_marathon_url="http://dcos.domain.tld/service/marathon"
export TF_VAR_dcos_token="<authentication-token>"
variable "marathon_url" {}
variable "dcos_token" {}

provider "marathon" {
  url        = "${var.marathon_url}"
  dcos_token = "${var.dcos_token}"
}

If you have an additional Marathon instance called marathon-alice set marathon_url to http://dcos.domain.tld/service/marathon-alice. Refer to the go-marathon documentation to get details about custom paths in Marathon URLs.

Basic Usage

resource "marathon_app" "hello-world" {
  app_id= "/hello-world"
  cmd = "echo 'hello'; sleep 10000"
  cpus = 0.01
  instances = 1
  mem = 16
  ports = [0]
}

Docker Usage

resource "marathon_app" "docker-hello-world" {
  app_id = "/docker-hello-world"
  container {
    docker {
      image = "hello-world"
    }
  }
  cpus = 0.01
  instances = 1
  mem = 16
  ports = [0]
}

Full Example

terraform file

Development

Build

$ go install

Test

$ export MARATHON_URL="http://marthon.domain.tld:8080"
$ ./test.sh

Updating dependencies

This project uses godep to manage dependencies. If you're using Golang 1.6+, to build, nothing needs done. Please refer to https://devcenter.heroku.com/articles/go-dependencies-via-godep for help with updating and restoring godeps.