【问题标题】:How to add more than one value to a variable in ansible playbook?如何在ansible playbook中为变量添加多个值?
【发布时间】:2016-06-14 10:37:47
【问题描述】:

我在我的剧本中定义了一个变量值:

 war_name: abc

我在角色中称这个war_name为:

- name: Download war file
   get_url:
    url=http://url/directory/packages/tomcat/{{ war_name }}.war

现在的问题是我必须在 playbook 中为变量 war_name 分配 2 个值 喜欢

war_name: abc,xyz 

如何在我的剧本中做到这一点?

如果与_items 一起使用:

- name: Download war file
       get_url:
        url=http://url/directory/packages/tomcat/{{ item }}.war
   with_items:
     - abc
     - xyz
   when: "'server' in app_name"

这会导致错误:

TASK [tomcat:下载战争文件] ************************************************ 失败:[10 .x.x.x] (item=abc) => {"failed": true, "item": "abc", "msg": "缺少必填项 参数:dest"} 失败:[10.x.x.x] (item=xyz) => {"failed": true, “item”:“xyz”,“msg”:“缺少必需的参数:dest”}

【问题讨论】:

    标签: variables ansible ansible-playbook


    【解决方案1】:

    您缺少get_url 所需的dest 参数

    这是你的任务的修改版本:

    - name: Download war file
      get_url:
        url: "http://url/directory/packages/tomcat/{{ item }}.war"
        dest: "/path-where-you-want-to-place/{{ item }}"
      with_items:
        - abc
        - xyz
      when: "'server' in app_name"
    

    希望对你有帮助

    【讨论】:

    • 没错,get_url 需要dest来放文件
    • 从我的角度来看,这是一个愚蠢的错误..谢谢伙计们.. :)
    【解决方案2】:

    你能做的就是这样

    war_name:
      war1: one
      war2: two
    

    这基本上是一本字典。虽然我不确定你到底想在这里做什么?我猜你想在同一个位置用不同的名字放置 2 场战争,如果是这种情况,你实际上可以使用 with_items

    【讨论】:

    • 是的,我想在同一个位置使用 2 场战争,我不能使用两个不同的名称,因为我的另一本剧本也使用相同的角色,并且只有一个值分配给变量 war_name。我使用 with_items 作为: url=url/packages/tomcat{{ item }}.war with_items: - abc - xyz 但这不起作用,你有我可以与“with_items”一起使用的代码
    • 它会抛出什么错误?你能用错误或“未改变”的东西更新问题吗
    猜你喜欢
    • 2020-09-22
    • 2016-06-27
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多