小编Jos*_*atz的帖子

Ansible:将带有键:值对的逗号分隔字符串转换为字典

我正在通过额外的变量启动 docker-compose 服务(apache solr)的安装手册。这些变量是在执行时设置的,因为该剧本应该是灵活的并且一台服务器上存在多种配置。

我的想法是,用户可以将 ansible ui (ansible 信号量)中的变量设置为字符串:

  • 变量名project_cores
  • 变量值(字符串)main_en:english,main_de:german

我想将这些核心作为字典进行迭代。我最后想要的是:

{
  {
    name: main_en,
    language: english
  },
  {
    name: main_de,
    language: german
  },
}
Run Code Online (Sandbox Code Playgroud)

第一步是将它们分开,(这已经有效):


- name: "debug: split cores"
  debug:
    msg: "{{ item }}"
  loop: "{{ project_cores.split(',') }}"
Run Code Online (Sandbox Code Playgroud)

然后我尝试了以下操作但没有成功,因为这不会添加子元素的键:


- name: "Extract solr cores configuration."
  set_fact:
    dict: "{{ dict|default({}) | combine ( { item.split(':')[0] : item.split(':')[1] } ) }}"
  with_items:
    - "{{ project_cores.split(',') }}"

Run Code Online (Sandbox Code Playgroud)

我测试了一些组合,但没有找到有关如何添加键的有效解决方案。

知道如何将该字符串转换为第一个示例中所述的真实目录吗?提前致谢!

ansible jinja2

4
推荐指数
1
解决办法
2309
查看次数

标签 统计

ansible ×1

jinja2 ×1