Estou tentando adicionar alguns itens em um arquivo YAML, chamando yq (v4.43.1) do ansible (núcleo 2.16.5). Ele insere os valores corretamente, mas sem as aspas que o tornariam um arquivo yaml válido. Agora estou usando ansible.builtin.replace para adicionar aspas em minhas strings, mas estou procurando uma solução melhor.
Aqui está o manual, que assume que ansible e yq já estão na máquina:
---
- name: Customize cluster.yaml
hosts: localhost
vars:
rook_tag: "v1.14.0"
ceph_datapath:
rpi4b-1: "sda3"
rpi4b-2: "sda3"
rpi4b-3: "sda3"
rpi4b-4: "sda3"
rpi4b-5: "sda3"
rock3a: "nvme0n1p3"
vim4: "nvme0n1"
nanopct6: "mmcblk0p3"
opi5p: "mmcblk0p3"
rock5b: "mmcblk0p3"
tasks:
- name: Download cluster.yaml manifest from Internet
ansible.builtin.get_url:
url: "https://raw.githubusercontent.com/rook/rook/{{ 'release-' + '.'.join(''.join(rook_tag.split('v')[1:]).split('.')[:2]) }}/deploy/examples/cluster.yaml"
dest: ./cluster.yaml
mode: '0664'
- name: Set spec.storage.config.nodes
ansible.builtin.shell: >
/usr/local/bin/yq -i '.spec.storage.config.nodes += [{"name": "{{ item.key }}", "devices": [{"name": "{{ item.value }}"}]}]' cluster.yaml
with_dict: "{{ ceph_datapath }}"
register: command_output
changed_when: command_output.rc == 0
A seção relevante do arquivo cluster.yaml gerado é:
config:
nodes:
- name: rpi4b-1
devices:
- name: sda3
- name: rpi4b-2
devices:
- name: sda3
- name: rpi4b-3
devices:
- name: sda3
- name: rpi4b-4
devices:
- name: sda3
- name: rpi4b-5
devices:
- name: sda3
- name: rock3a
devices:
- name: nvme0n1p3
- name: vim4
devices:
- name: nvme0n1
- name: nanopct6
devices:
- name: mmcblk0p3
- name: opi5p
devices:
- name: mmcblk0p3
- name: rock5b
devices:
- name: mmcblk0p3
Como posso adicionar aspas aos nomes usando yq?
Obrigado!