Pavel
https://stackoverflow.com/questions/54373152/how-to-resolve-could-not-locate-file-in-lookup-reading-id-rsa-pub
Pavel
он смотрит на локальный, а исполнение url с удаленного
Pavel
и все таки ошибка (
- name: import template to es
uri:
url: http://localhost:9200/_template/filebeat-7.6.2
user: beats_setup
password: "{{ elasticsearch_native_user_beats_setup_user_password }}"
method: POST
body: "{{ lookup('file','{{ ansible_env.HOME }}/filebeat_prepare/filebeat.template.json') }}"
force_basic_auth: yes
status_code: 201
body_format: json
when: filebeat_import == true
пишет что
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: /home/administrator/filebeat_prepare/filebeat.template.json"}
Grek 🇺🇦
У вас вроде шаблон в шаблоне, так не работает
Sergey
^^^ +++
Pavel
а как тогда, shell?
Pavel
в документации похожий пример, тоже шаблон заявки
- name: Create a JIRA issue
uri:
url: https://your.jira.example.com/rest/api/2/issue/
user: your_username
password: your_pass
method: POST
body: "{{ lookup('file','issue.json') }}"
force_basic_auth: yes
status_code: 201
body_format: json
Grek 🇺🇦
Там шаблон в чистом виде, а вы запихали шаблон в шаблон, ансиьл не может его развернуть
Grek 🇺🇦
Как сделать правильно - хз, я не настоящий сварщик. Но я бы положил json в заведомо известную локацию относительно плейбука и вызывал его без использования переменных окружения
Pavel
Grek 🇺🇦
Положите в files рядом с плейбуком и вызывайте files/your.json
Aleksey
Pavel
Павел
customfield_11403 и customfield_11704 поля в условиях - если нет, то это выпиливается
Igor
любопытства ради: а в каких случаях из ансибла надо создавать тикет в жире?
Pavel
Pavel
Igor
но ведь "оператор ансибла" это увидит и пойдёт сразу поправит, например
Павел
Igor
а, прикольно
Pavel
Pavel
но джира не решает вопроса автоматизации битов эластика, там есть крупные шаблоны (
Ivan
привет!
может кто знает, почему у меня раньше работала эта конструкция для force: без | bool, а теперь перестала пришлось добавить этот фильтр?
По дефолту переменная False
Vitaliy
Sergey
Aleksey
Aleksey
прикинь чо
Aleksey
я тут нашёл для себя
https://github.com/kwoodson/ansible-role-yedit/blob/master/library/yedit.py
он уже дважды на канале упоминался. но пусть будет ещё разрок.
модуль для редактирования ямля.
Sergey
прикинь чо
Это же не штатный питонячий модуль, а поделие, которое как-то там работает - ну ок.
Sergey
Sebor▂▅▇█▓▒░
Sergey
from_yaml / to_yaml?
Aleksey
комменты!
Sergey
комменты!
ну да, да, я помню твою боль с ними
Aleksey
фейспалм у них хостинг кода на сорсфорже.
Aleksey
кто бы видел сейчас мои страдания и муки совести
Aleksey
я собственно в него ушел с https://github.com/kwoodson/ansible-role-yedit/blob/master/library/yedit.py#L189
Gleb
Aleksey
я встречал этот проект и ранее. но у меня не болело.
Aleksey
а тут и болит и такой подгон
Sergey
Anton
Мне показалось или у афроамериканца волосы дыбом встали?
А серьёзно, есть варианты или углубляться в питон?
Aleksey
Aleksey
люблю такие конструкции в плейбуках. видно что человек хорошо почитал документацию и научился в сложные фильтры
Aleksey
сам при любой возможности херачу такие же конструкции. (нет. извини.)
Sebor▂▅▇█▓▒░
Попробуй питон 3.8
Sergey
Sergey
Модуль - удалённо, фильтр - локально
Sergey
В общем случае, конечно
Lex
https://docs.ansible.com/ansible/latest/plugins/inventory/tower.html ребят, хочу предложить PR для этого плагина...кто знает как его отыскать )?
Alex
Lex
да, он лежит локально...а где его исходники на гитхабе..найти не могу ( все ссылки в 404
Alex
я же показал путь
Alex
https://github.com/ansible/ansible/blob/stable-2.9/lib/ansible/plugins/inventory/tower.py
Lex
хм...инетересно, а в devel его нет )) спасибо большое!
Sergey
Anton
лайк!
groups.{{ item }}|intersect({{tested}})|default(groups.{{ item }}|intersect({{online}}))
пиши еще!
Вот так прокатило:
- name: task1
debug:
msg: "{{item}}"
loop: "[{% for host in grouplist %}{% if groups[host]|intersect(tested)|length>0 %} '{{groups[host]|intersect(tested)|sort|first}}' {% else %} '{{ groups[host]|intersect(online)|sort|first }}' {% endif %},{% endfor %}]"
Изначально пробовал делать через groups.host и через groups.{{host}} , но {{groups.{{host}}}} не прокатывает.
Если кому-то такое интересно
Aleksey
Антон вы же понимаете что утомитесь писать тесты к этой конструкции да? Или планов писать на нее тесты нету ?
inqfen
inqfen
А какая задача вообще стояла?
inqfen
Давно его видел
inqfen
Так и висит в open
Aleksey
но ансибл не был бы ансиблом если бы толковый модуль был бы вмержен
inqfen
жи есть
Anton
А какая задача вообще стояла?
выбор в подсети хоста который будет выступать в качестве сервера, и взять тот же хост в подсети если он уже использовался. В случае если внутри данной подсети нет сервера. И количество таких подсеток может быть до ~4k
Aleksey
впрочем я знаю почему его не мержат. он требует yaml на хосте.
inqfen
inqfen
И им это не мешает
Anonymous
Коллеги подскажите, хочу генерировать location nginx ансиблом, имеется такая переменная
nginx:
generate:
- {location: "/", options: {"root /var/www/core-docs", "autoindex on"} }
- {location: "//22", options: {"vasy", "42"} }
имеется такой template
## generate section location
{% if nginx.generate is defined %}
{% for generate in nginx.generate %}
location {{generate.location}} {
{{generate.options}};
}
{% endfor %}
{% endif %}
### end location
проблема не понимаю как мне сделать второй цикл для работы с массивом options
inqfen
В доке просто в требованиях указывается