Pavel
да вы издеваетесь?
Oleksandr
нет ты
Pavel
я уже прописал
Oleksandr
покажи
Pavel
и кидал инвентори часть этого хоста
Timur
Т.е.? Что значит как две строки?
Pavel
[testssh:vars] ansible_ssh_user=xxx
Timur
[testssh:vars] ansible_ssh_user=xxx
А ключ где лежит?
Pavel
/home/ansible/.ssh
Timur
Лол
Timur
А запускаешь при этом от рута? :)
Pavel
ну так если become мы пишем
Pavel
он же должен лезть в хоум юзера под которым идёт become
Pavel
если не так то это тупо
Timur
Можно сделать split('\n') например
Tadeusz
кажется, вы не понимаете смысл become
Timur
И на выходе будет список строк
Pavel
кажется, вы не понимаете смысл become
он повышает привелегии до юзера
Pavel
но там есть su
Pavel
или sudo
Pavel
метод
Pavel
Хорошо обьясните как надо
Pavel
сделать
Timur
Хорошо обьясните как надо
Плейбук надо запускать из-под того юзера, в профиле которого прописаны нужные креды
Pavel
если я нелогично мыслю поправьте меня как мне решить задачу что при запуске плейбука из под любого пользователя (или хотя бы из под рута) ansible шёл в конкретную директорию за ключами и использовал конкретного юзера.
Pavel
точнее не практично
Pavel
Смотри на уровне AWX когда я буду использовать эти плейбуки
Pavel
есть возможность управлять пользователями?
Timur
Или тогда явным образом нужно указывать все параметры подключения: юзер, путь к ключам и т.п.
Pavel
но не работает
Timur
Вот я это и пытался сделать
Потому что вы не это делаете
Pavel
Тимур,обьясни что где нужно дописать,если я не прав я готов попробовать написать так как пишут более опытные люди использующие Ansible дольше меня
Pavel
просто варианты выше не взлетели которые предлагались
Pavel
с ansible_user + (ansible_ssh_user)
Anton
Так судя по тому что тут написано, ты долбишься рутом на хост, но не сказал ансиблу что для рута нужен сертификат с полным путем до него или пароль если по паролю можно.
Pavel
он понимает что надо идти под ansible пользователем
Pavel
но на уровне хоста использует home и creds от root
Pavel
проблема именно в отсутсвии локального переключения на пользователя ansible
Timur
Потому что ансибл не знает, где ему взять нужные креды для подключения
Timur
Вы ему это не сказали, а в пути по умолчанию (home-директорию юзера, от которого запускается плейбука) его нет
Pavel
я спросил как правильно это всё переопределить на уровне плейбука или инвентори
Timur
Во-первых, выйти из рута
Pavel
AWX сможет не из под рута запускать плейбуки?
Timur
AWX сможет не из под рута запускать плейбуки?
All playbooks are executed via the “awx” filesystem user.
Pavel
хорошо но как он будет переходить под пользователя ansible
Pavel
для запуска этого плейбука?)
Timur
Во-вторых, в профиль юзера, из-под которого будут запускаться плейбуки, положить нужные креды и добавить нужные параметры в конфиг
Pavel
он же по этой логике будет идти в /home/awx/.ssh
Timur
Нужно ключ юзера ansible положить в директорию юзера, который запускает плейбук
Timur
Или вынести все ключи вообще в отдельный путь и явно указывать к ним путь в параметрах подключения
Timur
И в ssh-agent добавить
Oleksandr
--- - hosts: all become_user: root tasks: - name: "id 1" shell: id register: id_1 become: no - name: "id 2" shell: id register: id_2 become: yes - name: "echo id 1" debug: msg: "{{ id_1.stdout }}" - name: "echo id 2" debug: msg: "{{ id_2.stdout }}"
Oleksandr
просто для понимания запусти
Oleksandr
хорошо но как он будет переходить под пользователя ansible
он не переходит. у тебя 3 id юзеров. 1. локальный - это от имени которого запускается плейбук 2. удаленный (или локальный) - это тот, который прописан в инвентори, под каким идет подключение на удаленную машину (локально) 3. become: <user> - это, тот, под которым ты хочешь запустить таску/таски на удаленной машине (локально)
Oleksandr
у самого become есть несколько методов - то есть как стать тем, от имени кого ты хочешь запустить плейбук/таску
Warrax
такой вопрос, как в ansible в зависимости от имени хоста копировать разные конфигурационные файлы через условие? в интернетах предлагают использовать в модуле copy условие when, но в синтаксисе этого модуля нет никакого when, if, ... кто что/как использует в подобной ситуации?
Timur
Тогда можно спокойно менять конфиги хостов, не трогая код ролей и плейбук
Warrax
https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#the-when-statement
действительно, я просто на один лишний пробел промахнулся 😊
Warrax
Тогда можно спокойно менять конфиги хостов, не трогая код ролей и плейбук
а можете что-нибудь посоветовать почитать про ansible, как правильно его готовить? желательно на русском...
Timur
Pavel
Вот за это спасибо,переопределил ansible_ssh_private_key_file в инвентори файле и добавил become_user: ansible become_method: su become: yes И вот при таких параметрах всё завелось сразу везде
Pavel
Нужно ключ юзера ansible положить в директорию юзера, который запускает плейбук
Pavel
Или вынести все ключи вообще в отдельный путь и явно указывать к ним путь в параметрах подключения
Pavel
И в ssh-agent добавить
Pavel
@tgadiev От души
Timur
Вышел новый релиз ansible-lint: https://github.com/ansible/ansible-lint/releases/tag/v4.1.0
Timur
4.1.0 - Released 11-Feb-2019 - Support skipping specific rule(s) for a specific task #460 - Lint all yaml in tasks/ and handlers/ regardless of import or include #462 - New rule: shell task uses pipeline without pipefail #199 - Remove rule 405 checking for retry on package modules #465 - Limit env var check to command, not shell #477 - Extend max line length rule from 120 to 160 #474 - Do not flag octal file mode permission when it is a string #480 - Check ANSIBLE_ROLES_PATH before basedir #478 - Fix crash on indexing empty cmd arguments #473 - Handle argv syntax for the command module #424 - Add another possible license default with SPDX #472 - Ignore comments for line-based rules #453 - Allow config skip_list to have rule number id not in quotes #463
Timur
Настоятельно рекомендуется всем, кто хочет быть уверен, что пишет действительно хороший код