Андрей
а если я буду регистрировать выхлоп docker_container_info то я же должен указать какой именно контейнер меня интересует? то есть container:v1 а не container правильно?
inqfen
Тебе надо name указать
inqfen
Этот модуль показывает info по конкретному контейнеру
inqfen
https://docs.ansible.com/ansible/latest/modules/docker_host_info_module.html
А вот здесь можно получить список контейнеров на машине
inqfen
Но твою логику все-таки лучше покрыть модулем своим. Программирование на питоне куда лучше программирования на ансибле
Андрей
согласен
Андрей
я ж так понимаю, что лучше всего пользоваться этим https://pypi.org/project/docker/
Андрей
?
Андрей
и еще такой вопрос, как вы считаете если просто делать так
docker ps --filter name=container* --filter status=running -aq | xargs docker stopчерез shell
Плохой вариант?
Sergey
Андрей
))
Андрей
спасибо, ребята, за ответы
если вдруг кто позже прочитает и будет что добавить, буду благодарен
Alex
Aleksey
Приветствую. Есть задача в зависимости от входных данных выполнять playbook на разных хостах. Как это кошерно сделать? Я что-то слышал про delegate. Это оно?
Aleksey
Т.е. у меня задача получается запускать playbook с разными inventory
Aleksey
Не плейбук, а плей, конечно же
Андрей
docker swarm
сворм не хочу, спасибо)
оно сейчас на компоузе работает. я просто начитался в докер группе советов деплоить через ансибл и решил прикинуть как это будет
Aleksey
Anton
ребят, а как в плейбуке указать просмотр status сервиса?
Aleksey
Насколько нормально вместо delegate_to для winrm использовать вот такую конструкцию: https://pastebin.com/hAHwZaT0 а потом в роли указывать hosts для необходимых тасков?
Aleksey
Коллеги, кто-то может объяснить почему в таком плейбуке: https://pastebin.com/mH1H2iWu возникает следующая ошибка:
ERROR! The 'add_host' module bypasses the host loop, which is currently not supported in the free strategy and would instead execute for every host in the inventory list.
The error appears to be in '/tmp/awx_1145_h35qt1tm/project/create_os_access_groups.yml': line 10, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
dsc_modules: ['xActiveDirectory', 'xDnsServer']
- add_host:
^ here
Я не понимаю о чем говорит ошибка
Sergey
Aleksey
Aleksey
Я не читал про стратегии и не понял про что ошибка
Aleksey
А, может, просто уже туплю
Alex
подскажите, а как проще всего в json файле произвести замену по регулярному выражению? Что то lineinfile не работает как хочется
Alex
[
{
"description": "Some description. INST-123",
"log": "report/123.txt"
}
],
[
{
"description": "Some description. INST-456”,
"log": "report/456.txt"
}
]
надо заменить все INST-123/456 на ссылки
т.е получить что то типа
"description": "Some description. <a href='{{ url }}'>INST-123</a>"
Alex
пробовал такой таск
lineinfile:
backrefs: yes
path: test.json
regexp: '(.+)(INST-[0-9]{1,7})(.+)'
line: '\1<a href=example.com/\2>\2</a>\3'
state: present
но замена происходит только в одной позиции, а не во всем файле
Anton
Alex
Alex
да. вопрос снят
Maz
Any Python/Redis pro around? I have a bunch of records fetched from mysql using joins.
I want to store this data in a redis cache.
Which is the most efficient way to do this?
citius
citius
Maz
Balagur
Всем привет! А можно как-то указать каталог в котором будут темплейты и писать их в такую же структуру файлов?
Balagur
Чтобы каждый файл темплейта не описывать
Oleg
https://docs.ansible.com/ansible/latest/modules/template_module.html
roles/YOUR_ROLE_NAME/tasks/ тут таски
roles/YOUR_ROLE_NAME/templates/ тут файлики-шаблончиик
- name: task name
template:
src: somefile.j2
dest: /target/somefile
ну еще можно опредеить им всем template_path
Ivan
Коллеги, а есть ли возможность создать инвентарь таким образом, чтобы если плейбука по нему будет запущена без указания лимита он выдавал бы пустой результат, а если с лимитом - то брал бы нужное. планируем тут некоторое количество деструктивных операций с заранее сгенеренным инвентарем и очень хочется какую-то "защиту от дурака"
George
https://stackoverflow.com/questions/44855892/how-to-get-value-of-limit-argument-inside-an-ansible-playbook
George
просто проверь, что переменная != null
Sergey
Ivan
те только на уровне плейбука?
Sergey
Скорее даже - плагин, т.к. интерфейс с модулями всё же сильно ограничен.
Tadeusz
Sergey
Тогда плагин - твой выбор. иначе ты вступаешь в тёмную зону "программирования на Ansible"/
Ivan
эх. понимаю, что глупая затея, но была надежда как-то сделать инвентарь в котором хосты доступны по именам, но не попадают в all. Понимаю, что скорее всего это из серии "вы не должны этого хотеть" но это бы прям решило задачу
Ivan
inqfen
Ivan
inqfen
Можно в hosts переменную передавать, а не на all запускать
inqfen
Соответственно, если она пустая - то не запустится ни на какую группу
inqfen
Костыль, но работать будет
inqfen
Sebor▂▅▇█▓▒░
Aleksey
Привет, у меня в плейбуке несколько плеев:
---
- hosts: localhost
strategy: linear
tasks:
- set_fact:
dc: '{{ dns_domain.split(".") | lower }}'
- add_host:
name: rb-pshost1.sts.rus.contoso
groups: pshost
when: dns_domain == 'sts.rus.contoso'
- add_host:
name: rb-pshost1.bank.rus.contoso
groups: pshost
when: dns_domain == 'bank.rus.contoso'
- hosts: pshost
roles:
- role: create_os_access_group
Вот в роли create_os_access_group не получается обратиться к списку dc
Как переменную сделать видимой в нескольких плеях? По идее должен register помочь. Что-то типа такого:
- '{{ dns_domain.split(".") | lower }}'
register: dc
Только я не понимаю как это правильно записать - нужен же какой-то модуль
Lamobot
Aleksey
Tony
привет
Плей из пока двух тасок
1) Первая таска получает вм-ку из сферы и провайдит айпишник. Машинка Winddows Server 2016
2) Дальше я хочу уже на запроивиженной машинке делать всякое (например поправить hosts)
Почитал как подключаться к виндовс машинкам, в базовом образе вроде уже настроено и winrm слушает порт и работает
https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html
Они пишут что нужно задефайнить след переменные в host_vars:
ansible_user: LocalUsername
ansible_password: Password
ansible_connection: winrm
ansible_winrm_transport: basic
Но я вижу проблему здесь, так как в инвентори этих машин быть не может заранее, а значит и прописывать что-то для хостов/групп теряется смысл
Машины будут создаваться в процессе
Тут пример того что я делаю - https://pastebin.com/5CXiKPMF
Вопрос в том как мне попасть за вновь запровиженную машинку Windows правильно ? Куда писать эти параметры ? Или вообще нужно делать по другому, например не через   winrm etc
Sergey
Aleksey
Gunnery
дайте совет, пожалуйста, где бы поискать инфу по ключевым (зарезервированным) словам ансибла (или может в джиндже такое есть)? или про что-то очень похожее
тут не нашел нужной инфы https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html
inqfen
inqfen
Есть то, что ты скинул, есть магические переменные
Gunnery
увы, но спасибо, я и это изучу
inqfen
Это не зарезервированные слова, но они имеют какое-то значение менять которое случайным образом не нужно
Gunnery
вот например, в чужой роли есть
set_fact:
members: "{{item}}:{{brick_root}}/brick {{members}} "
в members попадают лишние хосты, которые хоть каким-то боком причастны к роли?
Gunnery
и members ни в этой роли, ни в переменных не присутствует
inqfen
В чужой роли всякая фигня может быть
inqfen
Поэтому код надо комментировать