neb0t
journalctl -xu servicename
neb0t
вродь везде был - и в ентерпрайз и центос
Artem
ребят, FQDN/ip хоста из файла инвентория в переменную можно передать ?
Artem
подскажи как ?
Artem
inventory_hostname?
neb0t
if ansible_fqdn in groups
neb0t
More info: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
Sergey
if ansible_fqdn in groups
зачем это?
Sergey
у каждого хоста есть ansible_hostname
neb0t
зачем это?
пример использования
neb0t
есть хост, а есть fqdn
Sergey
пример использования
O_o ужасный пример
neb0t
каков вопрос - такой и ответ
neb0t
fqdn по днс должен возвращатся ... хостнейм с хостс
Artem
все, разобрался, спасибо
Egor
Ребят, а вот такая конструкция не работает что ли? easyrsa: ver: 3.0.3 url: "https://github.com/OpenVPN/easy-rsa/releases/download/v{{ easyrsa.ver }}/EasyRSA-{{ easyrsa.ver }}.tgz"
Egor
Или внутри можно просто ver использовать?
Sergey
Или внутри можно просто ver использовать?
Не работает. Ты создаёшь циклический граф, оно не десериализуется корректно в структуру данных.
Sergey
Определи отдельно top-level переменную и используй её во все поля.
Egor
Понял. Спасибо.
Антон
коллеги, проблемка есть curl запрос: curl -v -k -u xxx:xxx --upload-file base.gz.sha256 https://xxx/repository/local-exchange/ он нормально отрабатывает есть такая же штука в uri uri: url: https://xxx/repository/local-exchange/ method: POST src: '{{ item }}' user: 'xxx' password: 'xxx' force_basic_auth: yes remote_src: yes validate_certs: no use_proxy: no loop: - "/data/copy/{{ files_checksum.results[0]['item'] }}.sha256" и валится с 400 ошибкой
Антон
не могу понять в чем проблема
Антон
заливаю в nexus если это важно
Антон
версия ансибла 2.8 уж больно не хочется делать через shell =(((
tutunak
версия ансибла 2.8 уж больно не хочется делать через shell =(((
Хм, делал что то подобное, сейчас глянц
Антон
tutunak
буду очень благодарен
что то не нахожу но вроде как через body: "{{ lookup('file', 'foo.json') }}
Sergey
буду очень благодарен
вот да, я сейчас смотрю на вызов и удивляюсь - вроде так не должно работать
Антон
не сам придумал - https://docs.ansible.com/ansible/latest/modules/uri_module.html
Антон
последний пример =)
Sergey
не сам придумал - https://docs.ansible.com/ansible/latest/modules/uri_module.html
Да пофиг. У тебя же сервис плюётся ядом, не модуль.
Антон
я к тому что вызов не я придумал =)
Антон
так в чем фича, я через file не смогу - он отрабатывает только локальный
Антон
а мне нужно это сделать на удаленном хосте
Sergey
remote_src жи
Антон
fatal: [prod-sd]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>, original message: could not locate file in lookup: /data/copy/base.gz.sha256"} вот это выдал
Антон
а файл точно есть
Антон
насколько я помню когда читал
Sergey
права проверяй
Sergey
плюс SELinux
Антон
Его нет, файл создан на предыдущем шаге
Sergey
погоди
Sergey
remote_src чему равен?
Антон
Yes
Sergey
с большой буквы?
Sergey
в общем, не должно так у тебя работать
Sergey
я ипсходник посмотрел, любой приличный сервис _не будет_ так работать
Sergey
https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/net_tools/basics/uri.py#L491
Sergey
https://curl.haxx.se/docs/manpage.html#-T Метод PUT, Карл, понимаешь? PUT!
Sergey
Антон
https://curl.haxx.se/docs/manpage.html#-T Метод PUT, Карл, понимаешь? PUT!
мне нечего сказать кроме как "огромное спасибо"! =)
Антон
но печаль в том что лучше не стало =(
Антон
но по исходникам получается что он как делает что мне нужно - берет файл из src в body и через PUT отдает его на сервер
Антон
ееее!!!! подключив дебаг nginx все-таки добил =))) вот рабочий вариант на 2.8.4``` uri: url: 'https://xxx/repository/local-exchange/{{ item.filename }}' method: PUT src: '{{ item.path }}' user: 'xxx' password: 'xxx' force_basic_auth: True remote_src: True validate_certs: no status_code: 201 # use_proxy: no loop: - {path: "/data/copy/{{ files_checksum.results[1]['item'] }}", filename: "{{ files_checksum.results[1]['item'] }}.sha1"} ошибки: 1. вместо PUT использовал POST 2. Потом включил use_proxy: no
Антон
можешь ведь, если хочешь 😉
=) а ведь большая часть просто бы сделала через shell и не парилась бы =(
Антон
убил на эту хрень 2 часа, правда и знаний поднабрался в очередной раз =)
Sergey
ну зато ты теперь знаешь, что доки рулят 😊))))
Антон
не столько доки, сколько блин исходники =)
Антон
прям читаешь что как работает
Антон
кажется во мне начинает прорастать девопс =)))
Anonymous
Доброй ночи всем. Может это из странного конечно, но есть стоит такая задача: необходимо скопировать файлы из каталога на определенные хосты. Подробней: Есть такой инвентори: consul_servers: hosts: server0: server1: server2: На ansible контроллере есть каталог с сертификатами: consul git:(master) ✗ tree . ├── consul-agent-ca-key.pem ├── consul-agent-ca.pem ├── consul-0-key.pem ├── consul-0.pem ├── consul-1-key.pem ├── consul-1.pem ├── consul-2-key.pem └── consul-2.pem Каким образом можно выполнить модуль copy так, чтобы consul-0-key.pem и consul-0.pem попали только на server0, а consul-1-key.pem и consul-1.pem только на server1 и т.д. ?
Антон
теперь следующий квест - эта зараза не отправляет файлы большого рамера (28метров фейлится) причем курл легко фигачит этот файл
Антон
всегда пожалуйста
Aleksey
Ребята, подскажите пожалуйста, в последних версиях ansible начал ругаться на environments модуля docker_container: Non-string value found for env option. Ambiguous env options must be wrapped in quotes to avoid them being interpreted. как с этим бороться? Например: docker_container: name: mycontainer image: myimage env: SENTRY_URL: "{{sentry_url}}" где sentry_url может быть null
Aleksey
Есть фильтр default(omit)
Спасибо, то что нужно!
Пастырь
О сорян дочь до мобилы добралась))
Max
О сорян дочь до мобилы добралась))
меняй пароль. если отпечаток локает - пора переходить на пароль.
Пастырь
)))
Max
смейся, своих уже 2 раза ловил, берут мой палец, когда я сплю....
Max
в общем 2 урока: - днем не спать - пароль менять раз в 2 месяца
Пастырь
Растут слишком быстро, просто игры уже не интересны
Max
хуже, начинают ревью реджектить.
Max
🤣
Max
без объяснений.