我們來實際用使用者資料設定虛擬機,以下是預計要讓使用者資料處理的工作:
terraform
的使用者建立使用者資料的檔案 user_data.yaml
#cloud-config
# create users
users:
- default
- name: terraform
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
# install nginx
package_update: true
packages:
- nginx
# put html file
write_files:
- path: /var/www/html/terraform.html
content: |
<h1>Provisioning via Terraform</h1>
使用 template_file
這個 data
區塊來載入 user_data.yaml
,再把載入的資料放到 aws_instance
的 user_data
引數中。
data
template_file
的引數:
file()
函數來載入檔案。上面的設定都放在 main.tf
裡面,完整檔案可以參考: https://github.com/nyogjtrc/practice-terraform/tree/master/web-server-user-data
data "template_file" "user_data" {
template = file("user_data.yaml")
}
resource "aws_instance" "web" {
ami = var.ami
instance_type = "t2.micro"
key_name = aws_key_pair.practice.id
vpc_security_group_ids = [
aws_security_group.ssh.id,
aws_security_group.web.id,
]
subnet_id = aws_subnet.this.id
user_data = data.template_file.user_data.rendered
tags = {
Name = "Web-Terraform"
topic = "web-server-user-data"
}
}
執行指令 terraform apply
$ terraform apply
...
Apply complete! Resources: 8 added, 0 changed, 0 destroyed.
Outputs:
vpc_id = vpc-0db96967262b14fcf
web_instance_id = i-008d3a7371fba33b2
web_public_ip = 18.177.119.161
使用者資料是在虛擬機建立之後才執行的,所以需要稍微等一下
aws 自動分配了 18.177.119.161 給虛擬機,在瀏覽器開啟 http://18.177.119.161/terraform.html 就可以看到我們剛剛放上去的檔案