У меня есть следующая исходная структура данных в файле yml:
animals:
dogs:
- { breed: "Golden Retriever", colour: "Golden" }
- { breed: "Rottweiler", colour: "Black" }
- { breed: "Labrador", colour: "Brown", "Black", "Cream" }
Я пытаюсь открыть файл l oop через структуру данных и скопировать его, чтобы я завершил работу. с точной копией данных. Вот так:
animals:
dogs:
- { breed: "Golden Retriever", colour: "Golden" }
- { breed: "Rottweiler", colour: "Black" }
- { breed: "Labrador", colour: "Brown", "Black", "Cream" }
animals:
dogs:
- { breed: "Golden Retriever", colour: "Golden" }
- { breed: "Rottweiler", colour: "Black" }
- { breed: "Labrador", colour: "Brown", "Black", "Cream" }
Мне также нужно иметь возможность добавлять и удалять данные из источника данных источника, и при повторном запуске книги воспроизведения копируемые данные также обновляются.
Я потратил немного времени на просмотр этого и дошел до того, что это не очень хорошо, поскольку оно не дает мне того, что я хочу:
- name: test
hosts: localhost
connection: local
tasks:
- name: Read the yaml
slurp:
path: ./animals.yml
register: r_myfile
- debug:
var: r_myfile
- name: Extract the data
set_fact:
mydata: "{{ r_myfile['content'] | b64decode | from_yaml }}"
- debug:
var: mydata
- name: Populating the list of dictionaries in new dictionary
blockinfile:
dest: ./animals.yml
block: "{{ mydata }}"
Это что дает мне вышеперечисленная пьеса:
animals:
dogs:
- { breed: "Golden Retriever", colour: "Golden" }
- { breed: "Rottweiler", colour: "Black" }
- { breed: "Labrador", colour: "Brown", "Black", "Cream" }
# BEGIN ANSIBLE MANAGED BLOCK
{'animals': {'dogs': [{'colour': 'Golden', 'breed': 'Golden Retriever'}, {'colour': 'Black', 'breed': 'Rottweiler'}, {'colour': 'Brown', 'breed': 'Labrador', 'Black': None, 'Cream': None}]}}
# END ANSIBLE MANAGED BLOCK
Любая помощь или указатели будут высоко оценены