Amazon web services 如何使用terraform从创建的实例创建AWS AMI?
我正在使用wordpress安装设置一个aws实例,并希望使用创建的实例创建一个AMI。下面我附上我的代码Amazon web services 如何使用terraform从创建的实例创建AWS AMI?,amazon-web-services,terraform,Amazon Web Services,Terraform,我正在使用wordpress安装设置一个aws实例,并希望使用创建的实例创建一个AMI。下面我附上我的代码 provider "aws" { region = "${var.region}" access_key = "${var.access_key}" secret_key = "${var.secret_key}" } resource "aws_instance" "test-wordpress" { ami = "${var.image_id}"
provider "aws" {
region = "${var.region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}
resource "aws_instance" "test-wordpress" {
ami = "${var.image_id}"
instance_type = "${var.instance_type}"
key_name = "test-web"
#associate_public_ip_address = yes
user_data = <<-EOF
#!/bin/bash
sudo yum update -y
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum install -y httpd mariadb-server
cd /var/www/html
sudo echo "healthy" > healthy.html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo cp -r wordpress/* /var/www/html/
sudo rm -rf wordpress
sudo rm -rf latest.tar.gz
sudo chmod -R 755 wp-content
sudo chown -R apache:apache wp-content
sudo service httpd start
sudo chkconfig httpd on
EOF
tags = {
Name = "test-Wordpress-Server"
}
}
resource "aws_ami_from_instance" "test-wordpress-ami" {
name = "test-wordpress-ami"
source_instance_id = "${aws_instance.test-wordpress.id}"
depends_on = [
aws_instance.test-wordpress,
]
tags = {
Name = "test-wordpress-ami"
}
}
提供程序“aws”{
region=“${var.region}”
access_key=“${var.access_key}”
secret\u key=“${var.secret\u key}”
}
资源“aws_实例”“测试wordpress”{
ami=“${var.image\u id}”
instance_type=“${var.instance_type}”
key_name=“测试网站”
#关联\公共\ ip\地址=是
user_data=因此您可以按照中所述的标记搜索AMI
就你而言:
data "aws_ami" "example" {
executable_users = ["self"]
most_recent = true
owners = ["self"]
filter {
name = "tag:Name"
values = ["test-wordpress-ami"]
}
}
然后将ID称为${data.aws\u ami.example.image\u ID}
值得指出的是,Hashicorp(Terraform的制造商)也生产,这是专门为准备ami和其他机器映像而设计的。它可能会提供比试图在Terraform中拼凑相同的东西更好的体验。data“aws\u实例”“测试wordpress实例”{“过滤器”{name=“tag:name”值=[“测试wordpress服务器”]依赖于=[“aws\u实例.测试wordpress”]}
如下配置。但它不会在开始时创建实例并查找已创建的实例。获取错误。错误:您的查询未返回任何结果。请更改搜索条件并重试。是否有方法在执行数据源之前强制创建实例?您使用了错误的标记。您的ami标记为“测试wordpress ami“不是”测试wordpress服务器