#amazon-ec2 #terraform-provider-aws #ssh-keys #cloud-init
Вопрос:
Вот моя ситуация. Я использую terraform для создания машины EC2. В моем модуле TF я создал ресурс aws_key_pair amp; и передаю его, чтобы увидеть ниже:
resource "aws_key_pair" "pub_key" { key_name = "pub_key_${var.vm_name}" public_key = var.public_key_val } resource "aws_instance" "ec2" { key_name = aws_key_pair.pub_key.key_name }
У меня также есть модуль инициализации облака, который я передаю как user_data в aws_instance, который создает нового пользователя с тем же ключом, см. Ниже: TF
resource "aws_instance" "ec2" { key_name = aws_key_pair.pub_key.key_name user_data = templatefile("${path.module}/cl-init.tpl") }
Облачная инициализация
users: - name: mynewuser gecos: mynewuser sudo: ALL=(ALL) NOPASSWD:ALL groups: users, admin, sudo ssh_import_id: None lock_passwd: true shell: /bin/bash ssh_authorized_keys: - lt;pub_key_valgt;
Мое наблюдение, после создания экземпляра EC2 я вижу, что пользователь ubuntu по умолчанию все еще существует в /stc/passwd
amp; когда я захожу проверить его домашний каталог, и cat /home/ubuntu/.ssh/authorized_keys
я вижу, что существует совершенно новый SSH-ключ.
Итак, мои вопросы:
- Откуда взялся этот ключ? Каково поведение cloud init? — Я предполагал, что aws_key_pair перейдет к пользователю по умолчанию, т. е. ubuntu, и то, что я передам в cloud-init, попадет к новому пользователю? Кто-нибудь знает, каково было бы такое поведение?