amazon-web-services - 如何在应用期间使用 terraform 创建 ec2 后运行脚本?
问题描述
在 terraform 中有一个在 aws 中创建 EC2 机器的示例。
# Create a new instance of the latest Ubuntu 20.04 on an
# t3.micro node with an AWS Tag naming it "HelloWorld"
provider "aws" {
region = "us-west-2"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
tags = {
Name = "HelloWorld"
}
}
但是我也可以在里面运行一些脚本吗?像安装詹金斯?安装 docker,或者只是运行命令:sudo yum update -y
在 terraform 应用操作期间?
如果是这样,我会很适合这样的例子或指导资源。
解决方案
还有 Provisioners 的选项,但 Terraform 有一个注释
/// 来自 TF 文档 /// 注意:Provisioners 只能作为最后的手段。对于最常见的情况,有更好的选择。有关更多信息,请参阅主供应商页面。///
请在决定之前查看这些链接: https ://www.terraform.io/docs/provisioners/index.html https://www.terraform.io/docs/provisioners/remote-exec.html
无论如何,我发布了一个简单的例子。
resource "aws_instance" "WebServer" {
ami = "ami-SomeValid_AMI_ID"
instance_type = "t2.micro"
key_name = "SomeValid_keypair"
provisioner "remote-exec" {
inline = [
"sudo amazon-linux-extras install -y nginx1.12",
"sudo systemctl start nginx"
]
connection {
type = "ssh"
user = "ec2-user"
private_key = file("F:\\PathToMyKeysFolder\\SomeValid_keypair.pem")
host = self.public_ip
}
}
推荐阅读
- html - 即使给定相同的属性和值,按钮的大小也不同
- mongodb - 无法启动 MongoDB - IndexCatalog 留下了索引
- c# - UWP VS2017 - Xaml 内部错误错误 WMC9999:此成员“值”有多个项目,请使用 Items 属性
- php - Laravel proc_open(): 分叉失败
- android - Circular background for toolbar icons
- odoo - 如何获取客户发票行数?
- python - 具有多个 tbodies 的 Python Dash DataTable
- bash - How to format many uses of the && operator with multi line script?
- create-react-app - 无法编译 create-react-app。找不到模块“ReactPropTypesSecret”
- excel - Understand the pro and cons of the GoTo statement