То что я не умею его готовить вполне возможно: все же я больше разработчик чем DevOps.
Примеры кейсов:
- нужно установить три раза одну и ту же роль, но с разными параметрами (например - выдача сертификатов на разные домены на одну машину). Либо include_role с vars, либо копипаста. Многословно. Хотелось бы сделать функцию а-ля `install_certs(domain)` и вызвать ее.
- есть роль которая зависит от другой роли (например некоторый сервис, который должен быть выставлен через nginx - т.е. зависим от nginx'a). Настройка nginx'a специфична, может быть использована независимо от сервиса.
и тп.
Многословность (в сравнении с вызовом функций) меня также убивает:
Пробовал, использовал и использую. Роли не избавляют необходимости создания логики на yaml. Это просто способ переиспользования и организации логики.
Если вы, конечно, не имели ввиду что-то другое.
Армянское Радио, позвольте с вами не согласиться: касандра и cockroach db не требуют отдельного типа демонов.
И активно используются в продакшен. Думаю сложно обвинять разработчиков этих систем в незнании "архитектур компьютерных программ".
В вашем примере: допустимо ли ставить мониторы ставить на каждом узле(вырожденный вариант) ? Если нет, то какой смысл обсуждать систему, которая изначально не подходит под требования задачи?
Спасибо. Смотрел - но там ограничения (The number of bricks should be a multiple of the replica count for a distributed replicated). Т.е. с моделью, когда узлы появляются и исчезают, может легко возникнуть ситуация, когда будет не кратное количество.
Andrey: Суть предельно простая: есть некий генератор (допустим ГСПЧ), работающий в фоновом решиме. И есть потребители, выполняющие задачи, на основе созданных чисел. Как потушить генератор и канал без "паники"?
Йцу Йцуевич: для массива длиной N, последний индекс N- 1. Запись в следующую ячейку некорректно и вызывает неопределенное поведение (в вашем случае нельзя удалить массив, но это может быть и другое, как написал vilgeforce ). Поэтому для строк выделяют массив длиной равной количеству символов + 1, и в последний допустимый индекс ставят \0
Примеры кейсов:
- нужно установить три раза одну и ту же роль, но с разными параметрами (например - выдача сертификатов на разные домены на одну машину). Либо include_role с vars, либо копипаста. Многословно. Хотелось бы сделать функцию а-ля `install_certs(domain)` и вызвать ее.
- есть роль которая зависит от другой роли (например некоторый сервис, который должен быть выставлен через nginx - т.е. зависим от nginx'a). Настройка nginx'a специфична, может быть использована независимо от сервиса.
и тп.
Многословность (в сравнении с вызовом функций) меня также убивает:
```yaml
- name: "xxxx"
files:
path: /a/b/c
state: directory
```
вместо ожидаемого
```python
# xxxx
files('/a/b/c', kind='directory')
```
или (более корректно)
```yaml
- include_role:
name: abc
vars:
x: 1
y: 2
```
вместо
```python
abc(x = 1, y = 2)
```
Я знаю, что предполагается, что роль должна быть самодостаточная, но поддерживать десятки копий одной и той же логики в разных местах невозможно.