как использовать пользователя без пароля в Ansible

У нас есть машина, которая использует пользователя без пароля для выполнения нескольких задач. Наш прикладной пользователь был настроен для поддержки sudo на этой машине, поэтому я могу запустить «sudo su -» и стал этим пользователем без указания пароля. (Это настроено в файле Sudores)

Проблема в том, как настроить ansible, который запускает playbooks с помощью нашего прикладного пользователя, и он должен стать пользователем без пароля.

Я пытался настроить это так - стать: да стать_методом: sudo стать_пользователем: Но я получаю - «sudo: требуется пароль»

Если я переключу метод на "su", я получу- "" Тайм-аут (12 с), ожидая запроса на повышение привилегий: "

Любая идея? Я понимаю, что, возможно, стать_flags может помочь, но не видел много документации по нему


person Eyal Goren    schedule 19.03.2020    source источник
comment
Вставьте сюда код Ansible и ваш файл sudoers (достаточно соответствующего раздела)   -  person Istvan    schedule 19.03.2020


Ответы (1)


Как объясняется в руководстве, вам необходимо либо установить ansible_become_password предпочтительно с использованием хранилища или, как вы указали, установить sudo без пароля для вашего пользователя.

Вы можете сделать это, отредактировав файл sudoers и установив соответствующие директивы. Обычно вы редактируете файл с помощью команды visudo. Пример, если ваш пользователь является членом группы sudo:

%sudo  ALL=(ALL:ALL) NOPASSWD: ALL

В соответствии с вашими настройками это может потребовать некоторых изменений.

person rolf82    schedule 19.03.2020
comment
Если у пользователя нет пароля, какое значение я должен использовать для ansible_become_password? Как я уже сказал, файл sudoers был обновлен - я могу из командной строки этого пользователя выполнить sudo su - ‹пользователь без пароля›, и он работает - person Eyal Goren; 19.03.2020
comment
Извините, я слишком быстро прочитал ваш вопрос ... Какой у вас пользователь? Можете ли вы дать соответствующую конфигурацию sudoers? - person rolf82; 19.03.2020
comment
У нас есть пользователь, которого мы используем для приложений, которые мы используем для всех наших систем, но в некоторых системах нам нужно использовать разных пользователей. Как нам может помочь ansible_become_password? Предполагается, что это пароль пользователя приложения, который подключается к хосту и пытается переключиться на другого пользователя? - person Eyal Goren; 19.03.2020
comment
Хорошо, теперь у нас есть несколько вопросов ^^. Во-первых, какого пользователя использует ansible для подключения к вашим удаленным системам? Это настраивается с помощью переменной конфигурации ansible_user. Нам нужно сначала ответить, потому что именно этот пользователь должен стать пользователем вашего приложения. - person rolf82; 19.03.2020
comment
Да, у нас есть этот пользователь (давайте вызовем usera), который мы используем для подключения к удаленному компьютеру и настроен как ansible_user, и у нас есть пользователь (позволяет вызывать userb), у которого нет пароля, но требуется для запуска нескольких команд. на самом деле - я заметил, что когда я назначаю ansible_become_password значение пароля пользователя, я передаю исходный сбой, теперь я получаю сообщение об ошибке, что у меня нет прав на запуск echo от имени пользователяb - person Eyal Goren; 20.03.2020
comment
Привет, теперь я внес следующие изменения в конфигурацию: 1) Установите ansible_become_password как пароль пользователя A (тот, который входит в систему, и переключается на пользователя B, у которого нет пароля) 2) Я изменил стать_method от su к sudo Теперь я получаю другую ошибку - (похоже, теперь он может стать этим пользователем с ограничениями) Извините, пользователю **** не разрешено выполнять '/ bin / sh -c echo BECOME-SUCCESS-rnzgycwpjfficcehtpnchwbdfiovgnqm; / usr / bin / python /var/tmp/ansible-tmp-1584873208.7-268897747635188/command.py 'как ‹Имя пользователя B› на ‹Host› Есть идеи, почему это не удается? - person Eyal Goren; 22.03.2020
comment
Можете ли вы предоставить соответствующий раздел вашего файла sudoers? - person rolf82; 22.03.2020
comment
Привет, это довольно сложно, и соображения безопасности не позволяют мне отображать все, но в основном это будет выглядеть примерно так: - Правильное имя пользователя - Пользователь A ›‹ Имя конфигурации ›= (root) NOPASSWD:‹ Имя, которое содержит разрешение для команда, которую я пытаюсь выполнить ›Странно то, что я не пытаюсь выполнить эхо, но ошибка в недоступности связана с тем, что у меня нет прав на запуск echo от имени пользователя B - person Eyal Goren; 23.03.2020
comment
Спасибо. Поскольку пользователю userA должно быть разрешено олицетворять userB, у вас не должно быть root в строке, но userB, поэтому в основном что-то вроде этого: userA ALL = (userB) NOPASSWD: ALL Эхо - это просто проверка того, что sudo работает. - person rolf82; 23.03.2020
comment
Привет, я протестировал его, и теперь он прошел, но не удается активировать команду, так как UserA не имеет PATH пользователя B, некоторые из общих библиотек отсутствуют. Но я приму ответ и открою для него новый вопрос. - person Eyal Goren; 24.03.2020
comment
Спасибо, я отредактирую свой ответ, чтобы подвести итог. Вы разместили свой новый вопрос? Что делает ваш playbook? Например, если ваша задача является задачей команды / оболочки, вы можете попытаться установить среду либо в самой команде, либо с параметрами среды или задачей. В командной строке это будет выглядеть как PATH=.... LD_LIBRARY_PATH=... command parameters. Вы также можете явно указать .profile / .bashrc ... перед вашей командой: source path/to/.profile && command parameters - person rolf82; 25.03.2020
comment
Спасибо, я не стал открывать новый вопрос, просто реализовал то же решение, которое вы предложили - исходный код $ HOME / .profile - person Eyal Goren; 26.03.2020