Я предоставляю большой (r5.2xl) экземпляр ec2 с Terraform
и настраиваю с помощью Ansible
. Установочный комплект приложения и данные объемом 640 ГБ находятся в ведре S3 в моем регионе, к которому у меня есть полный доступ. Моя первая пьеса использует модуль оболочки для вызова aws s3 cp --recursive cli для перемещения данных на том EBS не-root, объемом 2 ТБ, смонтированный в /opt/app.
Я могу Скажите, что задача передает все данные, но это никогда не заканчивается. Мой единственный симптом - это процесс на целевом компьютере, на котором запущен AnsiballZ_command.py. Не похоже, что он делает много, и его убийство не влияет на книгу или процесс Terraform. Я подтвердил, что могу запускать передачу напрямую из cli на подготовленном компьютере, и когда я перемещаю туда книги воспроизведения, они тоже запускаются успешно.
Единственный вариант на этом этапе - убить TF мой файл состояния и принудительный ручной разрыв.
Как правильно это сделать?
Мой код TF (v0.11.11), за исключением информации о соединении, запускается из нулевого_ресурса:
provisioner "remote-exec" {
inline = ["sudo apt install --yes cowsay"]
}
provisioner "local-exec" {
command = <<EOT
sleep 30;
>spookykat.ini;
echo "[spookykat]" | tee -a spookykat.ini;
echo "${element(aws_instance.this.*.private_ip, count.index)} ansible_user=${local.ec2-user} ansible_private_key_file=${var.private_key_path}" | tee -a spookykat.ini;
export ANSIBLE_HOST_KEY_CHECKING=False;
export ANSIBLE_NOCOLOR=true;
export ANSIBLE_LOG_PATH="./ansible_log.log";
export ANSIBLE_DISPLAY_ARGS_TO_STDOUT=true;
ansible-playbook -u ${local.ec2-user} --private-key ${var.private_key_path} -i spookykat.ini ${path.root}/playbooks/spookykat_configure.yml --extra-vars @${local.extra-vars-json}
EOT
}
И, моя Ansible задача:
- name: Sync Spatialkat S3 to local
shell: >
aws s3 cp --recursive s3://{{ src_bucket }}/{{ root_path }}/{{ release }}
{{ dest_path }}/{{ root_path }}/{{ release }}