From 7e6141a1ca8b518b9f3091e1c845ba412ad04469 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 27 Jul 2014 17:03:31 -0700 Subject: [PATCH] website: plugins section, wip --- website/source/docs/plugins/index.html.md | 24 ++++++++++++ website/source/docs/plugins/provider.html.md | 41 ++++++++++++++++++++ website/source/layouts/docs.erb | 9 +++++ 3 files changed, 74 insertions(+) create mode 100644 website/source/docs/plugins/index.html.md create mode 100644 website/source/docs/plugins/provider.html.md diff --git a/website/source/docs/plugins/index.html.md b/website/source/docs/plugins/index.html.md new file mode 100644 index 000000000..24091852e --- /dev/null +++ b/website/source/docs/plugins/index.html.md @@ -0,0 +1,24 @@ +--- +layout: "docs" +page_title: "Plugins" +sidebar_current: "docs-plugins" +--- + +# Plugins + +Terraform is built on a plugin-based architecture. All providers and +provisioners that are used in Terraform configurations are plugins, even +the core types such as AWS and Heroku. Users of Terraform are able to +write new plugins in order to support new functionality in Terraform. + +This section of the documentation gives a high-level overview of how +to write plugins for Terraform. It does not hold your hand through the +process, however, and expects a relatively high level of understanding +of Go, provider semantics, Unix, etc. + +
+Advanced topic! Plugin development is a highly advanced +topic in Terraform, and is not required knowledge for day-to-day usage. +If you don't plan on writing any plugins, we recommend not reading +this section of the documentation. +
diff --git a/website/source/docs/plugins/provider.html.md b/website/source/docs/plugins/provider.html.md new file mode 100644 index 000000000..6b724a289 --- /dev/null +++ b/website/source/docs/plugins/provider.html.md @@ -0,0 +1,41 @@ +--- +layout: "docs" +page_title: "Provider Plugins" +sidebar_current: "docs-plugins-provider" +--- + +# Provider Plugins + +A provider in Terraform is responsible for the lifecycle of a resource: +create, read, update, delete. An example of a provider is AWS, which +can manage resources of type `aws_instance`, `aws_eip`, `aws_elb`, etc. + +The primary reasons to care about provider plugins are: + + * You want to add a new resource type to an existing provider. + + * You want to write a completely new provider for managing resource + types in a system not yet supported. + + * You want to write a completely new provider for custom, internal + systems such as a private inventory management system. + +
+Advanced topic! Plugin development is a highly advanced +topic in Terraform, and is not required knowledge for day-to-day usage. +If you don't plan on writing any plugins, we recommend not reading +this section of the documentation. +
+ +## Coming Soon! + +The documentation for writing custom providers is coming soon. In the +mean time, you can look at how our +[built-in providers are written](https://github.com/hashicorp/terraform/tree/master/builtin). +We recommend copying as much as possible from our providers when working +on yours. + +We're also rapidly working on improving the high-level helpers for +writing providers. We expect that writing providers will become much +easier very shortly, and acknowledge that writing them now is not the +easiest thing to do. diff --git a/website/source/layouts/docs.erb b/website/source/layouts/docs.erb index 6955ea822..24ad5905f 100644 --- a/website/source/layouts/docs.erb +++ b/website/source/layouts/docs.erb @@ -123,6 +123,15 @@ + > + Plugins + + + > Internals