Timur
Или https://docs.ansible.com/ansible/2.8/modules/docker_container_module.html по списку, полученному от docker_host_info
Timur
А башсибл в топку
nett00n
Сесть и подумать, зачем нужен запуск этих тасок в чекмоде 😊
плейбук должен быть индемпотентным и показывать реальные изменения при исполнении в чекмоде. при дефолтном поведении таска на "голом" сервере завалится. при недобавленной репе мы не увидим наличия/отстутсвия в репе необходимого пакета при добавлении репы в чекмоде мы вносим изменения в конфигурацию пакетного менеджера, что, кажется, чуть менее опасно скорее всего есть ещё какие-то практики, потому и интересуюсь.
Sergey
плейбук должен быть индемпотентным и показывать реальные изменения при исполнении в чекмоде. при дефолтном поведении таска на "голом" сервере завалится. при недобавленной репе мы не увидим наличия/отстутсвия в репе необходимого пакета при добавлении репы в чекмоде мы вносим изменения в конфигурацию пакетного менеджера, что, кажется, чуть менее опасно скорее всего есть ещё какие-то практики, потому и интересуюсь.
1. Плейбук - да, должен. Таска по добавлению репы идемпотентна, но [реально получающаяся] система "хост + удалённый репозиторий" - нет. 2. Поведение описано корректно. И, скорее всего, в checkmode такие таски нужно пропускать. 3. По-хорошему нужно модифицировать некоторые модули Ansible (либо написать свои) таким образом, чтобы добавление/удаление репозитория в чекмоде создавало виртуальную копию списка реп в системе, а установка/удаление пакетов в чекмоде работали не с ситемным списком реп, а с этим самым виртуальным.
George
ломаный чекмод
George
как это типично.....
Сергей
всем привет, подскажите где можно почитать про создание роли в pgsql.
Сергей
никак не получается
George
в документации постгрес, далее перенести на модуль ансибл
Sergey
ломаный чекмод
Почему же чекмод ломаный? Сам концепт ломаный, насколько я понимаю. Это должно в разных местах быть. 1. Настройка системы - одна роль, отдельная. 2. Установка и настройка компонента - другая.
George
в смысле - на его синтаксис и т.п. А еще лучше привести пример кода и описание "что хотите"
George
Почему же чекмод ломаный? Сам концепт ломаный, насколько я понимаю. Это должно в разных местах быть. 1. Настройка системы - одна роль, отдельная. 2. Установка и настройка компонента - другая.
ну, нет, тут история такая, что чек мод не работает. Это проблема. Вторая проблема, что проверить плейбук ты можешь тупо накатив на новую систему (чистую вирталку) Это ОК, но до поры до времени
George
как оно зааффектится при накатывании на уже существующий сервер - еще вопрос
George
да
George
т.е. если бы заявлялось, что он для каких-то ограниченных кейсов и большими буквами - ну, ок
George
не аргумен
nett00n
Еще раз объясняю принципы СПО. Видишь голую жопу - сшей трусы и отдай владельцу жопы. Не умеешь шить - сообщи владельцу жопы, где трусы можно купить. Не знаешь где купить - просто скажи владельцу жопы "А у вас жопа голая!". Не хочешь делать ничего из предложенного - заткнись, не твое дело. ©
Timur
т.е. если бы заявлялось, что он для каких-то ограниченных кейсов и большими буквами - ну, ок
Это называется - объяснять другим как ты бы все сделал на их месте, если бы умел
George
так мы вроде про предпоследний пункт )))))
Max
а как спо расшифровывается?
Dr. L.S.Dee
а как спо расшифровывается?
Свободное программное обеспечение.
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
Скажите, кто-то видел модули ансибла для настройки tasks/templates для kapacitor'а? Очень не хочется велосипед писать.
нет, не видел, но вообще возможно, что капаситором пользоваться не лучшая идея
George
TICK такое себе
George
https://github.com/influxdata/ansible-kapacitor - смотрел?
George
@George Gaál корпоративно подсели. :(
George
ansible-kapacitor делает только install & configure, а как таски/темплейты там идемпотентно делать - нифига.
George
ну, так у тебя все скрипты капаситора - файлы.
George
чего мешает их подложить в нужное место и перезапустить?
Oleg
чего-то как будто не хватает
результата не хватает ожидаемого))
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
это же питон
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
во !! она вспомнил ! Спасибо !
NM
Да проверю - а то тут слоев выполнения несколько в AWX (Tower)
Артём
Линт начинает орать, что таск неименованый.
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
Oleg
Это что? Что в msg вызывается в коде?
debug: msg: '{{ cont_output.ansible_facts.docker_container.Output }}'
Oleg
потом делаю: cont_output.ansible_facts.docker_container.Output.split('\n') и разбиваю всю портянку по строкам, где и хочу определить необходимую начинающуюся с ClusterID
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
И вам нужно вытащить значение ClusterID?
да, из всей этой портянки
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
Покажите, что получилось
Timur
Обновить несложно :)
Timur
Либо можете просто этот модуль локально себе в папку library положить
Timur
Вот отсюда: https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/docker/docker_container_info.py
Timur
Он вроде никаких особых зависимостей не требует