установка имени хоста на нескольких EC2 на основе тегов - PullRequest
0 голосов
/ 17 июня 2020

Я запускаю код 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
  }
}

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

вы можете выполнить sh это с запуском как пользовательские данные, как предлагает @duhaas, или с помощью remote-exe c Provider Terraform. вот документация по предоставлению terraform, поскольку вы увидите, что рекомендуемый способ - установка пользовательских данных для предоставления экземпляра:

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

для получения более подробной информации о remote-exe c:

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

0 голосов
/ 17 июня 2020

Мы выполняем sh как часть пользовательских данных, выглядит примерно так:

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
...