Alex
> А если other_server не один?
не очень представляю зачем такое может понадобится, но тогда попробовать
when: current_host_ip in list_of_ips
или банальный with_items/loops
when: current_host_ip == hostvars[item].ansible_default_ipv4.address
with_items:
- server1
- server2
Max
это уже изменит тон этой беседы.
Max
есть сборка фактов, как часть модуля setup.
Max
в числе этих фактов мак адреса.
Max
можно их собрать все в список.
Max
дубликаты будут там
Max
потом этот список можно профильтровать через unique
Max
и сравнить если списки равны по длинне.
Max
@Dr_Rob0tnik 👆
Dr_Rob0tnik
@naughtius_max Благодарю 👍
Timur
Timur
А то выглядит как очередное YAML-программирование
Dr_Rob0tnik
Max
George
как preflight check - почему нет-то?
George
мне вот интересно, а дублирующиеся маки в разных ДЦ - это прям такая проблема, что все?
Max
в другом случае надо использовать какой-нить брокер мак адресов, и не заморачиваться.
Dok
Привет! Скажите, почему цикл в конфиге выводит по одной букве?
ansible.hosts
sites=api
conf.j2
{% for site in sites %}
if failed unixsocket /tmp/php7.1-{{site}}.sck for 2 cycles then restart
{% endfor %}
OUTPUT
if failed unixsocket /tmp/php7.1-a.sck for 2 cycles then restart
if failed unixsocket /tmp/php7.1-p.sck for 2 cycles then restart
if failed unixsocket /tmp/php7.1-i.sck for 2 cycles then restart
George
потому что это строчка
George
строчка - тоже итерируемый объект (посимвольно)
George
sites=['api']
George
так лучше
George
😭🤦♂️
Andor
sites=api == sites=['a', 'p', 'i']
George
Dok
Благодарю
inqfen
Anonymous
@k_i_r_y будет жить. Поприветствуем!
Sergey
давно?
Всегда 😊
Если им пытаются пользоваться как языком программирования - это его таковым не делает.
Alex
но при этом он тьюринг полный :D
Alex
так что не все так просто
Sergey
Alex
https://stackoverflow.com/questions/40127586/is-ansible-turing-complete
Timur
Timur
block with where statement allows branching. Even within loops.
Timur
Во-первых, нет никаких 'where' statement. Видимо, имелось в виду when
Timur
Во-вторых, block не работает с loop
Sergey
Timur
playbook-related plugins are counted as a valid way to extend playbook, therefore they provide full python features.
Это вообще непонятно о чем. Видимо, про модули и плагины
Sergey
Sergey
Andor
Sergey
Timur
На принципиальном уровне я согласен, что при желании на ансибле можно реализовать почти любую императивную логику. С помощью conditionals, loops и include_* можно практически любой алгоритм накодить. Другое дело - сколько усилий и ломания мозга это потребует по сравнению с нормальными императивными языками
George
Anonymous
@orphan будет жить. Поприветствуем!
manefesto
Привет
Бился тут с проблемой что не работает деплой через ansistrano
Переписал плейбук и снова не работает
В логах увидел следующее
fatal: UNREACHABLE! => {"changed": false, "msg": "argument must be an int, or have a fileno() method.", "unreachable": true}
когда то с таким сталкивался, но хоть убей не помню в чем была проблема
Alex
а с -vvvvv пробовал запускать?
Alex
а на каком конкретно таске выдает эту ошибку?
Fess
Alex
та иногда берешь плейбуку от "синьйора" devops, а там 80% bash портянок, вот и пойди разберись в них. Удовольствие еще то :)
Dr. L.S.Dee
manefesto
inqfen
господа, памагити
inqfen
что-то то ли уже ночью не соображаб, то ли глаз замылился
inqfen
написал модуль, запускаю
inqfen
получаю вывод
TASK [test module] *******************************************************************************************************************************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": false, "module_stderr": "", "module_stdout": "{'domain_name': 'example.com', 'branch_name': 'release-v1.1.1'}\n\n{\"invocation\": {\"module_args\": {\"branch_name\": \"release-v1.1.1\", \"domain_name\": \"example.com\"}}, \"changed\": true, \"full_name\": \"v1-1-1\", \"short_name\": \"v1-1-1\"}\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 0}
inqfen
почему failed, если весь модуль отрабытывает, stderr пусто, rc 0
George
ну, может криво написал. Покажи код. Сделай более вербозный вывод
inqfen
Вот эти full name и short name показывают, что все ок
inqfen
И перед module exit добавлял print, все ок, он отрабатывает
inqfen
Да и exit code 0
Max
Anatoly
Всем добрый день! Подскажите пример скрипта создания динамического json инвентори файла.
Max
Max
примеры висят в гитхабе.
Max
можно посмотреть на ec2.py и его конфиг - ec2.ini
Max
Max
(вероятно, может уже есть такой скрипт)
Anatoly
Спасибо, посмотрю. Скрипт на питон, gcp.
Max
есть такой.
Max
чем не подходит вам?
Anatoly
О супер, где посмотреть?
Max
загуглить на колдовскую фразу "ansible gcp dynamic inventory"
Anatoly
🙂