Pavel
да вы издеваетесь?
Oleksandr
нет ты
Pavel
я уже прописал
Oleksandr
покажи
Pavel
и кидал инвентори часть этого хоста
Timur
Т.е.? Что значит как две строки?
Pavel
[testssh:vars]
ansible_ssh_user=xxx
Timur
Pavel
/home/ansible/.ssh
Timur
Лол
Timur
А запускаешь при этом от рута? :)
Pavel
ну так если become мы пишем
Pavel
он же должен лезть в хоум юзера под которым идёт become
Pavel
если не так то это тупо
Timur
Можно сделать split('\n') например
Tadeusz
кажется, вы не понимаете смысл become
Timur
И на выходе будет список строк
Timur
Pavel
Oleksandr
Pavel
но там есть su
Pavel
или sudo
Pavel
метод
Pavel
Хорошо обьясните как надо
Pavel
сделать
Pavel
если я нелогично мыслю поправьте меня как мне решить задачу что при запуске плейбука из под любого пользователя (или хотя бы из под рута) ansible шёл в конкретную директорию за ключами и использовал конкретного юзера.
Pavel
Pavel
точнее не практично
Timur
Pavel
Смотри на уровне AWX когда я буду использовать эти плейбуки
Pavel
есть возможность управлять пользователями?
Timur
Или тогда явным образом нужно указывать все параметры подключения: юзер, путь к ключам и т.п.
Pavel
Pavel
но не работает
Pavel
Тимур,обьясни что где нужно дописать,если я не прав я готов попробовать написать так как пишут более опытные люди использующие Ansible дольше меня
Pavel
просто варианты выше не взлетели которые предлагались
Pavel
с ansible_user + (ansible_ssh_user)
Anton
Так судя по тому что тут написано, ты долбишься рутом на хост, но не сказал ансиблу что для рута нужен сертификат с полным путем до него или пароль если по паролю можно.
Pavel
Pavel
Pavel
он понимает что надо идти под ansible пользователем
Pavel
но на уровне хоста использует home и creds от root
Pavel
проблема именно в отсутсвии локального переключения на пользователя ansible
Timur
Потому что ансибл не знает, где ему взять нужные креды для подключения
Timur
Вы ему это не сказали, а в пути по умолчанию (home-директорию юзера, от которого запускается плейбука) его нет
Pavel
я спросил как правильно это всё переопределить на уровне плейбука или инвентори
Timur
Во-первых, выйти из рута
Pavel
AWX сможет не из под рута запускать плейбуки?
Pavel
хорошо но как он будет переходить под пользователя ansible
Pavel
для запуска этого плейбука?)
Timur
Во-вторых, в профиль юзера, из-под которого будут запускаться плейбуки, положить нужные креды и добавить нужные параметры в конфиг
Pavel
он же по этой логике будет идти в /home/awx/.ssh
Timur
Timur
Нужно ключ юзера ansible положить в директорию юзера, который запускает плейбук
Timur
Или вынести все ключи вообще в отдельный путь и явно указывать к ним путь в параметрах подключения
Timur
И в ssh-agent добавить
Oleksandr
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, ... кто что/как использует в подобной ситуации?
Aleksei
Timur
Timur
Тогда можно спокойно менять конфиги хостов, не трогая код ролей и плейбук
Warrax
Timur
Pavel
Вот за это спасибо,переопределил ansible_ssh_private_key_file
в инвентори файле и добавил become_user: ansible
become_method: su
become: yes
И вот при таких параметрах всё завелось сразу везде
Pavel
Нужно ключ юзера ansible положить в директорию юзера, который запускает плейбук
Pavel
Или вынести все ключи вообще в отдельный путь и явно указывать к ним путь в параметрах подключения
Pavel
И в ssh-agent добавить
Pavel
@tgadiev От души
Pavel
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
Настоятельно рекомендуется всем, кто хочет быть уверен, что пишет действительно хороший код