George
зачем?
George
шит (прошу прощения - конечно, гит) клоун - ХУДШИЙ из способов доставки приложений
Denis
- name: Create users
postgresql_user:
name: "{{ item.name }}"
encrypted: "{{ item.encrypted | default(omit) }}"
priv: "{{ item.priv | default(omit) }}"
Denis
Вот что будет, по сути, если item.password не задано
inqfen
есть ошибка
"ansible_loop_var": "group",
"changed": false,
"group": {
"description": "security group for admin access",
"name": "admin",
"rules": " - { proto: -1, from_port: -1, to_port: -1, cidr_ip: 1.1.1.1 }\n"
blablabla стектрейс модулей
AttributeError: 'str' object has no attribute 'get
Alexander
зачем?
типичное ру-комьюнити
George
типичное ру-комьюнити
типичный ответ типичного человека, который не понимает, чего он типично хочет
Alexander
Ещё раз подтверждение моим словам.
inqfen
rules в строку матчится
inqfen
вопрос, какова хуя, ну и как поправить
inqfen
синтаксически ансибл запрещает не кавычить эту переменную
inqfen
а закавыченная в строку биндится
inqfen
собственно если в список второй ip добавить, будет
"rules": " - { proto: -1, from_port: -1, to_port: -1, cidr_ip: 1.1.1.1 }\n - { proto: -1, from_port: -1, to_port: -1, cidr_ip: 2.2.2.2 }\n"
inqfen
а не rules: [
...... ,
......
]
Denis
Так может она никогда и не была списком
Anonymous
ну примерно так и удмал , пока следственным эксперементом не подтвердил
inqfen
Timur
inqfen
security_groups:
- name: admin
description: security group for admin access
rules: "{{ admin_rule }}"
она вот здесь строкой становится, томущо кавычки
Timur
inqfen
правила одинаковые
inqfen
ну и чтобы не копипастить, в цикл
Timur
Max
типичное ру-комьюнити
"уйду от вас, злые вы?"
брат, смотри, приложения доставляются механизмами ориентированными на доставку.
в гит нередко кладется информация, которая с доставкой не связана.
при доставке ты хочешь положить что нужно, и не класть что не нужно.
inqfen
Timur
то же самое
Как вариант, сделать так:
admin_rule: |-
{% for ip in admin_ips %}
- { proto: -1, from_port: -1, to_port: -1, cidr_ip: {{ ip }} }
{% endfor %}
Timur
Помогает?
Timur
Но вообще json в ямле - это дичь
inqfen
не, то же самое
inqfen
почему json
inqfen
там переменная, в которой лист, в элементах которого есть словарь, в котором лист) Хоть это и jsonlike, но структуры-то питоньи
inqfen
объекты точнее
Max
А как вы на целевых машинах git clone делаете?
это нехороший знак.
напр. открывает возможность хаоса:
1. ты собираешься клонишь по ветке b1
2. твой друг пушнул в ветку b1
3. на целевой тачке лег код с неожидаемыми результатами (друга)
inqfen
замена на
admin_rule: |-
{% for ip in admin_ips %}
- proto: -1
from_port: -1
to_port: -1
cidr_ip: {{ ip }}
{% endfor %}
дает тот же результат
Anonymous
Anonymous
а по мне коллега прав, вот почему именно как транспорт гит - это его головная боль. Вопрос то корректный
Anonymous
а то у нас как обычно - спроси чем лучше картофель копать лопатой или вилами, тебе расскажут про эксковатор и промышенную уборку в агрохолдинге плюс мировые тренды, но не ответят на простой вопрос лопата или вилы
George
так задай вопрос - лопата или вилы
Артём
- Когда я копаю картофель алюминиевой ложкой, у неё быстро гнётся ручка.
George
на его вопрос ответ простой - МЫ НЕ ИСПОЛЬЗУЕМ гит клоун на целевых тачках, ибо мы не клоуны. Есть гитлаб-раннер, есть ансибл )
George
George
#странного
Артём
Что именно? Я бы хотел ответ «Возьми латунную, они прочнее. Кстати, ты знаешь, что бывают экскаваторы?»
George
Ну, сорри, я должен был догадаться, что коллега хотел именно такой ответ ) а не заходить с козырей
Артём
Вообще решить проблему с минимальными модификациями исходного, по-моему, хороший вариант.
inqfen
если насрано, то не посоветовать убрать, а посоветовать сверху бумажку кинуть?)
inqfen
Это как раз минимальные модификации
George
George
Ну, типа "парни, я понимаю, что гит клон на целевом сервере плохо, но как бы мне эту команду вызвать на списке удаленных серверов... детали такие-то"
Отделение Bereke Bank
А как вы на целевых машинах git clone делаете?
мне советовали упаковывать сайт/прил-е в артифакт и деплоить уже его. в моем случае это архив с сайтом, который потом ансибл распаковывает в нужное место и меняет симлинк
Alexander
Alexander
Max
ну и запускай команду. надо авторизацию наладить.
Max
Alexander
inqfen
Alexander
Max
👆
Max
🤣
Max
Alexander
Max
inqfen
Max
и при развертке создавать конфигу, которая env-specific
Alexander
держи в vault в коде
Как использовать, я не понимаю. key_file аргумент хочет файл на машине исполнения
inqfen
https://docs.ansible.com/ansible/latest/modules/git_module.html#git-module
George
inqfen
разваултил
@
сделал все что надо в тасках
@
удалил
inqfen
никто его там не заставляет держать
Alexander
George
если по ssh - ключ должен быть в каталоге пользователя, под которым ансибл туда на сервер зашел