Oleksandr
а чем отличается развертывание PROD от STAGE?
George
George
Маленькими особенностями для дебагп ?
George
Взаимосвязями с другими сервисами ?
Aleksey
А в остальном отличий от поднятия обычной реплики нет
Oleksandr
Oleksandr
Aleksey
Да, MySQL
Oleksandr
Pavel
Timur
Timur
Роли подразумевают более-менее простые атомарные состояния, к которым приводит исполнение роли
Oleg
Aleksey
Тут скорее для плейбуки задача
Ну, оно почти так и получается... В роли есть секции "снять бекап", "переписать бекап", "развернуть бекап", и вконце "готовить STAGE" или "настроить репликацию и засинкать". Но, пологаю, это worst practices
Max
Max
если надо поддерживать несколько систем с различными местами - решаю на месте.
Max
обычно на каждую ansible_os_family создаю каталог.
при загрузке в тасках задаю источник с префиксом ос.
Max
т.е. под дэбы ./templates/Debian/etc/nginx/sites-available/bla.conf.j2
Max
но могут быть грабли в разных случаях.
Tadeusz
Tadeusz
Tadeusz
Вообще, в env зашить можно путь и все
Max
Max
Max
Все верно, зачем не нужно.
Tadeusz
Ну каждому свое, да, но мне больше унификация такая нравится
Max
Max
как и коммунизм....
Max
🤣🤣🤣
Max
Tadeusz
Max
🙏
Grisha
Ребзя,подскажите плиз как мне сделать сравнение с hostname ? when: "{{ item.value.default_options.target_minion }} == {{ hostname }}"
Grisha
у меня не получается сравнимать с {{ item.value.default_options.target_minion }} с настоящим hostname в самой машине
Max
{{ ansible_nodename }}
Timur
Grisha
мне нужно чтобы с файла достались только нужные мне данные, а нужные выглядят так что если hostname совпадает с target_minion
Grisha
- proxysql_mysql_users:
login_user: "{{ admin_user }}"
login_password: "{{ admin_password }}"
username: "{{ item.key }}"
password: "{{ item.value.default_options.hash }}"
state: present
with_dict: "{{ mysql.servers.users }}"
when: "{{ item.value.default_options.target_minion }} == {{ ansible_nodename }}"
Grisha
вот так эьто выглядит
Sergey
уууу proxysql
Grisha
« уууу» это плохо?
Tadeusz
Кривые кавычки это плохо
Sergey
у меня вот некоторые модули не работали для ансибла под proxysql, дока говорит одно, линтер говорит другое
Sergey
пришлось некоторые части из конфига все равно забирать
Grisha
там фикс нужно делать в питон скрипте
Timur
Timur
Хотя тут принципиально не совсем правильный подход
Grisha
Такое можно запилить, но это не совсем то
Timur
- proxysql_mysql_users:
login_user: "{{ admin_user }}"
login_password: "{{ admin_password }}"
username: "{{ item.key }}"
password: "{{ item.value.default_options.hash }}"
state: present
loop: "{{ mysql.servers.users | selectattr('default_options.target_minion', 'equalto', inventory_hostname) | list }}"
вот так логичнее
Oleg
хелп плтз!
есть такой код:
line: "{{ admvip_ip }} {{ item }}.ms.ycs.io"
with_items:
- "{{ var }}"
Oleg
var - это список из нескольких серваков, как сделать чо бы каждый сервак из списка был по строчно добавлен в файл, типо такого:
10.10.10.10. server1.ms.ycs.io
10.10.10.10. server2.ms.ycs.io
и так далее
Oleg
10.10.10.10 server1.ms.ycs.io вот так*
Oleg
сейчас все в одну строку 10.10.10.10 server1 server2.ms.ycs.io
Oleg
исели использовать фильтр join то домен дописывается к названию сервера,но все равно все в одну строку
Timur
Oleg
Что за код? Что за line?
модуль lineinfile...просто выше все норм, проблема только в том, что в одну строку все фигачет
Timur
Timur
Скопируйте сюда из плейбуки или роли просто
Timur
И содержание var тоже покажите как выглядит
Oleg
Нормально код дайте
- name: 111
set_fact: list = "{{ item }}"
with_inventory_hostnames:
- "{{ groups['app'] }}"
- "{{ groups['adm'] }}"
register: list_all
- name: 222
set_fact:
var2: "{{ list_all.results | map(attribute='item') | list }}"
- name: 333
become: yes
lineinfile:
path: "/etc/hosts"
state: present
owner: "root"
group: "root"
mode: "0644"
line: "10.10.10.10 {{ item }}.com"
delegate_to: "{{ target_server }}"
with_items:
- "var1" <---тут 1 сервер и н нормально выполняется (10.10.10.10 server1.com)
- "var2" <-----тут несколько (отфильтрованно с помощью фильтра list и в рез-те в одну строку)
Timur
Timur
Для начала - объясните, пожалуйста, зачем вам вот такой странный код?
- name: 111
set_fact: list = "{{ item }}"
with_inventory_hostnames:
- "{{ groups['app'] }}"
- "{{ groups['adm'] }}"
register: list_all
- name: 222
set_fact:
var2: "{{ list_all.results | map(attribute='item') | list }}"
Timur
Что и зачем вы пытаетесь сделать с его помощью?
Timur
Во-вторых, что вы хотите получить в результате вот этого таска?
- name: 333
become: yes
lineinfile:
path: "/etc/hosts"
state: present
owner: "root"
group: "root"
mode: "0644"
line: "10.10.10.10 {{ item }}.com"
delegate_to: "{{ target_server }}"
Andrey
Все... нервов не хватает понять, подскажите что опять у меня с синтаксисом (5 строк опять)
https://gist.github.com/panov-andy/f060137a965f032c9e8e5d5d15f20b2a
Oleg
delegate_to - лишнее, а так модиикатция etc
Timur
Oleg
ага
Andrey
Timur
ага
Откуда берется список хостов?
Timur
Timur
Т.е. просто нужны хостнеймы из определенных групп?
Timur
Что мешает сделать так?
- name: 333
become: yes
lineinfile:
path: "/etc/hosts"
state: present
owner: "root"
group: "root"
mode: "0644"
line: "10.10.10.10 {{ host_name }}.com"
with_inventory_hostnames:
- app:adm
loop_control:
loop_var: host_name
Timur
Где app и adm - имена нужных групп
Oleg