Как вставить строку не сразу после матча, используя Ansible?

Последняя альтернатива полному ответу Джона:

Просто используйте json_decode (), а второй параметр установлен в true.

$array = json_decode($url, true);

Затем он возвращает ассоциативный массив, а не объект, поэтому нет необходимости преобразовывать его после этого.

Это может быть непригоден для каждого приложения, но это действительно помогло мне легко ссылаться на свойство объекта oroginal.

Решение было найдено в этом учебнике - http://nitschinger.at/Handling-JSON-like-a-boss-in-PHP/

С уважением

0
задан nwinkler 16 January 2019 в 12:30
поделиться

1 ответ

Можно использовать вариант blockinfile (см. Пример ниже) или шаблон . Модуль lineinfile лучше всего работает с неструктурированными данными.

Это в первую очередь полезно, когда вы хотите изменить только одну строку в файле. ... проверьте blockinfile, если вы хотите вставить / обновить / удалить блок строк в файле. Для других случаев см. Модуль копирования или шаблона.

- hosts: localhost
  gather_facts: no
  vars:
    ipsec_children_conf:
      - "control"
      - "hostname"
  tasks:
    - blockinfile:
        path : /root/multinode
        create: yes
        block: |
          [ipsec:children]
          {% for conf_item in ipsec_children_conf %}
          {{ conf_item }}
          {% endfor %}


> cat /root/multinode 
# BEGIN ANSIBLE MANAGED BLOCK
[ipsec:children]
control
hostname
# END ANSIBLE MANAGED BLOCK
0
ответ дан Vladimir Botka 16 January 2019 в 12:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: