Как правильно внести изменения в файл конфигурации приложения на php используя ansible?

Как правильно внести изменения в файл конфигурации приложения на php используя ansible?

  1. Исходные данные:
vars:
    ips:
        - 192.168.0.1
        - 192.168.0.4
        - 192.168.0.7
  1. Файл конфигурации config.php:
return [
    'ips': [
        '192.168.0.1',
        '192.168.0.2',
        '192.168.0.3',
        '192.168.0.4',
        '192.168.0.5',
    ]
]

  1. Нужно обновить файл конфигурации config.php из п.2 в соответствие с исходными данными из п.1 и привести его к виду:
return [
    'ips': [
        '192.168.0.1',
        '192.168.0.4',
        '192.168.0.7',
    ]
]


Ответы (1 шт):

Автор решения: don Rumata

Плейбук будет выглядеть примерно так:

---
  - name: Create php config
    hosts: all
    strategy: free
    serial:
      - "100%"
    vars:
      ips:
        - 192.168.0.1
        - 192.168.0.4
        - 192.168.0.7
    tasks:

    - copy:
        dest: /tmp/php_array.php
        content: |
          return [
              'ips': {{ ips | to_json }}
          ]
        backup: yes

Если менять только часть, а не весь файл менять, то модуль copy меняем на модуль blockinfile.

В пхп не умею, так что негде проверить на сколько валидно там скобки/запятые расставились. Я бы на вашем месте данные бы хранил/передавал всё-таки в json. Тем более конфиги.

UPD. Пример таски с blockinfile

- blockinfile:
    path: /tmp/php_array.php
    block: |
      return [
          'ips': {{ ips | to_json }}
      ]
    backup: yes

Не, если 2 таски делают каждый раз противоположные действия - то идемпотентность теряется. Это противоречит концепции системам контроля конфигурации.

→ Ссылка