Denis
спасибо
Andrey
спасибо
Не забудь указывать явно группварсы в плейбуках
Sergey
А кто сориентирует, в {% raw %} блоке jinja не работает? Надо стоить условия такими блоками снаружи?
Sergey
Sergey
хочу на одни хосты раскидать один raw template, на другие другой
Sergey
{% raw %}
{% if hostgroup == 'server' %}
process_names:
- name: "{{.ExeBase}}"
cmdline:
- '.+'
{% else %}
process_names:
- name: "{{.Comm}}"
cmdline:
- '.+'
{% endif %}
{% endraw %}
Что видимо не работает
пришла идея что надо строить темплейт самими блоками снаружи
Sergey
group_vars + имя шаблона в переменной
Max
спасибо
1. называть переменную env чревато
2. если она таки не склашится ни с чем, то:
...
when:
- env == 'prod'
Vladislav 👻
Sergey
Egor
Добрый день.
Подскажите пожалуйста, как можно выполнить команду с sudo привилегиями?
На VM в папке sudoers.d создал файл для пользователя и обозначил такие правила:
user1 ALL=(ALL:ALL) NOPASSWD: /usr/bin/git
В role/task/main.yml указал:
---
- name: Pull Dir
git:
dest: /var/www
repo: "{{ git.repo }}"
become: yes
Но таска не выполняется и выдает ошибку:
module_stdout: |-
sudo: a password is required
Используя ключи -vvvv я так понимаю он сначала пытается стать root пользователем, но я хочу лишь, что бы он выполнил команду git к примеру как "sudo git pull".
łibfitź.r14.a
Пробовали добавить become_user и become_method ?
łibfitź.r14.a
become_user, насколько я знаю, применится к конкретной таске, а не к логину
łibfitź.r14.a
Но я могу знать неправильно :)
Egor
В доке вижу вроде указано:
Set to user with desired privileges — the user you become.
Ну и плюс дополнительно попробовал, он просто перешел под этого пользователя и выполнил команду.
Но есть желание чисто как sudo команду выполнить, а не перейти на пользователя и выполнить команду.
И вот не совсем пойму как это сделать.
łibfitź.r14.a
Покажите выхлоп с -vvvv
łibfitź.r14.a
На пейстбин например
Egor
То есть я так понимаю он пытается выполнить команду:
sudo -H -S -n -u root
łibfitź.r14.a
Попробуйте в плейбуке become_user явно указать
Egor
Если я указываю того же пользователя с которого я зашел, то есть в данном примере: User1
То он просто не использует sudo команду так, в теории логично, он уже под этим пользователем.
А если указывать root, то он пытается зайти под него.
Но я через sudoers дал разрешение на выполнение команды git пользователю user1 без пароля.
Sergey
Egor
У тебя sudoers корявый
Так если заходить с под пользователя User1
И выполнить команду:
sudo git pull
То она отработает корректно.
Sergey
Ни о чём не говорит. Гитом вообще все пользователи могут пользоваться, это не админская команда 😉
Sergey
man sudoers.
вопрос закрыт.
Sergey
Sergey
Подробнее - в ЛС.
Vladislav 👻
Vladislav 👻
Хотя я не понимаю логику, зачем давать судо на гит...
Vladislav 👻
Egor
Vladislav 👻
Скопируйте к себе и делайте что хотите
Vladislav 👻
А лучше отдельно стягивайте под своим пользователем
Egor
А лучше отдельно стягивайте под своим пользователем
Я просто хотел попробовать автоматизировать.
То есть на виртуальной машине есть сайт, он работает с под пользователя apache и ему принадлежит.
И хотел автоматизировать в плане заходить не из под root на виртуальную машину, в папку с сайтом и делать git pull с определенной ветки.
Vladislav 👻
если в кратце, делайте под апач пользователем пулл
Vladislav 👻
зачем вам user1?
Lex
парни, подскажите а можно в плэйбук использовать конструкцию как в inventory host[1:3]
Timur
Lex
- hosts: hostname[1:3]
Lex
и инфраструктуре при этом есть
hostname1
hostname2
hostname3
Vladislav 👻
создайте группу с такой конструкцией и по группе
Lex
ну это как запасной вариант
Vladislav 👻
протестируйте свой вопрос, тест на 2 минуты же
Lex
Vladislav 👻
да
Lex
я протестировал - в лоб не работает ) думал может надо как то это экранировать..или еще что-нибудь
Lex
гугл сходу не подсказывает
Vladislav 👻
в одинарные кавычки попробуйте
Vladislav 👻
но мне кажется, надо через группу
Timur
Timur
Lex
парни а как в плэйбуке использовать исключение в хостс?
если стоит
- hosts: host-group1:!host1
то все норм, а если
- hosts: host-group1:!host1,host-group2
то на синтаксис не ругается, но из из первой группы никого не берет
Vladislav 👻
опечатка?
Lex
где?
Vladislav 👻
host-grup1
Lex
а данном сообщении - да опечатка
Sergey
Lex
блин ну это же костыль...
Lex
жааалко
Sergey
А потом настанет время вешать туда переменные, и ты поймёшь, что это не костыль, а Ansible way
Sergey
Если уж так сильно хочется, то попробуй сделать список на месте:
hosts: group1:!([host1] + group2)
Вот _это_ - точно костыль
Vladislav 👻
Sergey
Lex
Lex
просто есть то механизм паттернов и он работает! Но только если у тебя эта группа в хостс, а если ты через запятую добавляешь вторую группу - то все не работает
Sergey
Vladislav 👻
в твоем случае ты сделаешь исключение тех хостов, которые и там и там
Sergey
Vladislav 👻
хотя в примере выше такие хосты не исключаются, а объединяются/дублируются
Sergey
Lex
Sergey
".... в одной хосты точёные..."
Sergey
(сорри, орнул)
Lex
я хочу запустить все, кроме 1го из первой группы и все из 2ой группы
Lex
причем этот синтаксис воспринимается для команды ansible
Lex
а вот для ansible-playbook - нет