Amazon web services 从没有internet访问的专用子网管理路由器53专用DNS条目
我目前正在使用Terraform来支撑AWS中的基础设施,作为每个计算实例实例化的一部分,它调用AWS元服务和EC2 API来设置其主机名 在我配置squid代理实例(可能由Ansible处理)之前,任何放置在我的VPC私有子网中的实例都无法访问internet 为了允许VPC中的所有实例与EC2 API对话,我配置了一个VPC端点。不幸的是,没有这样的端点可以与路由53对话。这意味着我无法在创建每个实例时为其设置私有DNS记录 我不确定如何管理每个主机的DNS条目设置。私有子网最终将通过反向代理(squid代理)与internet通信,但我希望避免使反向代理成为初始设置的依赖项 我唯一的想法是使用公共子网中的“配置”实例,私有子网中的每个实例都可以向“配置”实例报告其主机名,然后该实例可以调用Route53 APIAmazon web services 从没有internet访问的专用子网管理路由器53专用DNS条目,amazon-web-services,amazon-route53,amazon-vpc,Amazon Web Services,Amazon Route53,Amazon Vpc,我目前正在使用Terraform来支撑AWS中的基础设施,作为每个计算实例实例化的一部分,它调用AWS元服务和EC2 API来设置其主机名 在我配置squid代理实例(可能由Ansible处理)之前,任何放置在我的VPC私有子网中的实例都无法访问internet 为了允许VPC中的所有实例与EC2 API对话,我配置了一个VPC端点。不幸的是,没有这样的端点可以与路由53对话。这意味着我无法在创建每个实例时为其设置私有DNS记录 我不确定如何管理每个主机的DNS条目设置。私有子网最终将通过反向代
值得注意的是,其中一些实例的主机名是动态的,因此不能由Terraform设置 如果我正确理解了您的问题,您想让您使用Terraform创建的EC2实例在R53中注册吗 根据您运行TF的位置,您不能在创建实例的同时创建Route53记录吗?我没有想到您需要互联网访问才能调用AWSAPI来实现这一点,但这可能是错误的
如果您在公共子网的堡垒中运行TF,这会解决问题吗 你可能会用一种更复杂的方法来解决这个问题。Terraform(TF)可以使用您在其他资源中使用的任何资源的数据
resource "aws_instance" "foo" {}
resource "aws_route53_zone" "example_private" {}
可由路由调用引用
resource "aws_route53_record" "foo" {
zone_id = "${aws_route53_zone.example_private.zone_id}"
name = "foo"
type = "A"
ttl = 300
record = [ "${aws_instance.foo.private_ip}" ]
}
这将使用实例foo的私有IP地址在示例_私有域中创建一条记录。此外,您的私有实例将在内部与AWS对话。它不需要访问公共互联网。最好的办法是通过实例角色或API密钥和用户数据来实现。 使用这个过程,你可以做任何你想做的事情——比如trigger Jenkins,更新任何AWS信息。由于它将是terraform的模板,您可以使用它的变量自定义更多内容 请告诉我进展如何
#!/bin/bash
export http_proxy=X.X.X.X:3128
export https_proxy=X.X.X.X:3128
# Configure API Keys here if you don't have instance role.
# Gathering information about the instance
AZ=`curl http://169.254.169.254/latest/meta-data/placement/availability-zone`
REGION="`echo \"$AZ\" | sed 's/[a-z]$//'`"
INSTANCEID=`curl http://169.254.169.254/latest/meta-data/instance-id`
# NAME=`curl http://169.254.169.254/latest/meta-data/local-hostname`
NAME = test.example.com
# Setting the hostname of the instance
aws ec2 create-tags --region $REGION --resources $INSTANCEID --tags Key=Name,Value=$NAME
您从哪里运行TF脚本(控制主机)?如果控制主机可以访问R53端点,并且您知道zoneid,请从控制主机创建内部DNS。控制主机必须能够访问EC2端点,否则无法启动实例。它当前正在从我的本地计算机运行