Я пытаюсь использовать поставщика Ansible в Packer для выполнения привилегированных задач при создании AWS AMI на основе Ubuntu.
В приведенном ниже минимальном примере выполняется привилегированный apt update
, но он также создает пустой каталог /home/ubuntu/~myusername
, где myusername
- это мое локальное имя пользователя на моем рабочем столе. (Да, имя каталога содержит тильду.)
Если я попытаюсь добавить become_user: ubuntu
к diagnose.yml
, каталог не будет создан, но Ansible не сможет выполнить apt update
.
stackoverflow_example. json
{
"builders": [
{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-085925f297f89fce1",
"instance_type": "t3.micro",
"ssh_username": "ubuntu",
"ami_name": "stackoverflow-example"
}
],
"provisioners": [
{
"type": "ansible",
"playbook_file": "./diagnose.yml"
}
]
}
Diagnose.yml
---
- name: Debugging user directory problem
hosts: default
become: true
tasks:
- apt:
update_cache: yes
Чтобы убедиться, что это не проблема версии YAML , я также пробовал become: yes
.
(Примечание: ami-085925f297f89fce1
является текущим официальным AMI для Ubuntu 18.04 на компьютере x86 с поддержкой EBS в регионе us-east-1
.)
Это кажется довольно простой задачей c, и мне кажется, что она согласуется с примером, показанным в документации Packer для Ansible инициатора .
Очевидно, я можно просто удалить ненужный каталог или установить Ansible на AMI, запустить playbooks локально, затем удалить Ansible, но это не отвечает на вопрос , почему этот каталог создается.
Я использую Packer 1.5.5 на MacOS 10.14.6. Это ошибка, или я делаю что-то глупое?