Результаты выполнения тестового задания следует опубликовать на GitHub или захостить на любой открытой платформе (например, Github Pages) и отправить на почту devopscloudcamp@cloud.ru. Также следует указать свои контактные данные для получения обратной связи.
Тестовое задание состоит из двух задач.
Необходимо написать Ansible playbook, который выполняет на хосте следующие действия:
- создает нового пользователя cloudru с паролем cloudpass
- разрешает на хосте авторизацию через ssh по ключу
- запрещает логин по ssh от пользователя root
- копирует предоставленный публичный ключ для пользователя cloudru
Плейбук должен выполняться относительно чистого дистрибутива ОС Ubuntu Server 22.04.3. Для написания и проверки плейбука можно локально развернуть VM с помощью любого удобного инструмента виртуализации (VirtualBox, VmWare Fusion, VmWare Fusion Player, Hyper-V, ...)
Публичный ключ для публикации на хост:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCfrfE0OluoNHb5dOpV4RpWmVXvMBWc17kaM7DDjCm7romNQMDX95i5Fc67Q3c47pvrm/qi/ZqsCeqNdLl5+VV41rVz701Pj/UUr2FZpIm80Ur0iM1DFy81GKo/lS1INopqdd4KvUnM2d8yqfJSm9m5Cq7AM9S0mqObuMayfqNR4YcOlm9fnEMqhrSWbBVvdghPNiBzs7T9RzEq/0w8rs743tCF7MICv72fdgYadrGlxFsFWSujwZXQLI4VUSxKirJBCUgfR0u84gZK/wUzJ4EPqMichniTf24AsvidozUHWMDmQ+pUaBTyxjD5egi8LcV0EHH4feHwzacA2gyGbOtFK3wpa/dgE1yvPTkPKnccIXKnbel0mfxfsBVkclc5/DnczmrdaGrX5DCrQbI+HO4lhr4KzAm/pw6qfLcw8KjCdVKsnCRXykdat8KUwNAeolknRWdKDqdsbyXBj+ePMTlMR8YmoBj9znYWwOnAAyu56utiteL0oq9YPkb7ZGF5ZOE=
Полученный плейбук и команду для его запуска положить в папку /playbook
Требуется написать простое веб-приложение на Python, которое слушает входящие соединения на порту 8000 и предоставляет HTTP API, в котором реализовано 3 метода:
- GET /hostname - при запросе на этот метод приложение отдает имя хоста, на котором запущено приложение
- GET /author - возвращает значение переменной окружения $AUTHOR, в которой задано имя или никнейм человека, выполняющего это задание
- GET /id - возвращает значение переменной окружения $UUID, содержащее любую произвольную строку-идентификатор в формате uuid
Необходимо написать Dockerfile для полученного приложения в соответствии с принятыми в сообществе best-practice.
Полученный скрипт и Dockerfile к нему положить в папку /app
Далее необходимо написать манифест для запуска приложения в Kubernetes в отдельном неймспейсе в виде Deployment с 3 репликами и сервиса с типом ClusterIP. Реализовать readiness- и liveness- пробы. В переменную UUID должен подставляться уникальный идентификатор пода в кластере, в котором запущено приложение.
Манифест положить в папку /manifest
Для локального запуска кластера можно использовать инструменты Docker Desktop, kind, minikube и другие
Написать Helm чарт, в котором через переменные в файле values.yaml можно задать:
- имя образа, запускаемого в поде
- количество реплик приложения
- значение, подставляемое в переменную AUTHOR
Полученный чарт положить в папку /helm