checkdiff
- hosts: localhost
gather_facts: false
vars:
test:
- name: 1
- name: 2
dns_data:
name: test
dns:
- txt1
- txt2
- name: 3
tasks:
- debug:
msg: "{{ (item.dns_data | default({}))['dns'] | default([]) | map('regex_replace', '^(.*)$','\"\\1\"') | list }}"
loop: "{{ test }}"
костыли конечно
checkdiff
ok: [localhost] => (item={'name': 1}) => {
"msg": []
}
ok: [localhost] => (item={'name': 2, 'dns_data': {'name': 'test', 'dns': ['txt1', 'txt2']}}) => {
"msg": [
"\"txt1\"",
"\"txt2\""
]
}
ok: [localhost] => (item={'name': 3}) => {
"msg": []
}
Viktor
checkdiff
checkdiff
Мы пока wildcard не выписываем, поэтому тонкостей я не знаю (увидел только у вас, что там 2 записи), но вцелом сейчас не вижу большой проблемы доработать роль для двух записей, но сейчас код намного менее костыльней выглядит (имхо). P.S. роль еще не готова, но сегодня будет (надеюсь)
Viktor
{{ ((pending_challenges | json_query(query_filter)) |
map(attribute='challenge_data_dns') | list | first | dict2items) |
map(attribute='value') | list | first | map('regex_replace', '^(.*)$', '"\1"' ) | list }}
Viktor
так поехало
Viktor
Но почему то только без '\'
Viktor
если поставить '\"\\1\"'
Viktor
будет "\\\"mugJ_CjY2WOgRaedu2VyEuZEhIEro1-_LhLOZ5Z2zMA\\\"" что-то типо того, почему так?
Viktor
но задачу решил, спасибо всем кто помогал :)
Viktor
"value": [
"\"mugJ_CjY2WOgRaedu2VyEuZEhIEro1-_LhLOZ5Z2zMA\"",
"\"8XL5HFhm3x14q24qmv5rS1nEf57l2t3w2Fk-Iuj0dtI\""
],
checkdiff
👍
Viktor
👍
Почему без \ теперь работает?
checkdiff
мне кажется история с кавычками '"\1"'
так тоже работает:
- debug:
var: (item.dns_data | default({}))['dns'] | default([]) | map('regex_replace', '^(.*)$','"\1"') | list
"(item.dns_data | default({}))['dns'] | default([]) | map('regex_replace', '^(.*)$','\"\\1\"') | list": [
"\"txt1\"",
"\"txt2\""
],
ShadoWalkeR
Господа! Есть творческий вопрос. Смотрите - есть такая утилита для контроля доступа бинарем к ресурсам CPU как cpulimit. При её вызове она захватывает консоль. И пока не послано Ctrl+C делать с ней ничего нельзя. Как мне запустить её ансиблом, чтобы ограничивалось потребление следующей таской, после чего можно было безболезненно прибить?
ShadoWalkeR
Пока что в голову пришел способ с shell -> screen-> cpulimit
Sergey
George
George
не нужен cpulimit
ShadoWalkeR
Да я нагруженные сервера не хочу одной тяжелой таской нагнуть. Ей по 10-15% CPU хватит, а без лимита она приоритетно выжирает все что можно
George
nice можно еще поставить
ShadoWalkeR
Тут вторая проблема - там в тяжелой таске шелл
ShadoWalkeR
И это не обойти никак
Sergey
ShadoWalkeR
#странное
Я думал у моих вопросов этот хэштэг по умолчанию 😃
Sergey
https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#
Напиши systemd-юнит с типом oneshot.
Daniel
не подскажите с траблой, что-то запутался. делаю так:
[all:vars]
type=stage
Хост в группе group1. переменная для хоста не доступна. хотя по идеи должна. нет?
ShadoWalkeR
О, а с systemd это уже идея
George
Илья IT
Всем привет! Помогите плиз, чот не гуглится ответ... Значит пишу плейбуку для раскатки монго кластера. Дошел до создания ползуна и тут затык:
- mongodb_user:
database: admin
name: test
password: pass123pass
roles: userAdminAnyDatabase
state: present
и ошибка:
FAILED! => {"changed": false, "failed": true, "msg": "Use of SCRAM-SHA-256 requires undigested passwords"}
Илья IT
Sergey
Sergey
И какое отношение оно имеет к Ansible?
Илья IT
Sergey
Илья IT
Гуглил?
Ну если я говорю что не гуглится, это явно значит, не то , что рука на гугл не поднимается...
George
Илья IT
Sergey
Ну я вот тоже хотел....... гхм........ написать разное. Но в общем да, не пробовал. Иначе первая же ссылка в гугле по фразе тебе бы всё сказала.
Илья IT
Ок, питоновские вские свистелки я ставил. Оно проблему не решило.
Div
господа, можно я тоже вкину на вентилятор странного? за пару дней поиска я так и не смог найти ответ на вопрос, можно ли лимитировать вывод таска только ошибками?
Andrey Pavlov
Подскажите пожалуйста, как обратиться к этой переменной? Это не работает: var: system_print.stdout_lines.installed-version
Div
всякие калбэк плагини предполагают модификацию основного конфига ансибля, чего хотелось бы избежать
George
George
Ибо у тебя там массив строк.
checkdiff
George
George
[0], [1]...
George
Проще грепать изначально версию, иначе регистрировать ошибку
checkdiff
всмысле?
у меня всегда под рукой в ansible.cfg лежит закоментированные строки на случай, если надо будет что-то отключать/включать.
#callback_whitelist = timer, profile_roles, default, actionable, skippy
# http://docs.ansible.com/ansible/2.5/plugins/callback.html
Anatoliy
кто-нибудь реализовывал /system resect-configuration для микротика?
Andrey Pavlov
George
Div
всмысле?
из того, что есть в офф доках я понял, что нужно либо модифицировать ansible.cfg либо добавлять глобальные переменные для окружения ансибль.
Sergey
Alexey
добрый день. подскажите , как сделать зависимые таски? например, запускаю контейнер с скл, следующая задача запускается и ждет готовность скл, если все ок, то идет дальше по задачам
Div
таги?
Alexey
они то тут при чем? я так понимаю, для выборки используются из большого плейбуга можно просто точечно задачи по тегам указать. хотя может я и не прав
Alexey
вообще смотрел в сторону conditions, но успешное выполнения таски, не равно готовому к запросам серверу. поэтому и вопрос, если впиливать хелсчек, то перехода к следующей задаче не будет , пока не хелсчек текущий не пройдет?
Alexey
или какие еще есть варианты для подобного?
Gleb
начать использовать ансибл правильно
Gleb
роли указанные в плейбуке выполняются последовательно - это законченный ответ на твой вопрос
inqfen
Всем привет!
Пишу роль для сервера, который будет выполнять автоматическое продление\создание сертификатов letsencrypt.
Структура получается сложной, так как он должен принимать в переменных список хостов с разными видами подтверждений владения, выполнять запрос ACME, выполнять действия для подтверждения, затем забирать сертификаты.
Есть затык с вилдкард сертификатом, ACME требует создать 2 TXT записи, одна для *.домен.корневой, вторая для домен.корневой, выдает мне это в виде
"challenge_data_dns": {
"_acme-challenge.домен.корневой": [
"mugJ_CjY2WOgRaedu2VyEuZEhIEro1-_LhLOZ5Z2zMA",
"8XL5HFhm3x14q24qmv5rS1nEf57l2t3w2Fk-Iuj0dtI"
]
Мне нужно привести к виду
"value": [
"\"aaaaa\"",
"\"bbbbb\""
],
Код отвечающий за эти действия
https://pastebin.com/vez1JMmh
Пример входящих данных
vars:
domains_certs:
- name: '*.vsc1t.домен.корневой'
state: present
alternative_names:
- 'DNS:vsc1t.домен.корневой'
challenge: dns-01
- name: vik.домен.корневой
state: present
Пример данных при запросе подтверждения от ACME:
https://pastebin.com/HLmheQiQ
Мне нужно раскрыть список и к каждому его элементу добавить \"элемент\", при этом желательно мен создавать новый список так как соответствие запроса и действия проверяется через item.name, менения \"
У le есть плагин, который сам это делает
inqfen
Если dns не какой-то свой
Alexey
Div
Daniel
считываю содержимое файла через slurp и запоминаю в переменную. мне нужно затем ее использовать на остальных хостах. как это сделать? смотрю гугл, только циклы всякие предлагают, что как-то не айс
Daniel
set_fact соответственно не подходит - так как он только для конкретного хоста. а мне нужна глобальная переменная
Dmitriy
Daniel
register не подойдет ?
переменная доступна только в пределах рантайма хоста. т.е. там где slurp + register - там будет, а на остальных - нет
Sergey
Sergey
Скачай на хост-контроллер через fetch, потом делай что хочешь.
Daniel
не, ну как без этого-то )