Difference between revisions of "Terraform provisioner"
Jump to navigation
Jump to search
↑ https://www.terraform.io/language/resources/provisioners/syntax
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | * https://www.terraform.io/language/resources/provisioners/syntax | |
* https://www.terraform.io/docs/language/resources/provisioners/syntax.html | * https://www.terraform.io/docs/language/resources/provisioners/syntax.html | ||
Provisioners are a Last Resort. <ref>https://www.terraform.io/language/resources/provisioners/syntax</ref> | Provisioners are a Last Resort. <ref>https://www.terraform.io/language/resources/provisioners/syntax</ref> | ||
+ | |||
+ | provisioner "file" | ||
+ | provisioner "[[local-exec]]" | ||
+ | provisioner "[[remote-exec]]" | ||
+ | |||
== Example == | == Example == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | {{provisioner example}} | ||
− | == | + | == Digital Ocean Example == |
* https://www.digitalocean.com/community/tutorials/how-to-use-ansible-with-terraform-for-configuration-management | * https://www.digitalocean.com/community/tutorials/how-to-use-ansible-with-terraform-for-configuration-management | ||
provisioner "[[remote-exec]]" { | provisioner "[[remote-exec]]" { | ||
inline = ["sudo apt update", "sudo apt install python3 -y", "echo Done!"] | inline = ["sudo apt update", "sudo apt install python3 -y", "echo Done!"] | ||
− | + | ||
connection { | connection { | ||
host = self.ipv4_address | host = self.ipv4_address | ||
Line 32: | Line 31: | ||
command = "[[ANSIBLE_HOST_KEY_CHECKING]]=False ansible-playbook -u root -i '${self.ipv4_address},' --private-key ${var.pvt_key} -e 'pub_key=${var.pub_key}' apache-install.yml" | command = "[[ANSIBLE_HOST_KEY_CHECKING]]=False ansible-playbook -u root -i '${self.ipv4_address},' --private-key ${var.pvt_key} -e 'pub_key=${var.pub_key}' apache-install.yml" | ||
} | } | ||
− | |||
== Related == | == Related == | ||
* [[Terraform Associate]]: Explain when to use and not use [[Terraform provisioner|provisioners]] and when to use <code>[[local-exec]]</code> or <code>[[remote-exec]]</code> | * [[Terraform Associate]]: Explain when to use and not use [[Terraform provisioner|provisioners]] and when to use <code>[[local-exec]]</code> or <code>[[remote-exec]]</code> | ||
+ | * [[Amazon EC2]]: [[user_data]] or [[user_data_base64]] on [[aws_instance]], [[aws_launch_template]], and [[aws_launch_configuration]]. | ||
+ | |||
+ | == Errors == | ||
+ | * <code>[[Error: Unsupported block type]]</code> | ||
== See also == | == See also == | ||
− | * {{Terraform}} | + | * {{Terraform provisioners}} |
+ | * {{Terraform resources}} | ||
+ | |||
[[Category:Terraform]] | [[Category:Terraform]] |
Latest revision as of 08:58, 31 March 2023
- https://www.terraform.io/language/resources/provisioners/syntax
- https://www.terraform.io/docs/language/resources/provisioners/syntax.html
Provisioners are a Last Resort. [1]
provisioner "file" provisioner "local-exec" provisioner "remote-exec"
Example[edit]
resource "aws_instance" "your_web" { # ... provisioner "local-exec" { command = "echo The server's IP address is ${self.private_ip}" } }
Digital Ocean Example[edit]
provisioner "remote-exec" { inline = ["sudo apt update", "sudo apt install python3 -y", "echo Done!"] connection { host = self.ipv4_address type = "ssh" user = "root" private_key = file(var.pvt_key) } } provisioner "local-exec" { command = "ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -u root -i '${self.ipv4_address},' --private-key ${var.pvt_key} -e 'pub_key=${var.pub_key}' apache-install.yml" }
Related[edit]
- Terraform Associate: Explain when to use and not use provisioners and when to use
local-exec
orremote-exec
- Amazon EC2: user_data or user_data_base64 on aws_instance, aws_launch_template, and aws_launch_configuration.
Errors[edit]
See also[edit]
- Terraform provisioner,
self., local-exec, remote-exec, file
- Terraform resources, Terraform providers, Terraform provisioner,
random_password, random_string, null_resource
Advertising: