Девелопишь на .NET Core? Го в Ubuntu, я создал

в 18:20, , рубрики: .net, C#, open source, Ubuntu, Разработка под Linux

image
Photo by Kevin Horvat
Все 12 лет своей карьеры я работал с .NET и был крепко привязан к Windows и проприетарным инструментам разработки. Но, спасибо Microsoft, .NET Core все изменил и теперь разрабатывать для .NET можно почти на чем угодно и в чем угодно. Дело за малым — перетащить на Core свои проекты. Не так давно я решил и этот вопрос и завел трактор для переезда на Ubuntu.

Результат очень понравился — все взлетело, а Docker и Kubernetes сделали процесс переезда намного легче. Но из-за слабого знания ОС, bash и запутанности вариантов установки некоторых инструментов (например, того же Docker) изначальная настройка заняла больше дня. То есть процесс довольно долгий и местами запутанный.

Дабы сэкономить время будущему себе и тем, кто также планирует попробовать разработку под Linux, я оформил все в виде скриптов. Их можно запустить на чистой Ubuntu и они все настроят пока ты сидишь и пьешь чаек. Также, при желании, их легко допилить под свои нужды.

Если для вас это звучит полезно — добро пожаловать под кат.

Скрипты доступны в репозитории на Github. Для их чтения достаточно начального знакомства с bash и они обильно снабжены ссылками. А человек искушенный, скорее всего, найдет в них и неоптимальные моменты (если нашли — сообщите мне, пожалуйста, буду очень вам благодарен).

Полагая, что скрипты будут чаще «дотачиваться» под конкретные нужды, чем использоваться в исходном виде, все тонкие моменты (например, как запустить команду из под текущего пользователя находясь в режиме sudo) также снабжены ссылками.

Итоговый набор состоит всего из пяти файлов — три скрипта и два конфига для kubernetes.

1_opinionated.sh

Простите, но первый же скрипт это главный кандидат на «дотачивание», а то и вовсе пропуск.

Прежде всего, он устанавливает гипервизор для дальнейшего запуска kubernetes. Я выбрал Virtualbox, но также возможен запуск на KVM и вообще без гипервизора. Каждый вариант имеет свои нюансы, поэтому финальный выбор за вами.
Например, без гипервизора Minikube будет запускать свои компоненты прямо на хост-машине и потребует установки устаревших пакетов Docker. А установка Virtualbox требует реконфигурации Secure boot и у него возможны конфликты по версиям пакетов.

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

После запуска необходимо выполнить перезагрузку, чтобы Virtualbox смог себя донастроить перед установкой остальных инструментов.

2_setup.sh

Самый большой и полезный скрипт. Он устанавливает следующие инструменты:

  • Git
  • .NET Core 3.1 SDK
  • Nodejs
  • Docker Community Edition, добавляет репозиторий для обновлений Docker
  • Проверяет что установлен Virtualbox или KVM и устанавливает minikube
  • Устанавливает Visual Studio Code и несколько расширений для разработки как frontend, так и backend: Gitlens, TSLint, Prettier, Stylelint, C#, Docker tools, Kubernetes tools, Kubernetes Support.

3_configure.sh

Выполняет настройку установленных тулзов. А именно:

  • Запрашивает имя и email пользователя Git
  • Опицонально предлагает установить VS Code как редактор по умолчанию для Git
  • Опционально предлагает использовать libsecret для сохранения паролей Git в зашифрованном виде
  • Добавляет текущего пользователя в группу «docker», необходимую для работы с Docker без постоянного использования sudo
  • Стартует minikube и устанавливает dashboard для доступа к кластеру через Web UI
  • Создает в minikube пользователя-админа для доступа к дашборду. Для этого используются файлы «minikube_admin_user.yaml» и «minikube_role_binding.yaml» из репозитория.
  • Выводит инструкции по получению токена для доступа к дашборду.

Чтобы применились настройки доступа к docker необходимо разлогиниться и перезапустить сервис docker. Или попросту перезагрузить ОС.

Вот, собственно, и все. Надеюсь, скрипты будут полезны желающим быстро освоиться с Ubuntu и разработкой под .NET Core.

Автор: fshchudlo

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js