terraform/website/docs/provisioners/null_resource.html.markdown

62 lines
1.9 KiB
Markdown
Raw Normal View History

2015-10-27 21:28:37 +01:00
---
layout: "language"
page_title: "Provisioners Without a Resource"
2015-10-27 21:28:37 +01:00
sidebar_current: "docs-provisioners-null-resource"
description: |-
The `null_resource` is a resource allows you to configure provisioners that
are not directly associated with a single existing resource.
2015-10-27 21:28:37 +01:00
---
# Provisioners Without a Resource
2015-10-27 21:28:37 +01:00
[null]: https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource
2015-10-27 21:28:37 +01:00
If you need to run provisioners that aren't directly associated with a specific
resource, you can associate them with a `null_resource`.
2015-10-27 21:28:37 +01:00
Instances of [`null_resource`][null] are treated like normal resources, but they
don't do anything. Like with any other resource, you can configure
[provisioners](/docs/provisioners/index.html) and [connection
details](/docs/provisioners/connection.html) on a `null_resource`. You can also
use its `triggers` argument and any meta-arguments to control exactly where in
the dependency graph its provisioners will run.
2015-10-27 21:28:37 +01:00
## Example usage
```hcl
2015-10-27 21:28:37 +01:00
resource "aws_instance" "cluster" {
count = 3
# ...
2015-10-27 21:28:37 +01:00
}
resource "null_resource" "cluster" {
# Changes to any instance of the cluster requires re-provisioning
triggers = {
2015-10-27 21:28:37 +01:00
cluster_instance_ids = "${join(",", aws_instance.cluster.*.id)}"
}
# Bootstrap script can run on any instance of the cluster
# So we just choose the first in this case
connection {
host = "${element(aws_instance.cluster.*.public_ip, 0)}"
}
provisioner "remote-exec" {
# Bootstrap script called with private_ip of each node in the cluster
2015-10-27 21:28:37 +01:00
inline = [
"bootstrap-cluster.sh ${join(" ", aws_instance.cluster.*.private_ip)}",
2015-10-27 21:28:37 +01:00
]
}
}
```
## Argument Reference
In addition to meta-arguments supported by all resources, `null_resource`
supports the following specific arguments:
2015-10-27 21:28:37 +01:00
* `triggers` - A map of values which should cause this set of provisioners to
re-run. Values are meant to be interpolated references to variables or
2015-10-27 21:28:37 +01:00
attributes of other resources.