Difference between revisions of "Terraform provisioner"

From wikieduonline
Jump to navigation Jump to search
 
(13 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>
  
  resource "[[aws_instance]]" "your_web" {
+
  provisioner "file"
  # ...
+
provisioner "[[local-exec]]"
   
+
  provisioner "[[remote-exec]]"
  provisioner "local-exec" {
+
 
    command = "echo The server's IP address is ${self.private_ip}"
+
 
  }
+
 
}
+
== Example ==
  
 +
{{provisioner example}}
  
== DO 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 28: 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

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]

Errors[edit]

See also[edit]

  • https://www.terraform.io/language/resources/provisioners/syntax
  • Advertising: