Невозможно с образованием облаков
Оказывается, это невозможно с облачной информацией aws.Этот вопрос подсказал мне ответ: https://serverfault.com/questions/876942/create-new-ec2-instance-with-existing-ebs-volume-as-root-device-using-cloudforma
Решение с помощью terraform
Это довольно просто с помощью "terraform":
resource "aws_instance" "someName" {
ami = "ami-***********"
instance_type = "t2.*******"
tags = {
Type = "InstanceTag"
}
volume_tags = {
Type = "VolumeTag"
}
}
Наше решение (Jenkins и shellscript)
Мы используем облачную информацию, чтобы порождать наши инстансы CI через Дженкинса.Переход на terraform привел бы к большему количеству работы, чем мы были готовы принять.Нам нужны теги для расчета стоимости.Поэтому, когда мы понимали, что облачность не подходит, мы использовали cli, чтобы пометить экземпляры после их создания.
Очевидно, что awscli должен быть установлен.Учетные данные поступают через переменные среды.
Вот скрипт, который мы использовали:
sleep 1m
EC2_VOLUMES=$(aws ec2 describe-instances --region "${INSTANCE_REGION}" --filter "Name=tag-key,Values=Type" "Name=tag-value,Values=Jenkins" --filter "Name=tag-key,Values=Name" "Name=tag-value,Values=BackendJenkins${BUILD_NUMBER}" --query "Reservations[*].Instances[*].BlockDeviceMappings[*].Ebs.[VolumeId]" --output text)
echo $AWS_SECRET_ACCESS_KEY | base64 -i > foo.txt
while read -r RESOURCE; do
# We set the name and the type tag
aws ec2 create-tags --resources "$RESOURCE" --region "${INSTANCE_REGION}" --tags "Key=Type,Value=TheTagValue"
aws ec2 create-tags --resources "$RESOURCE" --region "${INSTANCE_REGION}" --tags "Key=Name,Value=TheInstanceName${BUILD_NUMBER}"
done <<< "$EC2_VOLUMES"
Спасибо за все подсказки о порождении EC2 :: Volumes и Tag Propagation.