2016-04-16 2 views
0

Мне нужно предоставить очень свежий сервер Ubuntu с Ansible. Вначале он имеет только пользователя root и сгенерированный пароль. Первое действие, которое мне нужно сделать, - создать пользователя service, установить для него пароль, при необходимости загрузить мои локальные ключи пользователя (чтобы я мог войти в систему без паролей) и отключить логины root. Затем мне нужно выполнить роль пользователя service. Как я могу сделать это в одной пьесе (например, signle ansible-playbook provision.yml вместо ansible-playbook init.yml && ansible-playbook apply_roles.yml)? Проблема в том, что мне нужно переключать пользователей где-то после того, как я создал service, а затем (и все будущие логины) мне нужно войти в систему как он.Предоставление сервера с нуля в Ansible

Полезно ли сконфигурировать ansible_user для этого хоста как service и только переопределить его один раз (до root) для начальной настройки? Любые лучшие практики?

ответ

1

Если памяти, экземпляр Ubuntu начинается с генерируемым корневым пользователем и локальным пользователем with access to sudo :

Я думаю, что самый чистый подход к этому было бы установить ключи, которые локального пользователя через Баш скрипт первых, с помощью:

ssh-copy-id <server> 

(если эта команда доступна из командной строки, в которой вы запускаете анзибль)

, а затем запустите сценарий Ansible после этой строки в сценарии bash.

(Хотя я думаю, что это будет возможно хранить кредитки локального пользователя в ansible vault .. Я не использовал хранилище еще, так что я менее знаком с ним.)

Я бы укажите пользователя службы в стартовом файле (как become_user) или через ansible_user в инвентаре, как вы сказали. (Но вы можете столкнуться с проблемами при выполнении этого в соответствии с .)

Если я использовал файл начала для указания пользователя, этот файл будет иметь роль (скажем, веб-сервер), и эта роль будет имеют dependency (скажем, общий).

В общей роли у меня возникла бы задача, которая пыталась выполнить команду с известным результатом с использованием пользователя службы (который был установлен в ignore errors). Если эта задача не вернула ожидаемый результат, я бы затем создал пользователя службы и скопировал ключи этого сервиса на сервер. В каждой заданной задаче необходимо переопределить имя_пользователя для локального пользователя.

После того, как эта роль была выполнена, основная роль (-ы) будет следовать, а все остальные задачи должны выполняться как пользователь службы.

1

У вас может быть несколько пьес в одной пьесе. Создать игру для задач, которые вы хотели бы работать в качестве корня и еще один для роли, которая должна работать в качестве службы:

- hosts: all 
    remote_user: root 
    tasks: 
    # your tasks here 

- hosts: all 
    remote_user: service 
    roles: 
    - your_role 
Смежные вопросы