【问题标题】:setting hostname on multiple EC2 based on tags根据标签在多个 EC2 上设置主机名
【发布时间】:2020-10-07 05:39:47
【问题描述】:

我正在运行一个 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
  }
}

谢谢

【问题讨论】:

    标签: amazon-web-services amazon-ec2 terraform


    【解决方案1】:

    我们作为用户数据的一部分完成,看起来类似于:

    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
    

    【讨论】:

    • 谢谢@duhaas。我会试试这个
    • 我厌倦了添加 user_data - "user_data = file("files/set_hostname.sh")" 和文件中的内容,但它没有更新主机名
    【解决方案2】:

    您可以按照@duhaas 的建议作为用户数据运行或使用 terraform 的 remote-exec 供应商来实现这一点。这是 terraform 的供应商文档,您将看到推荐的方法是在实例供应上设置用户数据:

    https://www.terraform.io/docs/provisioners/

    有关远程执行的更多详细信息:

    https://www.terraform.io/docs/provisioners/remote-exec.html

    【讨论】:

    • 如果你举个例子来说明如何实现它,这个答案会得到改善。
    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2019-09-02
    • 2013-05-04
    • 2018-12-22
    相关资源
    最近更新 更多