【问题标题】:docker extra_host parameter expects a dictionary value for hostname, how can I use a variable?docker extra_host 参数需要主机名的字典值,如何使用变量?
【发布时间】:2016-06-09 15:11:10
【问题描述】:

在 ansible playbook docker 参数 extra_host 中包含两部分主机:ip_address。我正在尝试将主机和 ipaddress 作为变量传递。它们来自提示变量。我的主机文件中的最终结果是:1.2.3.4 {{server_hostname}}。代码如下:

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}}"

我是 ansible playbook 的新手,任何帮助将不胜感激。

【问题讨论】:

标签: docker ansible ansible-playbook


【解决方案1】:

在您的任务之前使用set_fact 制作server_host_ip dict:

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

并在docker 模块中使用{{server_host_ip}}

【讨论】:

  • 您能否进一步详细说明如何在 docker 模块中使用 {{extra_hosts}} ?显示一个例子。当我尝试时,出现以下错误:违规行似乎是:{{extra_hosts}} ^ here
  • 工作...谢谢!我只需要将 set_fact 变量 extra_hosts 的名称更改为另一个非保留名称。示例: - set_fact: server_host_ip: "{'{{server_ip}}':'{{server_hostname}}'}" - 名称:安装 Tomcat docker: extra_hosts: "{{server_hostname_ip}}"
  • 对不起@jbrim,我还没有测试它的保留名称。不过,很高兴它对您有所帮助!
猜你喜欢
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多