From 831bae862469424fa7ef5ddbbd28d773e38d50ee Mon Sep 17 00:00:00 2001 From: Joe Topjian Date: Wed, 23 Mar 2016 05:00:34 +0000 Subject: [PATCH] provider/cobbler: Cobbler Provider This introduces a provider for Cobbler. Cobbler manages bare-metal deployments and, to some extent, virtual machines. This initial commit supports the following resources: distros, profiles, systems, kickstart files, and snippets. --- builtin/bins/provider-cobbler/main.go | 12 + .../cobbler/acceptance_env/deploy.sh | 86 ++ builtin/providers/cobbler/config.go | 33 + builtin/providers/cobbler/provider.go | 76 ++ builtin/providers/cobbler/provider_test.go | 46 + .../cobbler/resource_cobbler_distro.go | 224 +++++ .../cobbler/resource_cobbler_distro_test.go | 129 +++ .../resource_cobbler_kickstart_file.go | 83 ++ .../resource_cobbler_kickstart_file_test.go | 79 ++ .../cobbler/resource_cobbler_profile.go | 369 ++++++++ .../cobbler/resource_cobbler_profile_test.go | 149 +++ .../cobbler/resource_cobbler_snippet.go | 83 ++ .../cobbler/resource_cobbler_snippet_test.go | 79 ++ .../cobbler/resource_cobbler_system.go | 851 ++++++++++++++++++ .../cobbler/resource_cobbler_system_test.go | 380 ++++++++ .../providers/cobbler/index.html.markdown | 45 + .../providers/cobbler/r/distro.html.markdown | 84 ++ .../cobbler/r/kickstart_file.html.markdown | 29 + .../providers/cobbler/r/profile.html.markdown | 92 ++ .../providers/cobbler/r/snippet.html.markdown | 29 + .../providers/cobbler/r/system.html.markdown | 189 ++++ website/source/layouts/cobbler.erb | 38 + website/source/layouts/docs.erb | 6 +- 23 files changed, 3190 insertions(+), 1 deletion(-) create mode 100644 builtin/bins/provider-cobbler/main.go create mode 100644 builtin/providers/cobbler/acceptance_env/deploy.sh create mode 100644 builtin/providers/cobbler/config.go create mode 100644 builtin/providers/cobbler/provider.go create mode 100644 builtin/providers/cobbler/provider_test.go create mode 100644 builtin/providers/cobbler/resource_cobbler_distro.go create mode 100644 builtin/providers/cobbler/resource_cobbler_distro_test.go create mode 100644 builtin/providers/cobbler/resource_cobbler_kickstart_file.go create mode 100644 builtin/providers/cobbler/resource_cobbler_kickstart_file_test.go create mode 100644 builtin/providers/cobbler/resource_cobbler_profile.go create mode 100644 builtin/providers/cobbler/resource_cobbler_profile_test.go create mode 100644 builtin/providers/cobbler/resource_cobbler_snippet.go create mode 100644 builtin/providers/cobbler/resource_cobbler_snippet_test.go create mode 100644 builtin/providers/cobbler/resource_cobbler_system.go create mode 100644 builtin/providers/cobbler/resource_cobbler_system_test.go create mode 100644 website/source/docs/providers/cobbler/index.html.markdown create mode 100644 website/source/docs/providers/cobbler/r/distro.html.markdown create mode 100644 website/source/docs/providers/cobbler/r/kickstart_file.html.markdown create mode 100644 website/source/docs/providers/cobbler/r/profile.html.markdown create mode 100644 website/source/docs/providers/cobbler/r/snippet.html.markdown create mode 100644 website/source/docs/providers/cobbler/r/system.html.markdown create mode 100644 website/source/layouts/cobbler.erb diff --git a/builtin/bins/provider-cobbler/main.go b/builtin/bins/provider-cobbler/main.go new file mode 100644 index 000000000..73d46b96e --- /dev/null +++ b/builtin/bins/provider-cobbler/main.go @@ -0,0 +1,12 @@ +package main + +import ( + "github.com/hashicorp/terraform/builtin/providers/cobbler" + "github.com/hashicorp/terraform/plugin" +) + +func main() { + plugin.Serve(&plugin.ServeOpts{ + ProviderFunc: cobbler.Provider, + }) +} diff --git a/builtin/providers/cobbler/acceptance_env/deploy.sh b/builtin/providers/cobbler/acceptance_env/deploy.sh new file mode 100644 index 000000000..09742d84d --- /dev/null +++ b/builtin/providers/cobbler/acceptance_env/deploy.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +# This script assumes Ubuntu 14.04 is being used. +# It will create a standard Cobbler environment that can be used for acceptance testing. + +sudo apt-get update +sudo apt-get install -y git make mercurial + +cd +echo 'export PATH=$PATH:$HOME/terraform:$HOME/go/bin' >> ~/.bashrc +export PATH=$PATH:$HOME/terraform:$HOME/go/bin + +sudo wget -O /usr/local/bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme +sudo chmod +x /usr/local/bin/gimme +/usr/local/bin/gimme 1.6 >> ~/.bashrc +eval "$(/usr/local/bin/gimme 1.6)" + +mkdir ~/go +echo 'export GOPATH=$HOME/go' >> ~/.bashrc +echo 'export GO15VENDOREXPERIMENT=1' >> ~/.bashrc +export GOPATH=$HOME/go +source ~/.bashrc + +go get github.com/tools/godep +go get github.com/hashicorp/terraform +cd $GOPATH/src/github.com/hashicorp/terraform +godep restore + +# Cobbler +sudo apt-get install -y cobbler cobbler-web debmirror dnsmasq + +sudo tee /etc/cobbler/modules.conf < + <% content_for :sidebar do %> + + <% end %> + + <%= yield %> + <% end %> diff --git a/website/source/layouts/docs.erb b/website/source/layouts/docs.erb index 510637114..3a32f5c88 100644 --- a/website/source/layouts/docs.erb +++ b/website/source/layouts/docs.erb @@ -165,6 +165,10 @@ CloudStack + > + Cobbler + + > Consul @@ -256,7 +260,7 @@ > TLS - + > Triton