John
я тут заметил что папка хэндлер называется "handler "
поправил, сейчас тестирую. Может быть в этом проблема
matt
и mode: '0600' тоже не очень, убери кавычки
John
понял. поправлю. Пока поправил имя папки, запустил на новой машине. Ждем
John
УРА *ядъ!
отработало!
matt
matt
правильное же название
John
тупо пробелы в имени папки закрались
matt
лол
John
должно быть "handler", а по факту "handler "
matt
странно всё это
matt
John
matt
а, ясн
John
этот пробел мне три дня мозг жевал гадина))
John
и не понятно почему на второй раз он отрабатывал норм
Tadeusz
Ievgen
Всем привет, а кто нибудь в курсе, можно ли как то отловить с каким именем вызвался хендлер? допустим есть хендлер который отзывается так:
- name: validate nginx
command: nginx -t
register: nginx_configtest
failed_when: nginx_configtest.rc > 0
changed_when: false
listen:
- "restart nginx"
- "reload nginx"
- debug:
var: nginx_configtest
ничего полезного не приносит. Или я хочу странного?
Alf 🙀
Ievgen
тем что у меня не только template в тасках
Ievgen
кое где деплоится целиком конфиг
Ievgen
но я в целом исходную задачу решил )
Ievgen
но все равно спасибо за участие )
Womchik
что-то туплю. как во сюда правильно вставить default('user')?
key: "{{ lookup('file', 'public_keys/{{ outer_item.name }}_keys') }}"
Denis 災 nobody
lookup('file', 'public_keys/{{ outer_item.name }}_keys') | default(...) ?
Womchik
неа
Aleksey
не. лукап вроде сам должен вохзвращать
Aleksey
я гдето сталкивался забил и сделал через set_fact
Womchik
мне нужно, если нет файла, взять дефолтный
Ievgen
{{ outer_item.name }}_keys тут? вместо что-то+_keys что-то-другое?
Womchik
если нет user1_keys взять user_keys
Ievgen
lookup('file', 'public_keys/{{ outer_item.name|default('user') }}_keys') только кавычки внутри default() надо экранировать как точно не помню, каждый раз забываю и гуглю
Ievgen
или поменять на "" и/или экранировать, поиграйся
Sergey
Sergey
как-то так
Sergey
есть же оператор сцепления строк внутри джинджа-шаблонов
Ievgen
у меня есть убер лукап который стыдно показывать:
lookup('pipe','aws ec2 describe-spot-price-history --region {{ region }} --profile {{ ec2_vars.profile }} --instance-types {{ type }} --product-description \"Linux/UNIX\" --start-time {{ m10_ago }} --filters Name=availability-zone,Values={{ subnet_id|json_query(filter_query)|join(\",\") }}')
и он работает там вон join в конце это походу твой default()
Womchik
как-то так
fatal: [fenrir.mstdev.ru]: FAILED! => {"msg": "template error while templating string: expected token ',', got 'user'. String: {{ lookup('file', 'public_keys/ ~ ( outer_item.name | default('user')) ~' _keys' }}"}
Sergey
Ievgen
Womchik
Sergey
не помогло
точнее вот так:
key:
"{{ lookup('file', ('public_keys/' ~ ( outer_item.name | default('user')) ~'_keys') }}"
Sergey
там на самом деле просто ещё одна скобка должна быть
Womchik
мог бы и сам сосчитать :)
Womchik
но
fatal: [fenrir.mstdev.ru]: FAILED! => {"msg": "template error while templating string: expected token ',', got 'user'. String: {{ lookup('file', 'public_keys/ ~ ( outer_item.name | default('user')) ~ '_keys') }}"}
Sergey
потому что сосчитай
Sergey
парсер типа от тебя ждёт запятую, то бишь предполагает, что первый аргумент lookup-а закончился
Womchik
ага. сработало
Womchik
но я задачу себе неправильную поставил :(
Womchik
переменная-то определена. файла нет
Denis 災 nobody
напомните, кто тут умеет свои iso собирать
niko
mkisofs -o 1.iso ./path
niko
теперь все умеют
niko
что-то в твоей постановке задачи не хватает:)
Denis 災 nobody
вопрос, как положить в исошку просто файлы
Andrey
вот как выше написано
Dmitry
Dmitry
а вообще, dd, mkisofs, mount -loop, umount.
Denis 災 nobody
genisoimage ?
чем лучше, чем mkisofs? пока не смотрел.
Dmitry
Dmitry
genisoimage проще, видимо. и хз как работает.
Dmitry
вообще, это не совсем об Ansible. в ru_devops или devops_ru.
Dmitry
или даже ru_sysadmin
Denis 災 nobody
Denis 災 nobody
Но да, дальше лучше в личку
Dmitry
ух ты. а с консулом кто юзает lookup?/
Aleksey
я юзал
Dmitry
я юзал
Ну как? Добавляет динамичности оркестрации?
Aleksey
нет
Aleksey
курица яйцо
Dmitry
Ну вот, если приложение может туда публиковать свои endpoints, почему нет
Dmitry
просто как иначе получить эту динамическую инфу
GithubReleases
https://github.com/ansible/ansible/releases/v2.4.3.0-1 was tagged
John
Добрый день. Опять прошу помочь)
есть задача установить composer
на офсайте взял готовый bash скрипт, прописал его в ансибл.
так же по всем мануалам надо переместить файл composer.phar в директорию /usr/bin/composer
Казалось бы кусок ямла простой:
- name: Move Composer globally
become: true
command: mv composer.phar /usr/bin/composer
но при этом куске не проходит тестирование: ansible-lint .deploy/site.yml
Как обмануть?
ругается так:
$ ansible-lint .deploy/site.yml
ANSIBLE0012 Commands should not change things if nothing needs doing
/builds/proj/.deploy/roles/composer/tasks/main.yml:5
Task/Handler: Move Composer globally
inqfen
Ну как минимум ты как-то не так композер ставишь)
Lev
зачем использовать command чтобы положить файл в нужное место?
Lev
а при скачивании ты его положить сразу не можешь куда надо?
inqfen
- name: Install composer
shell: curl -sS https://getcomposer.org/installer | sudo php — —install-dir=/usr/local/bin —filename=composer
Lev
так поменяй путь инсталляции