Как правильно внести изменения в файл конфигурации приложения на php используя ansible?
Как правильно внести изменения в файл конфигурации приложения на php используя ansible?
- Исходные данные:
vars:
ips:
- 192.168.0.1
- 192.168.0.4
- 192.168.0.7
- Файл конфигурации
config.php:
return [
'ips': [
'192.168.0.1',
'192.168.0.2',
'192.168.0.3',
'192.168.0.4',
'192.168.0.5',
]
]
- Нужно обновить файл конфигурации
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 таски делают каждый раз противоположные действия - то идемпотентность теряется. Это противоречит концепции системам контроля конфигурации.