Ansible-local упаковщика не извлекает переменные упаковщика как дополнительные переменные - PullRequest
0 голосов
/ 22 мая 2018

У меня есть код упаковщика, который создает изображение на лазури.Я использую ansible-local Provider для установки необходимых инструментов.Я выполняю приведенную ниже команду

packer build -force -var azure_subscription_id=**** -var azure_tennant_id=**** -var azure_application_id=**** -var azure_application_password=**** -var nexus_user=**** -var nexus_password=**** build_packer_azure_image.json

Тем не менее, отвечающий за запросы локальный поставщик выполняет нижеприведенную команду и как часть поставщика упаковщика.Мне нужны две переменные nexus_username и nexus_password для наследования значений из вышеприведенной команды упаковщика.

cd / tmp / packer-provisioner-ansible-local / 5b04201f-b988-90e6-b769-24822ffc5333 && ANSIBLE_FORCE_COL =PYTHONUNBUFFERED = 1 ansible-playbook /tmp/packer-provisioner-ansible-local/5b04201f-b988-90e6-b769-24822ffc5333/provision.yml --extra-vars "packer_build_name = azure-arm packer__builder_adr" =-extra-vars 'nexus_username = nexus_password =' ​​-c local -i / tmp / packer-provisioner-ansible-local / 5b04201f-b988-90e6-b769-24822ffc5333 / packer-provisioner-ansible-local158977121

Как видно, переменные не заполняются.Я помещаю образцы кода для справки в файл упаковщика для справки.

Конфигурация переменных упаковщика:

{
"variables": {
    "azure_subscription_id": "{{env `azure_subscription_id`}}",
    "azure_tennant_id": "{{env `azure_tennant_id`}}",
    "azure_application_id": "{{env `azure_application_id`}}",
    "azure_application_password": "{{env `azure_application_password`}}",
    "ansible_nexus_user": "{{env `nexus_user`}}",
    "ansible_nexus_password": "{{env `nexus_password`}}"
}

Настройка поставщика упаковщика:

"provisioners": [
    {
    "type": "shell",
    "scripts": [
         "../scripts/install_ansible.sh"
      ]
    },
    {
    "type": "ansible-local",
    "playbook_dir": "../workstation-playbook",
    "playbook_file": "../workstation-playbook/provision.yml",
    "extra_arguments": [ "--extra-vars 'nexus_username={{user `ansible_nexus_user`}} nexus_password={{user `ansible_nexus_password`}}'" ]
    },
    {
     "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
     "inline": [
       "/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
     ],
     "inline_shebang": "/bin/sh -x",
     "type": "shell"
   }]
}

Пожалуйста, помогите мне решить проблему.

1 Ответ

0 голосов
/ 24 мая 2018

Проблема решена.Положение переменных необходимо поменять местами в разделе переменных. Также я попытался сохранить одинаковые имена переменных слева и справа.Сработало

...