【问题标题】:How to pass arrays to AWX/Ansible Tower如何将数组传递给 AWX/Ansible Tower
【发布时间】:2021-05-10 06:45:19
【问题描述】:

我正在从 ManageIQ 调用 AWX 模板。我将 9 个变量传递给剧本(prompt on launch 处于活动状态)。该剧本被成功调用,并且所有的变量都通过了。然而,其中两个变量应该是数组。相反,它们作为字符串传递给 AWX:例如,'["chefclient"]' 而不是 ["chefclient"]

在将这些变量传递给 AWX 模板之前,我已经确认这些变量在 ManageIQ 中确实是数组类型。

任何线索为什么会发生这种情况?是否所有 var 都会不可抗拒地转换为字符串?我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: ruby ansible-awx manageiq


    【解决方案1】:

    我尝试在本地安装 AWX 的情况下复制这一点。我已将 v_packages 变量数据作为 ["apache2","nginx"] 传递。我现在看不到这个问题。

    【讨论】:

    • 谢谢@altair66。问题似乎在于 ManageIQ 中的特定方法是如何编写的。它显然对数组进行了字符串化。解决办法是要么修改ManageIQ方法,要么想办法在AWX中解析它。感谢您的意见!
    • 嗨@mike_butak。是的,我认为这些是至少目前解决此问题的唯一方法。
    【解决方案2】:

    According to the RedHat developers on Gitter.im,这是ManageIQ中launch_ansible_method的一个缺点。即,它总是将数组转换为字符串。我们have opened an issue on GitHub 来解决这个问题。

    【讨论】:

      【解决方案3】:

      我基本上在 ansible tower/awx 中有一个变量,它将输入作为文本,服务器名称作为数组/列表。示例:["node1","node2","node3"] 并且一旦启动作业,我可以在额外变量中看到变量为 '["node1","node2","node3"]'。我不确定它这样做的原因,但它不会影响您对该变量的后续 ansible 操作。并非所有变量都只有在使用数组/列表时才会得到单引号。

      【讨论】:

      • 感谢@altair66!我已与负责剧本的 unix 管理员分享了该信息,以查看他是否可以使用该信息。他说剧本无法使用字符串化数组,这与您的经验不同。也许他需要将这些数据类型从数组切换到字符串。
      • 嗨@mike_butak,您能否分享有关使用该变量执行的操作的任何其他信息
      • 感谢@altair66,一个数组是要安装的软件包列表(postgres 等),另一个是要为 RBAC 配置的服务器组或角色列表。
      • 你好@altair66,在gitter.im/ManageIQ/manageiq/automate与RedHat的开发人员聊天后,我了解到这是launch_ansible_job方法的限制。它总是将数组转换为字符串。
      • 嗨@mike_butak。我什至有同样的问题,想知道您是在 ansible 模块中使用这些变量还是将这些变量传递给例如 shell 或其他脚本。在这种情况下,您需要删除那些单引号。并转换或进行一些更改。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多