amazon-web-services - 根据标签在多个 EC2 上设置主机名
问题描述
我正在运行一个 terraform 代码来创建多个 EC2 实例。有没有办法根据标签和域名设置实例的主机名。目前我登录并运行 hostnamectl set-hostname ..
这是我使用创建实例的 tf 脚本。
resource "aws_instance" "RR-TEMP-V-DB" {
ami = var.linux_ami[var.region]
availability_zone = var.availability_zone
instance_type = var.temp_instance_type
key_name = var.linux_key_name
vpc_security_group_ids = [var.vpc_security_group_ids[var.region]]
subnet_id = var.db_subnet_id
count = var.temp_count
tags = {
Name = "RR-TEMP-V-DB-${format("%02d", count.index + 1)}"
Environment = var.env_tag
}
}
谢谢
解决方案
我们作为用户数据的一部分完成,看起来类似于:
instance_name=$(aws ec2 describe-instances --instance-id $(curl -s http://169.254.169.254/latest/meta-data/instance-id) --query "Reservations[*].Instances[*].Tags[?Key=='Name'].Value" --region $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e "s/.$//") --output text)
sudo hostnamectl set-hostname --static $instance_name
推荐阅读
- javascript - JSS 中的 MUI 全局类名称有多可靠?
- oracle - 如何创建触发器以将所有 DML 存储在 oracle 中?
- c++ - 使用 Qt 库在 C++ 中解析 json 数据
- javascript - 如何将对象内部的所有键值组合到es6中的新数组中
- python-3.x - 从具有值列表的列中检索唯一值
- java - Java 14 记录 json 序列化
- sql - 我如何更改 SQL 以避免 WHERE 中的 DISTINCT 和 2 个字段?
- angular-cli - 如何运行本地 ng serve 而不是全局安装的主机 0.0.0.0
- java - 模型映射器给出错误无法将 java.lang.String 转换为 java.math.BigDecimal 目标和源都是字符串
- c# - 不支持嵌套查询。操作 1='案例' 操作 2='收集'