2016-06-09 4 views
0

В недоступном параметре докеры для playbook extra_host занимает две части хоста: ip_address. Я пытаюсь передать host и ipaddress в качестве переменных. Они из быстрых варов. Конечным результатом в файле моих хостов является: 1.2.3.4 {{server_hostname}}. Вот код:docker extra_host параметр ожидает значение словаря для имени хоста, как я могу использовать переменную?

vars_prompt: 
    - name: "server_ip" 
    prompt: "Please enter the server IP address" 
    private: no 

    - name: "server_hostname" 
    prompt: "Please enter the server hostname" 
    private: no 

tasks:  
    - name: Install Tomcat 
    docker: 
     image: tomcat:8.0 
     pull: missing 
     name: tomcat 
     state: restarted 
     ports: 
     - "8080:8080" 
     - "443:443" 
     extra_hosts: 
     "{{server_hostname}}": "{{server_ip}}" 

Я новичок в доступной игровой книжке любая помощь будет принята с благодарностью.

+0

Кажется дубликат: http://stackoverflow.com/questions/27805976/resolve-dictionary-key-or-parameter-variable-in-ansible –

+0

Это близко, но он не использует переменные в качестве ключа или стоимость. – jbrim

ответ

1

Сделать server_host_ip Dict с set_fact перед вашей задачей:

- set_fact: 
    server_host_ip: "{'{{host_name}}':'{{host_ip}}'}" 

И использовать {{server_host_ip}} в docker модуле.

+0

Можете ли вы подробнее рассказать о том, как использовать {{extra_hosts}} в модуле докеров? Покажите пример. Когда я пытаюсь, я получаю следующую ошибку: Оскорбительная строка выглядит следующим образом: {{extra_hosts}} ^ здесь – jbrim

+0

Работы ... спасибо! Мне просто пришлось изменить имя переменной set_fact extra_hosts на другое незарезервированное имя. Пример: - set_fact: server_host_ip: "{{{server_ip}} ':' {{server_hostname}}}" - имя: Установить Tomcat Докер: extra_hosts: "{{server_hostname_ip}}" – jbrim

+0

Извините @jbrim, я не тестировал его для зарезервированных имен. Рад, что это вам помогло! –

Смежные вопросы