Terraform中有没有简便方法可通过主机名获取对应的IP地址?
Terraform通过主机名获取对应IP的实现方案
你可以直接使用HashiCorp官方维护的DNS Provider的内置数据源实现该需求,无需自定义外部请求逻辑,具体用法如下:
- 第一步:声明DNS Provider依赖
terraform { required_providers { dns = { source = "hashicorp/dns" version = "~> 3.2" } } } provider "dns" {}
默认会使用Terraform运行环境的DNS配置执行解析,如需指定自定义DNS服务器,可以在provider配置中添加update { servers = ["8.8.8.8"] }参数指定。
- 第二步:使用
dns_a_record_set数据源获取主机名对应的IPv4地址
data "dns_a_record_set" "fetch_ip" { host = "google.com" }
- 第三步:直接引用数据源返回的IP即可
resource "null_resource" "temp" { # 单IP场景取下标为0的元素即可,多解析IP场景addrs会返回完整IP列表 google_ip = data.dns_a_record_set.fetch_ip.addrs[0] }
补充说明
- 如需获取IPv6地址,将数据源替换为
dns_aaaa_record_set即可,用法完全一致 - 主机名不可带HTTP/HTTPS协议前缀,直接填写域名即可
内容的提问来源于stack exchange,提问作者Andrey Tabakov
相关产品推荐
相关产品推荐

