Я относительно новичок в темах CD и DevOps, и я пытаюсь настроить автоматическое развертывание с помощью capistrano, что хорошо работает в моей локальной тестовой среде. Однако мне интересно, как бы в идеале настроить пользователей в будущей целевой среде.
Например. процедура установки Ubuntu Tomcat настраивает пользователя tomcat (6 | 7), которому принадлежит процесс tomcat. Однако невозможно ввести ssh в поле с помощью этого пользователя, а для capistrano вам нужен пользователь с доступом ssh для выполнения всех команд. Как люди обычно решают эту проблему? Конечно, я подумал о своем собственном решении, но мне интересно услышать, есть ли для этого лучший способ.
В конце концов, будет еще одна вечеринка, настраивающая мою целевую среду, но я могу высказать свое мнение по этому поводу, поэтому я хотел бы знать, чего я в идеале хочу здесь.
Есть множество способов сделать это, но лучший из них - настроить судо system, чтобы пользователь развертывания с поддержкой SSH (который вам необходимо настроить) мог выдавать себя за tomcat или root по мере необходимости для выполнения развертываний. Фактические каталоги кода могут принадлежать tomcat или могут принадлежать пользователю развертывания с правами, установленными так, чтобы tomcat мог использовать файлы.
desc "Restarts the tomcast service"
task restart_tomcat do
set :user, "deployuser"
run "sudo service tomcat restart", :roles => :tomcat_servers
end
Или что-то подобное. Если sudo требует пароль, capistrano достаточно умен, чтобы запросить его.
Ознакомьтесь с официальными рекомендациями пакета о том, как его настроить. Посмотрите, как выбранный вами дистрибутив решает проблему в своем пакете. Там может быть какой-нибудь HOWTO для дистрибутива или пакета, поищите их. Но будьте осторожны, читая, как это было решено в какой-то другой версии, часто случается, что конфигурация и возможности радикально меняются от одной версии к другой (и другие поддерживающие пакеты также могли измениться).