我是 Terraform 的新手。我正在使用 Terraform 编写 AWS 脚本。执行Terraform Destroy时出现错误。Terraform 脚本是
resource "aws_rds_cluster" "aurora-cluster-ci" {
cluster_identifier = "aurora-cluster-ci"
engine = "aurora-mysql"
availability_zones = ["us-east-1a", "us-east-1b", "us-east-1c"]
database_name = "${var.rds_dbname}"
master_username = "${var.rds_username}"
master_password = "${var.rds_password}"
backup_retention_period = 5
engine_version = "5.7.16"
preferred_backup_window = "07:00-09:00"
apply_immediately = true
final_snapshot_identifier = "ci-aurora-cluster-backup"
skip_final_snapshot = true
}
Run Code Online (Sandbox Code Playgroud)
Terraform Destroy抛出错误“aws_rds_cluster.aurora-cluster-ci:需要最终快照时需要 RDS Cluster FinalSnapshotIdentifier”
我的脚本中有“final_snapshot_identifier”键。
amazon-web-services amazon-rds terraform terraform-provider-aws
我有一个 terraform 配置,可以在 aws 上正确创建一个 lambda 函数,并提供一个 zip 文件。
我的问题是我总是必须先打包 lambda(为此我使用无服务器打包方法),所以我想执行一个脚本来打包我的函数并将 zip 移动到正确的目录,然后 terraform 创建 lambda 函数。
那可能吗?也许使用 null_resource 和 local-exec 的组合?
我正在尝试使用带有 Terraform 的 AWS 启动模板构建 AWS EC2 redhat 实例。
我可以通过调用 Terraform 的资源来创建启动模板aws_launch_template。我的问题是如何使用 Terraform 使用创建的启动模板构建 EC2 服务器?
我应该调用什么 Terraform aws 提供程序资源?
非常感谢您的帮助!
templates amazon-ec2 amazon-web-services terraform terraform-provider-aws
我正在使用 terraform kubernetes-provider,我想将此kubectl命令转换为 TF:
kubectl create secret generic my-secret --from-file mysecret.json
Run Code Online (Sandbox Code Playgroud)
然而,secret资源的data字段似乎只需要一个 TF map。
我试过类似的东西
data "template_file" "my-secret" {
template = "${file("${path.module}/my-secret.json")}"
}
resource "kubernetes_secret" "sgw-config" {
metadata {
name = "my-secret"
}
type = "Opaque"
data = "{data.template_file.my-secret.template}"
}
Run Code Online (Sandbox Code Playgroud)
但它抱怨这不是一张地图。所以,我可以做这样的事情:
data = {
"my-secret.json" = "{data.template_file.my-secret.template}"
}
Run Code Online (Sandbox Code Playgroud)
但这将使用名为的顶级字段写入机密,my-secret.json并且当我批量挂载它时,它将无法与其他资源一起使用。
这里的诀窍是什么?
我想使用 terraform ecs_service 创建和部署集群,但我无法这样做。我的terraform applys 总是在 IAM 角色上失败,我不太清楚。具体来说,错误信息是:
InvalidParametersException:无法代入角色并验证指定的 targetGroupArn。请验证传递的 ECS 服务角色是否具有适当的权限。
我发现:
iam_role在 ecs_service 中指定时,ECS 抱怨我需要使用服务相关角色。iam_role在 ecs_service 中发表评论时,ECS 抱怨所担任的角色无法验证 targetGroupArn。我的 terraform 跨越了一堆文件。我把感觉像下面的相关部分。尽管我已经看到发布了一些类似的问题,但没有一个为我提供解决上述困境的可行解决方案。
## ALB
resource "aws_alb" "frankly_internal_alb" {
name = "frankly-internal-alb"
internal = false
security_groups = ["${aws_security_group.frankly_internal_alb_sg.id}"]
subnets = ["${aws_subnet.frankly_public_subnet_a.id}", "${aws_subnet.frankly_public_subnet_b.id}"]
}
resource "aws_alb_listener" "frankly_alb_listener" {
load_balancer_arn = "${aws_alb.frankly_internal_alb.arn}"
port = "8080"
protocol = "HTTP"
default_action {
target_group_arn = "${aws_alb_target_group.frankly_internal_target_group.arn}"
type = "forward"
}
}
## Target Group
resource …Run Code Online (Sandbox Code Playgroud) 在 Octopus Deploy 中,我使用他们的 Apply a Terraform 模板设置了一个 Terraform Apply Step
在我的 Terraform main.tf 文件中,我想使用连接在 AWS 中的 Amazon Linux EC2 实例上运行 remote-exec
resource "aws_instance" "nginx" {
ami = "${var.aws_ami}"
instance_type = "t2.nano"
key_name = "${var.key_name}"
connection {
type = "ssh"
user = "ec2-user"
private_key = "${var.aws_key_path}"
}
provisioner "remote-exec" {
inline = [
"sudo amazon-linux-extras install epel -y",
"sudo yum update -y",
"sudo amazon-linux-extras install nginx1.12 -y",
"sudo systemctl enable nginx.service",
"sudo systemctl start nginx.service",
"sudo systemctl status nginx.service"
] …Run Code Online (Sandbox Code Playgroud) 我有一个 ALB,它当前将流量路由到多个 url。如果我们需要执行维护,我希望能够将流量路由到静态 S3 站点。然后我们将显示一个静态的“维护”页面而不是我们的登录页面。
我创建了一个 CloudFront 分配,允许使用 SSL 证书加载 S3 站点,但我不确定如何连接该分配以将所有流量发送到 S3 维护站点。
这是我正在使用的 Terraform ALB 侦听器。我可以指定我的CloudFront的分布arn在target_group并将它路由所有流量的静态网站?
或者我可以简单地将我的 S3arn与允许 ALB 访问以获取存储桶对象的 S3 策略链接起来吗?
resource "aws_alb_listener" "ssl_alb_httpslistener" {
load_balancer_arn = "${aws_alb.alb_lis.arn}"
port = "443"
protocol = "HTTPS"
ssl_policy = "Sec-TLS"
certificate_arn = "${var.ssl_cert_arn}"
default_action {
target_group_arn = "${data.terraform_remote_state.php.target_arn}"
type = "forward"
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我可以将通过 ALB 的流量从target_group. 好奇这是否是解决此问题的最佳方法。
load-balancing amazon-s3 static-site terraform terraform-provider-aws
我有一个包含要创建的子网列表的对象。
variable "subnet-map" {
default = {
ec2 = [
{
cidr_block = "10.0.1.0/24"
availability_zone = "eu-west-1a"
}
],
lambda = [
{
cidr_block = "10.0.5.0/24"
availability_zone = "eu-west-1a"
},
{
cidr_block = "10.0.6.0/24"
availability_zone = "eu-west-1b"
},
{
cidr_block = "10.0.7.0/24"
availability_zone = "eu-west-1c"
}
],
secrets = [
{
cidr_block = "10.0.8.0/24"
availability_zone = "eu-west-1a"
},
{
cidr_block = "10.0.9.0/24"
availability_zone = "eu-west-1b"
},
{
cidr_block = "10.0.10.0/24"
availability_zone = "eu-west-1c"
}
],
rds = [
{
cidr_block …Run Code Online (Sandbox Code Playgroud) 我最后的手段是在这里问。我是 Golang 的新手,我做过简单的程序。
我正在尝试执行以下操作:使用 golang:1 - 运行容器 2 - 接受输入标准输入到容器
我想使用的例子是hashicorp/terraform docker镜像,我想做一个简单的terraform apply 但是我需要等待用户输入
下面是我到目前为止工作的代码......任何尝试下面的确切代码的人都需要更新 AWS 环境变量或将 terraform 测试文件更改为另一个提供程序......或者只是使用不同的 docker 镜像 ;-)
package main
import (
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/mount"
"github.com/docker/docker/client"
"github.com/docker/docker/pkg/stdcopy"
"golang.org/x/net/context"
"io"
"os"
)
const workingDir = "/home"
func main() {
ctx := context.Background()
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
if err != nil {
panic(err)
}
reader, err := cli.ImagePull(ctx, "hashicorp/terraform", types.ImagePullOptions{})
if err != nil {
panic(err)
}
io.Copy(os.Stdout, reader)
fmt.Println(os.Args)
cwd, _ := os.Getwd()
resp, …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 Terraform 在 AWS 上创建一个具有自我管理节点的 EKS 集群,但我无法让我的 Kubernetes Ingress 创建负载均衡器。没有错误,但没有创建负载均衡器,它只是超时。
我确实首先在我的帐户中手动创建了一个负载均衡器,并验证了负载均衡器角色是否存在。AWSElasticLoadBalancingServiceRolePolicy当我的 Terraform 代码运行时访问该策略。
我非常依赖本教程
变量:
aws_region = "ap-southeast-1"
domain = "*.mydomain.com"
cluster_name = "my-tf-eks-cluster"
vpc_id = "vpc-0d7700e26db6b3e21"
app_subnet_ids = "subnet-03c1e8c57110c92e0, subnet-0413e8bf24cb32595, subnet-047dcce0b810f0fbd"
// gateway subnet IDs
Run Code Online (Sandbox Code Playgroud)
地形代码:
terraform {
}
provider "aws" {
region = var.aws_region
version = "~> 2.8"
}
data "aws_acm_certificate" "default" {
domain = var.domain
statuses = ["ISSUED"]
}
resource "kubernetes_service_account" "alb-ingress" {
metadata {
name = "alb-ingress-controller"
namespace = "kube-system"
labels = { …Run Code Online (Sandbox Code Playgroud) amazon-web-services kubernetes terraform kubernetes-ingress amazon-eks
terraform ×10
kubernetes ×2
amazon-ec2 ×1
amazon-ecs ×1
amazon-eks ×1
amazon-iam ×1
amazon-rds ×1
amazon-s3 ×1
aws-lambda ×1
docker ×1
for-loop ×1
foreach ×1
go ×1
sdk ×1
static-site ×1
stdin ×1
templates ×1