Skip to content
Terraform provisioner for Online.net rescue mode
Go Shell Makefile
Branch: master
Clone or download
Latest commit 8bfef4e May 27, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
rescue Add rescue provisoner Oct 3, 2018
scripts Add rescue provisoner Oct 3, 2018
vendor Revendor May 24, 2019
.gitignore Add rescue provisoner Oct 3, 2018
.lookout.yml Add rescue provisoner Oct 3, 2018
.travis.yml vendored in dependencies May 24, 2019
LICENSE Add licese Sep 28, 2018
Makefile Add rescue provisoner Oct 3, 2018
README.md
go.mod go mod tidy May 24, 2019
go.sum go mod tidy May 24, 2019
main.go Add rescue provisoner Oct 3, 2018

README.md

Terraform Provisioner for Online.net server rescue mode

Requirements

  • Terraform 0.10.x
  • Go 1.8 (to build the provider plugin)

About The Provisioner

This provisioner is built to enable the Online.net rescue mode on a server and then execute actions to it via remote-exec when it is being created.
This can be used to for example format the disks or install a specific OS.

Building The Provisioner

Clone repository to: $GOPATH/src/github.com/src-d/terraform-provisioner-online-rescue

$ mkdir -p $GOPATH/src/github.com/scr-d; cd $GOPATH/src/github.com/src-d
$ git clone git@github.com:src-d/terraform-provisioner-online-rescue

Enter the provider directory and build the provider

$ cd $GOPATH/src/github.com/src-d/terraform-provisioner-online-rescue
$ make build

Using the provisioner

resource "online_server" "dedibox" {
    provisioner "online-rescue" {
        "enabled" = true
        "server" = "${online_server.dedibox.id}"
        "image" = "ubuntu-18.04_amd64"
        "credentials_dir" = "/tmp/${online_server.dedibox.id}"
    }

    // the following is a hack as provisioners can not output data
    connection {
        host = "${file("/tmp/${online_server.dedibox.id}/ip")}"
        type     = "ssh"
        user     = "${file("/tmp/${online_server.dedibox.id}/username")}"
        password = "${file("/tmp/${online_server.dedibox.id}/password")}"
    }

    provisioner "remote-exec" {
        inline = [
        "mkfs.ext4 /dev/sda",
        ]
    }

    provisioner "online-rescue" {
        "enabled" = true
        "server" = "${online_server.dedibox.id}"
    }
}

Developing the Provisioner

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.8+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin to your $PATH.

To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.

$ make build
...
$ $GOPATH/bin/terraform-provisioner-online-rescue
...

In order to test the provider, you can simply run make test.

$ make test

In order to run the full suite of Acceptance tests, run make testacc.

Note: Acceptance tests create real resources, and often cost money to run.

$ make testacc
You can’t perform that action at this time.