Timur
Или
https://docs.ansible.com/ansible/2.8/modules/docker_container_module.html
по списку, полученному от docker_host_info
Timur
А башсибл в топку
nett00n
Сесть и подумать, зачем нужен запуск этих тасок в чекмоде 😊
плейбук должен быть индемпотентным и показывать реальные изменения при исполнении в чекмоде.
при дефолтном поведении таска на "голом" сервере завалится.
при недобавленной репе мы не увидим наличия/отстутсвия в репе необходимого пакета
при добавлении репы в чекмоде мы вносим изменения в конфигурацию пакетного менеджера, что, кажется, чуть менее опасно
скорее всего есть ещё какие-то практики, потому и интересуюсь.
George
Ali
Sergey
плейбук должен быть индемпотентным и показывать реальные изменения при исполнении в чекмоде.
при дефолтном поведении таска на "голом" сервере завалится.
при недобавленной репе мы не увидим наличия/отстутсвия в репе необходимого пакета
при добавлении репы в чекмоде мы вносим изменения в конфигурацию пакетного менеджера, что, кажется, чуть менее опасно
скорее всего есть ещё какие-то практики, потому и интересуюсь.
1. Плейбук - да, должен. Таска по добавлению репы идемпотентна, но [реально получающаяся] система "хост + удалённый репозиторий" - нет.
2. Поведение описано корректно. И, скорее всего, в checkmode такие таски нужно пропускать.
3. По-хорошему нужно модифицировать некоторые модули Ansible (либо написать свои) таким образом, чтобы добавление/удаление репозитория в чекмоде создавало виртуальную копию списка реп в системе, а установка/удаление пакетов в чекмоде работали не с ситемным списком реп, а с этим самым виртуальным.
nett00n
Sergey
George
ломаный чекмод
George
как это типично.....
Сергей
всем привет, подскажите где можно почитать про создание роли в pgsql.
Сергей
никак не получается
George
в документации постгрес, далее перенести на модуль ансибл
Sergey
ломаный чекмод
Почему же чекмод ломаный? Сам концепт ломаный, насколько я понимаю. Это должно в разных местах быть.
1. Настройка системы - одна роль, отдельная.
2. Установка и настройка компонента - другая.
George
в смысле - на его синтаксис и т.п. А еще лучше привести пример кода и описание "что хотите"
George
как оно зааффектится при накатывании на уже существующий сервер - еще вопрос
nett00n
George
да
George
т.е. если бы заявлялось, что он для каких-то ограниченных кейсов и большими буквами - ну, ок
Sergey
George
не аргумен
nett00n
Еще раз объясняю принципы СПО.
Видишь голую жопу - сшей трусы и отдай владельцу жопы.
Не умеешь шить - сообщи владельцу жопы, где трусы можно купить.
Не знаешь где купить - просто скажи владельцу жопы "А у вас жопа голая!".
Не хочешь делать ничего из предложенного - заткнись, не твое дело.
©
Timur
Max
George
так мы вроде про предпоследний пункт )))))
Max
а как спо расшифровывается?
Dr. L.S.Dee
Выучил со времен нацпроекта ИСО - Информатизация системы образования.
Dr. L.S.Dee
** Это когда про Поносова вещали и всем Альт навяливали.
Dr. L.S.Dee
Забавно, что редакция называлась "Hey teacher"
Dr. L.S.Dee
Hey teacher! Leave those kids alone!
Oleg
коллеги.
использую модуль docker_container, имеется некий вовод, необходимо из этого вывода вычлинить строку, делаю так:
- name: Debug
debug:
msg: "{{ cont_output.ansible_facts.docker_container.Output.split('\n') }}"
- set_fact:
output: "{{ cont_output.ansible_facts.docker_container.Output.split('\n') }}"
- set_fact:
final: '{{ output | regex_search("^#ClusterID:") }}'но нет ожидаемой строки начинающийся с #ClusterID:
Oleg
в рез-те ошибка
{"msg": "Unexpected templating type error occurred on ({{ output | regex_search(\"^#ClusterID:\") }}): expected string or buffer"}
Oleg
рез-т команды .split('\n') таков:
"\u001b[0;32m?\u001b[0m Element <body> was present after 21 milliseconds.",
"\u001b[0;32m?\u001b[0m Element <body> was present after 11 milliseconds.",
"\u001b[0;32m?\u001b[0m Element <#loginInfo> was visible after 29 milliseconds.",
"\u001b[0;32m?\u001b[0m Element <#clusterNodeId> was present after 14 milliseconds.",
"#ClusterID: 11",
George
Скажите, кто-то видел модули ансибла для настройки tasks/templates для kapacitor'а? Очень не хочется велосипед писать.
George
George
TICK такое себе
George
https://github.com/influxdata/ansible-kapacitor - смотрел?
George
@George Gaál корпоративно подсели. :(
George
George
ansible-kapacitor делает только install & configure, а как таски/темплейты там идемпотентно делать - нифига.
George
ну, так у тебя все скрипты капаситора - файлы.
George
чего мешает их подложить в нужное место и перезапустить?
George
а опиши что нужно )
Oleg
а опиши что нужно )
если вы мне то из вывода вида:
"\u001b[0;32m?\u001b[0m Element <body> was present after 21 milliseconds.",
"\u001b[0;32m?\u001b[0m Element <body> was present after 11 milliseconds.",
"\u001b[0;32m?\u001b[0m Element <#loginInfo> was visible after 29 milliseconds.",
"\u001b[0;32m?\u001b[0m Element <#clusterNodeId> was present after 14 milliseconds.",
"#ClusterID: 11",строку
#ClusterID: 11
George
@George_Gaál У них во-первых появились (когда я смотрел - не было), спасибо, сейчас попробую. А во-вторых (то, что меня беспокоит) - чтобы когда task'а поменялась, чтобы её обновили в капаситоре, а не тупо залили один раз. Ещё одна подстава от TICK'а - если на каждый прогон делать define, то у таски сбрасывается состояние, а от этого идут глюки мониторинга.
George
ууууу
George
George
это же питон
Timur
Oleg
ууууу
тогда просто модифицирую вывод убрав # и попробую еще раз
Oleg
Как получаете вывод? Покажите код
- name: Start container with nightwatch and run test script
docker_container:
name: nightwatch
image: nightwatchjs:latest
recreate: yes
links:
- "chromedriver:chromedriver"
volumes:
- "{{playbook_dir}}/test:/home/node"
command: '--config nightwatch.js --test run/postdeployment.js'
register: cont_output
NM
Как получаете вывод? Покажите код
Тимур а напомни plz. как там debug вывод организовать перед таском - чтобы задача выводила в консоль результаты. А то мой verbose недостаточен (Tower). Что то вроде debug msg ....
Артём
- name: Echo var
debug:
msg: ‘{{ var }’
NM
во !! она вспомнил ! Спасибо !
Timur
NM
Да проверю - а то тут слоев выполнения несколько в AWX (Tower)
Артём
Линт начинает орать, что таск неименованый.
Timur
Timur
Timur
Можно вот так:
- name: debug myvar
debug:
var: myvar
Oleg
Дебаг для cont_output можете дать полный? Как сама переменная выглядит?
"msg": \u001b[0m\nRunning: \u001b[0;32mReads cluster info from hac for: https://example.com\u001b[0m\n\u001b[0;32m?\u001b[0m Element <body> was present after 17 milliseconds.\n\u001b[0;32m?\u001b[0m Element <body> was present after 12 milliseconds.\n\u001b[0;32m?\u001b[0m Element <#loginInfo> was visible after 28 milliseconds.\n\u001b[0;32m?\u001b[0m Element <#clusterNodeId> was present after 13 milliseconds.\nClusterID: 10\n
Timur
Oleg
потом делаю: cont_output.ansible_facts.docker_container.Output.split('\n')
и разбиваю всю портянку по строкам, где и хочу определить необходимую начинающуюся с ClusterID
Timur
Oleg
Просто cont_output покажите
ok: [localhost] => {
"msg": {
"ansible_facts": {
"docker_container": {
"Output": "\u001b[0m\nRunning: \u001b[0;32mReads cluster info from hac for: https://examples.com\u001b[0m\n\u001b[0;32m?\u001b[0m Element <body> was present after 17 milliseconds.\n\u001b[0;32m?\u001b[0m Element <body> was present after 12 milliseconds.\n\u001b[0;32m?\u001b[0m Element <#loginInfo> was visible after 30 milliseconds.\n\u001b[0;32m?\u001b[0m Element <#clusterNodeId> was present after 14 milliseconds.\nClusterID: 10"вот...
Timur
И вам нужно вытащить значение ClusterID?
Oleg
Timur
Имя контейнера знаете?
Oleg
Имя контейнера знаете?
- name: Start container with nightwatch and run test script
docker_container:
name: nightwatch
image: nightwatchjs:latest
recreate: yes
links:
- "chromedriver:chromedriver"
volumes:
- "{{playbook_dir}}/test:/home/node"
command: '--config nightwatch.js --test run/postdeployment.js'
register: cont_outputда, он один в таске
Timur
Попробуйте теперь вот так:
- name: Get infos on container
docker_container_info:
name: nightwatch
register: docker_result
И вывод:
- name: Print information about container
debug:
var: docker_result.container
Timur
Покажите, что получилось
Oleg
Timur
Обновить несложно :)
Timur
Либо можете просто этот модуль локально себе в папку library положить
Timur
Вот отсюда:
https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/docker/docker_container_info.py
Timur
Он вроде никаких особых зависимостей не требует