Sergey
#Rλatan
бударажу воображение просто :) тихо тут пока
Sergey
Вообще ночь.
Но раз тихо - можешь пока правила почитать: https://tnt4brain.github.io/proansible/.
Есть такой пункт "За что можно получить RO или бан", там ещё есть подпункт 7: «Рассказы о том, почему Ansible ‐ плохо, а <X> ‐ хорошо. Для этого есть чаты про <X>»
Это единственное предупреждение перед санкциями.
Timur
Timur
- name: Load a variable file based on the OS type, or a default if not found
include_vars: '{{ platform_vars }}'
with_first_found:
- '{{ ansible_os_family }}.yml'
- '{{ ansible_distribution }}.yml'
- default.yml
loop_control:
loop_var: platform_vars
#Rλatan
GithubReleases
ansible/ansible tagged: v2.9.4
Link: https://github.com/ansible/ansible/releases/tag/v2.9.4
Release notes:
New release v2.9.4
Sergey
Значит, тебе решать, какие пакеты из пакетов должны быть установлены.
И в целом я с Тимуром согласен: не надо так делать, как ты делаешь. Реальный мир тебе тут же показывает несостоятельность подхода твоим же контрпримером.
#Rλatan
немного багнутый with_first_found https://github.com/ansible/ansible/issues/23392
а так хочется one task to rule them all в котором будет переменная определенная в зависимости от текущей ос-версии
мы поддерживам стак дистрибутивов от Дебиан Етч (4.0) до Бастера (10.0)
для себя пишу на Федора
другие разрабы на Арче и Гиксе
а плейбук нужен единый с одной логикой - увы не моя это прихоть а тербования в команде, идет перегон провизионного стека написанного полностью на Баше и работающего более 10 лет без поломок но имеющего свои ограничения, ансибл хоть и поломанный по дизайну, дает больше гибкости как ни крути
Sergey
#Rλatan
Sergey
#Rλatan
- name: "main | include distribution specific variables"
include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ current.distname }}/{{ current.distversion }}.yml"
- "{{ current.distname }}/{{ current.distrelease }}.yml"
paths:
- 'vars'
как то так выходит
#Rλatan
https://github.com/ansible/ansible/blob/3dbf89e8aeb80eb2d1484b1cb63458e4bb12795a/lib/ansible/plugins/lookup/first_found.py
#Rλatan
где вот сорс для with_first_found https://github.com/ansible/ansible/search?p=6&q=with_first_found&unscoped_q=with_first_found
не нашел =/
Sergey
Sergey
может, плохо искал?
https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/lookup/first_found.py
#Rλatan
Sergey
ну вообще-то это оно и есть, если на примеры посмотришь в тексте
Sergey
т.к. эти все legacy with-штуки были переписаны на lookup-плагины
#Rλatan
да там вроде с 2.5 втухали `loop`и поошли все переписывать)
грубо говоря новая версия with_first_found формы
lookup('first_found', var_dict['files']['path']) ?
Sergey
Sergey
кароч я хз, что ты имел в виду, вот твой фрагмент:
https://github.com/ansible/ansible/blob/devel/lib/ansible/executor/task_executor.py#L191
*sm1Ly
ребят, ансибл умеет где-то ключи хранить, как эту штуку зовут?
Andrey
Andrey
Хашикорпа
*sm1Ly
ааааа, точняк, спасибо
*sm1Ly
вот его я и искал. вроде и salt его умеет. спасибо еще раз
Andrey
*sm1Ly
Andrey
Чем эти все scm
Andrey
Andrey
И прикручивать волт
*sm1Ly
*sm1Ly
Dmitriy
Всем привет. А важен ли для ansible pearl на хосте ? Особенно на этапе сбора фактов
Ждун
питон важен
Logan
Dmitriy
питон знаю, с ним проблем нет, соответствует. ДУмал может перл....ладно, спасибо, буду дульше копать.
Dmitriy
Dmitry
Доброго дня
Есть плейбук, есть группа хостов, на некоторых он отрабатывает без проблем, на некоторых выдает
Platform linux on host is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
зашел, проверил, указал в хостах питоновский интерпритатор- не помогло(2.4.3)
сверил установленные либы- одинаковые.
проверил which python, одинаковый. Что я делаю не так ?
Ну в целом по этой ссылке всё английским по белому рассказано.
При текущем дефолте (auto_legacy) ansible берёт ОС, дистрибутив и версию, затем смотрит в своей таблице, где на этой платформе должен находиться python. Если в таблице указано что-то отличное от /usr/bin/python, но при этом на сервере есть симлинк и/или бинарник /usr/bin/python, то он зачем-то (видимо для обеспечения совместимости) использует /usr/bin/python, но кидает warning о том, что так вскоре делать не будет.
Можно уже сейчас переключиться на режим auto, тогда будет будет использоваться питон из внутренней таблицы, если там есть соответствующая запись, а если записи нет - только тогда будет предпринята попытка его найти.
Dmitriy
Ну в целом по этой ссылке всё английским по белому рассказано.
При текущем дефолте (auto_legacy) ansible берёт ОС, дистрибутив и версию, затем смотрит в своей таблице, где на этой платформе должен находиться python. Если в таблице указано что-то отличное от /usr/bin/python, но при этом на сервере есть симлинк и/или бинарник /usr/bin/python, то он зачем-то (видимо для обеспечения совместимости) использует /usr/bin/python, но кидает warning о том, что так вскоре делать не будет.
Можно уже сейчас переключиться на режим auto, тогда будет будет использоваться питон из внутренней таблицы, если там есть соответствующая запись, а если записи нет - только тогда будет предпринята попытка его найти.
ну, я прочел, в моем случае(с учетом что на части хостов работает корректно) подходит вариант в хостфайле прописать ansible_python_interpreter= и путь к питону, но это не помогло. Собственно это не warning, а error
Dmitry
Dmitriy
Dmitriy
Dmitriy
Dmitriy
хотя что то меня терзают сомнения что я что то делаю не так....
Aleksey
@tgadiev удалось хаюзать ansible verifyir в молекуле ?
Lev
Владислав
Как работает map в ansible? Не могу нагуглить внятной документации, умеет ли он мапить все фильтры или только определенный список?
В частности хочется чего то типа:
hosts_ip | map('http://%s', 'format')
upd без regex_replace
Lev
Aleksey
хочу конструкцию в стиле
tasks:
- name: Init fail counts
set_fact: fail_count=0
- name: Example assertion
ignore_errors: yes
register:
{% if filed %}
fail_count+=1
{% else %}
pass
{% endif %}
assert:
that: false
Lamobot
Lamobot
GOOD: {{ hosts | map(‘regex_replace’, ‘^(.*)$’, ‘https://\1’) | list }}
вот это считается хорошим судя по документации
Владислав
Lamobot
Владислав
Владислав
Dmitriy
Александр
Подскажите пожалуйста, как проверить наличие определённой строки в файле (кроме как shell: grep ... file). Мне нужен сам факт её наличия. Правка не нужна.
Dmitry
Lev
Aleksey
Aleksey
чот я смотрю сейчас ансиблу что бы быть проверятором не очень то хватает модулей.
Aleksey
ps -efww | grep process-name
но нет. модуль pids не отдает ничего кроме pid