Doctl что это ubuntu

How to Install and Configure doctl

Step 1: Install doctl

Install doctl following the directions for your package manager or operating system:

To install the latest version of doctl using Homebrew on macOS, run:

To install the latest version of doctl using Snap on Ubuntu or other supported operating systems, run:

For security purposes, Snaps run in complete isolation and need to be granted permission to interact with your system’s resources. Some doctl commands require additional permissions:

Finally, move the doctl binary into your path by running:

Visit the Releases page for the doctl GitHub project and find the appropriate archive for your operating system and architecture. Download the archive from your browser or copy its URL and retrieve using PowerShell.

Next, extract the binary by running:

Finally, in a PowerShell terminal opened with Run as Administrator, move the doctl binary into a dedicated directory and add it to your system’s path by running:

Step 2: Create an API token

Create a DigitalOcean API token for your account with read and write access from the Applications & API page in the control panel. The token string is only displayed once, so save it in a safe place.

Step 3: Use the API token to grant account access to doctl

Authentication contexts let you switch between multiple authenticated accounts. You can repeat steps 2 and 3 to add other DigitalOcean accounts, then list and switch between authentication contexts:

Step 4: Validate that doctl is working

Now that doctl is authorized to use your account, try some test commands.

If successful, the output will look like:

The output of that command will include an ID column with the new Droplet’s ID. For example:

Use that value to delete the Droplet by running:

When prompted, type y to confirm that you would like to delete the Droplet.

Источник

Создание CI/CD-цепочки и автоматизация работы с Docker

Doctl что это ubuntu. Смотреть фото Doctl что это ubuntu. Смотреть картинку Doctl что это ubuntu. Картинка про Doctl что это ubuntu. Фото Doctl что это ubuntu

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

Для моего персонального проекта у меня была особая конфигурация. И я знала, что мне нужна возможность разворачивать сайт в продакшне, выполняя всего одно действие: запись кода в ветку master на GitHub. Я, кроме того, знала, что мне, для обеспечения работы моего маленького веб-приложения, не хочется заниматься управлением огромным кластером Kubernetes, или пользоваться технологией Docker Swarm, или поддерживать парк серверов с подами, агентами и всякими другими сложностями. Для того чтобы достичь цели по максимальному упрощению работы, мне понадобилось познакомиться с CI/CD.

Если у вас имеется маленький проект (в нашем случае речь идёт о Node.js-проекте) и вам хотелось бы узнать о том, как автоматизировать развёртывание этого проекта, сделав при этом так, чтобы то, что хранится в репозитории, в точности соответствовало бы тому, что работает в продакшне, то, полагаю, вас может заинтересовать эта статья.

Предварительные требования

Ожидается, что читатель этой статьи имеет базовые знания в области работы с командной строкой и написания Bash-скриптов. Кроме того, ему понадобятся учётные записи Travis CI и Docker Hub.

Не скажу, что эта статья может безоговорочно называться «учебным руководством». Это — скорее документ, в котором я рассказываю о том, что узнала, и описываю устраивающий меня процесс тестирования и развёртывания кода в продакшне, выполняемый за один автоматизированный проход.

Вот каким в итоге получился мой рабочий процесс.

Что такое CI/CD?

Аббревиатура CI/CD расшифровывается как «continuous integration/continuous deployment» — «непрерывная интеграция/непрерывное развёртывание».

▍Непрерывная интеграция

Непрерывная интеграция — это процесс, в ходе которого разработчики делают коммиты в главное хранилище исходного кода проекта (обычно в ветку master ). При этом качество кода обеспечивается путём проведения автоматизированного тестирования.

▍Непрерывное развёртывание

Непрерывное развёртывание — это частое автоматизированное развёртывание кода в продакшне. Вторая часть аббревиатуры CI/CD иногда раскрывается как «continuous delivery» («непрерывная доставка»). Это, в целом, то же самое, что и «непрерывное развёртывание», но «непрерывная доставка» подразумевает необходимость ручного подтверждения изменений перед запуском процесса развёртывания проекта.

Начало работы

Приложение, на котором я это всё осваивала, называется TakeNote. Это — веб-проект, над которым я работаю, предназначенный для того, чтобы делать заметки. Сначала я попыталась сделать JAMStack-проект, или только фронтенд-приложение без сервера, для того чтобы воспользоваться стандартными возможностями по хостингу и развёртыванию проектов, которые предлагает Netlify. По мере того, как росла сложность приложения, мне понадобилось создать и его серверную часть, а это означало, что мне надо было бы сформировать собственную стратегию по автоматизированной интеграции и автоматизированному развёртыванию проекта.

В моём случае приложение представляет собой Express-сервер, работающий в среде Node.js, обслуживающий одностраничное React-приложение и поддерживающий защищённый серверный API. Эта архитектура следует стратегии, которую можно найти в данном руководстве по фуллстек-аутентификации.

Я посоветовалась с другом, который является экспертом по автоматизации, и спросила его о том, что мне надо сделать для того, чтобы всё это работало так, как мне нужно. Он подкинул мне идею о том, как должен выглядеть автоматизированный рабочий процесс, изложенный в разделе «Цели» этой статьи. То, что я поставила перед собой подобные цели, означало, что мне нужно разобраться в том, как пользоваться Docker.

Docker

Docker — это инструмент, который, благодаря технологии контейнеризации, позволяет легко распространять приложения, а также выполнять их развёртывание и запуск в одном и том же окружении даже в том случае, если сама платформа Docker работает в различных средах. Для начала мне нужно было получить в своё распоряжение инструменты командной строки (CLI) Docker. Инструкцию по установке Docker нельзя назвать очень чёткой и понятной, но из неё можно узнать о том, что для того, чтобы сделать первый шаг установки, надо скачать Docker Desktop (для Mac или Windows).

Docker Hub — это примерно то же самое, что GitHub для git-репозиториев, или реестр npm для JavaScript-пакетов. Это — онлайн-репозиторий для образов Docker. Именно к нему подключается Docker Desktop.

Итак, для того чтобы приступить к работе с Docker, нужно сделать две вещи:

Далее, войдите в Docker Hub, введя, когда вас об этом спросят, свое имя пользователя и пароль:

Для того чтобы пользоваться Docker, вы должны понимать концепции образов и контейнеров.

▍Образы

Образ — это нечто вроде плана, содержащего инструкции по сборке контейнера. Это неизменяемый снимок файловой системы и настроек приложения. Разработчики могут с лёгкостью обмениваться образами.

Эта команда выведет таблицу со следующим заголовком:

Далее мы будем рассматривать некоторые примеры команд в таком же формате — сначала идёт команда с комментарием, а потом — пример того, что она может вывести.

▍Контейнеры

Контейнер — это исполняемый пакет, который содержит всё, что нужно для выполнения приложения. Приложение при таком подходе всегда будет работать одинаково, независимо от инфраструктуры: в изолированном окружении и в одной и той же среде. Речь идёт о том, что в разных окружениях запускаются экземпляры одного и того же образа.

Тег — это указание на конкретную версию образа.

▍Краткая справка по командам Docker

КомандаКонтекстДействие
docker buildОбразСборка образа из Dockerfile
docker tagОбразТегирование образа
docker imagesОбразВывод списка образов
docker runКонтейнерЗапуск контейнера на основе образа
docker pushОбразОтправка образа в реестр
docker pullОбразЗагрузка образа из реестра
docker psКонтейнерВывод списка контейнеров
docker system pruneОбраз/КонтейнерУдаление неиспользуемых контейнеров и образов

▍Файл Dockerfile

Надо отметить, что у меня нет приложения-примера для этого материала. Но тут, для экспериментов, подойдёт любое простое Node-приложение.

Но то, что в нём содержится, всего лишь описывает, особыми командами, нечто подобное настройке рабочего окружения. Вот некоторые из этих команд:

В зависимости от выбранного базового образа вам может понадобиться установить дополнительные зависимости. Дело в том, что некоторые базовые образы (вроде Node Alpine Linux) созданы с целью сделать их как можно более компактными. В результате в них могут отсутствовать некоторые программы, на которые вы рассчитываете.

▍Сборка, тегирование и запуск контейнера

▍Сборка

Сначала надо собрать образ, указав имя, и, что необзательно, тег (если тег задан не будет, система автоматически назначит образу тег latest ).

После выполнения этой команды можно наблюдать за тем, как Docker выполняет сборку образа.

Сборка может занять пару минут — тут всё зависит от того, сколько у вас имеется зависимостей. После завершения сборки можно выполнить команду docker images и взглянуть на описание своего нового образа.

▍Запуск

Если перейти теперь по адресу localhost:5000 — можно увидеть страницу работающего приложения, которая выглядит точно так же, как страница приложения, работающего в продакшн-окружении.

▍Назначение тега и публикация

Для того чтобы воспользоваться одним из созданных образов на продакшн-сервере, нужно, чтобы у нас была бы возможность загрузить этот образ с Docker Hub. Это значит, что сначала надо создать на Docker Hub репозиторий для проекта. После этого в нашем распоряжении окажется место, куда можно оправить образ. Образ надо переименовать так, чтобы его имя начиналось с нашего имени пользователя на Docker Hub. После этого должно идти название репозитория. В конце имени может располагаться любой тег. Ниже показан пример именования образов по этой схеме.

Теперь можно собрать образ с назначением ему нового имени и выполнить команду docker push для отправки его в репозиторий Docker Hub.

Если всё пройдёт как надо, образ будет доступен на Docker Hub и его легко можно будет загрузить на сервер или передать другим разработчикам.

Следующие шаги

К настоящему моменту мы убедились в том, что приложение, в виде контейнера Docker, работает локально. Мы загрузили контейнер на Docker Hub. Всё это значит, что мы уже очень неплохо продвинулись к цели. Теперь надо решить ещё два вопроса:

Надо отметить, что здесь можно воспользоваться и другой комбинацией сервисов. Например, вместо Travis CI можно воспользоваться CircleCI или Github Actions. А вместо DigitalOcean — AWS или Linode.

Мы решили работать с Travis CI, а в этом сервисе у меня уже кое-что настроено. Поэтому сейчас я кратко расскажу о том, как подготовить его к работе.

Travis CI

Travis CI — это инструмент для тестирования и развёртывания кода. Мне не хотелось бы входить в тонкости настройки Travis CI, так как каждый проект уникален, и это не принесёт особой пользы. Но я расскажу об основах, которые позволят вам начать работу в том случае, если вы решите пользоваться Travis CI. Что бы вы ни выбрали — Travis CI, CircleCI, Jenkins, или что-то другое, везде будут применяться похожие методы настройки.

Для того чтобы приступить к работе с Travis CI, перейдите на сайт проекта и создайте учётную запись. Затем интегрируйте Travis CI с вашим GitHub-аккаунтом. Вам, в ходе настройки системы, понадобится указать репозиторий, работу с которым вы хотите автоматизировать, и включить доступ к нему. (Я пользуюсь GitHub, но уверена, что Travis CI может интегрироваться и с BitBucket, и с GitLab, и с другими подобными сервисами).

Каждый раз, когда Travis CI принимается за работу, запускается сервер, выполняющий указанные в конфигурационном файле команды, включая развёртывание соответствующих веток репозитория.

▍Жизненный цикл задания

▍Тестирование

В конфигурационном файле я собираюсь настроить локальный сервер Travis CI. В качестве языка я выбрала Node 12 версии и указала системе на то, что нужно установить зависимости, необходимые для использования Docker.

Если вы хотите, чтобы в вашем репозитории выводились бы значки со сведениями о покрытии кода тестами, тут вы можете найти краткую инструкцию об использовании Jest, Travis CI и Coveralls для сбора и вывода этих сведений.

Здесь заканчиваются те действия, которые выполняются для всех ветвей репозитория и для pull-запросов.

▍Развёртывание

Скрипт развёртывания решает две задачи:

Итак, первая часть скрипта — это отправка образа на Docker Hub. Сделать это довольно просто. Использованная мной схема составления тегов подразумевает комбинирование git-хэша и git-тега, если он существует. Это позволяет обеспечить создание уникального тега и упрощает идентификацию сборки, на которой он основан. DOCKER_USERNAME и DOCKER_PASSWORD — это пользовательские переменные окружения, которые можно задать с помощью интерфейса Travis CI. Travis CI автоматически обработает секретные данные так, чтобы они не попали в чужие руки.

Настроить работу сервера было не особенно сложно. Так, я настроила дроплет, основанный на базовом образе. Надо отметить, что выбранная мной система требует выполнения однократной ручной установки Docker и однократного ручного запуска Docker. Я, для установки Docker, использовала Ubuntu 18.04, поэтому вы, если тоже используете Ubuntu, чтобы сделать то же самое, можете просто следовать этому простому руководству.

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

Некоторые вещи, на которые стоит обратить внимание

Возможно, когда вы подключитесь к серверу по SSH из Travis CI, вы увидите предупреждение, которое не позволит продолжить установку, так как система будет ждать реакции пользователя.

Я узнала о том, что строковой ключ можно закодировать в base64 для того, чтобы сохранить её в таком виде, в котором с ней можно будет удобно и надёжно работать. На стадии установки можно декодировать публичный ключ и записать его в файл known_hosts для того, чтобы избавиться от вышеописанной ошибки.

На практике эта команда может выглядеть так:

А вот как выглядит то, что она выдаёт — строка в кодировке base64:

Вот команда, о которой говорилось выше

Тот же подход можно использовать с приватным ключом при установлении соединения, так как вам, для доступа к серверу, вполне может понадобится приватный ключ. При работе с ключом вам лишь нужно обеспечить его безопасное хранение в переменной окружения Travis CI, и то, чтобы он нигде не выводился бы.

TLS/SSL и балансировка нагрузки

После того, как я сделала всё то, о чём шла речь выше, последней вставшей передо мной проблемой стало то, что у сервера не было SSL. Так как я пользуюсь Node.js-сервером, для того, чтобы заставить работать обратный прокси Nginx и Let’s Encrypt, нужно изрядно повозиться.

Итоги

После того, как я сделала всё то, о чём рассказала в этом материале, меня уже не пугала ни платформа Docker, ни концепции автоматизированных CI/CD-цепочек. Я смогла настроить цепочку непрерывной интеграции, в ходе выполнения которой производится тестирование кода до попадания его в продакшн и автоматическое развёртывание кода на сервере. Всё это для меня пока ещё относительно ново, и я уверена, что есть способы улучшить мой автоматизированный рабочий процесс и сделать его эффективнее. Поэтому если у вас есть идеи на этот счёт — дайте мне знать. Надеюсь, эта статья помогла вам в ваших делах. Мне хочется верить, что прочтя её, вы узнали столько же, сколько узнала я, пока разбиралась со всем тем, о чём в ней рассказала.

P.S. В нашем маркетплейсе имеется образ Docker, который устанавливается в один клик. Вы можете проверить работу контейнеров на VPS. Всем новым клиентам бесплатно предоставляются 3 дня для тестирования.

Уважаемые читатели! Пользуетесь ли вы технологиями CI/CD в своих проектах?

Источник

Как использовать Doctl, официальный клиент командной строки DigitalOcean

Более ранняя версия этого руководства была написанаBrennen Bearnes.

Вступление

Веб-панель управления DigitalOcean обеспечивает интерфейс «укажи и нажми» для управления каплями. Тем не менее, вы можете предпочесть инструмент командной строки, если у вас есть много Droplets для управления, вам нужно администрировать Droplets из терминала без графического рабочего стола или у вас есть задачи, которые выиграют от интерфейса с поддержкой сценариев.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

Общее использование doctl

Вызов Команды

В doctl отдельные функции вызываются путем предоставления утилите команды, одной или нескольких подкоманд, а иногда и одной или нескольких опций, определяющих определенные значения. Команды сгруппированы по трем основным категориям:

account для информации, связанной с аккаунтом

auth для аутентификации в DigitalOcean

compute для управления инфраструктурой

Получение данных в формате JSON

В средах сценариев или при работе в командной строке с инструментами обработки данных часто бывает полезно получить машиночитаемый вывод команды.

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

форматирование

Шаблоны

Работа с ресурсами

Список ресурсов

Чтобы получить список ресурсов, таких как капли, вы можете использовать команду list без параметров.

Создание ресурсов

Создание ресурса требует более длинных команд с более подробными параметрами. Чтобы создать каплю, вам нужно указать изображение, которое вы хотите использовать, область центра данных и тип капли, который вы хотите использовать, используя связанный слаг. СмотритеNew Size Slugs for Droplet Plan Changes
, чтобы найти пул, который вы хотите использовать. Alternatively, run the doctl compute size list command.

Например, следующая команда создает 64-разрядную каплю Debian 8 с именемtest с 1 ГБ памяти, одним процессором, ключом SSH и включенным резервным копированием.

Вы увидите этот вывод:

Поиск уникальных идентификаторов для ресурсов

Ряд ресурсов, таких как капли и изображения, идентифицируются по значению (часто числовому), уникальному в базе данных DigitalOcean.

Вы можете получить необходимые уникальные идентификаторы для большинства команд из API:

doctl compute droplet list

Ваши капли. Некоторые команды также принимают имя; большинству требуется числовое значение из столбцаID.

doctl compute ssh-key list

Ключи SSH, связанные с вашей учетной записью. Для создания капли вы можете указатьnumeric ID илиfingerprint.

doctl compute region list

Доступные регионы. Используйте строку в столбцеSlug.

doctl compute image list

Доступные образы, включая снимки состояния, резервные копии и образы базового распространения. Используйте строку в столбцеSlug для создания новых капель.

doctl compute size list

Доступные размеры капель. Используйте строку в столбцеSlug.

doctl compute tag list

Доступные теги. Используйте строку в столбцеName.

Работа с каплями

Создание, удаление и проверка капель

Отображение истории действий, предпринятых для капли.

Список резервных копий для капли.

Создайте каплю. Размер, изображение и регион являются обязательными.

Удалить каплю по идентификатору или имени.

Получите подробную информацию о конкретной капле.

Список ядер для капли.

Составьте список ваших текущих капель.

Составьте список ваших капель, работающих на том же физическом оборудовании, что и конкретная капля.

Список снимков для капли.

Снимите теги с капли.

Инициирование действий капли

Команда doctl compute droplet-action позволяет запускать различные действия для капли, включая действия по управлению питанием и переключение функций, таких как резервное копирование и частные сети.

Получите подробные сведения о действии над каплей.

Отключить резервное копирование для капли.

Выключите каплю и снова включите.

Выключите каплю. Капля должна быть включена. Обычно лучше делать это из командной строки самой капли, чтобы предотвратить потерю данных.

Включите каплю. Капля должна быть выключена.

Сброс питания Droplet.

Включите ipv6 для капли.

Восстановить каплю в конкретный резервный образ. image_id должен быть резервной копией капли.

Восстановите каплю из определенного изображения.

Работа с SSH

Создание SSH-соединений

Чтобы подключиться к отдельному Droplet с SSH, обычно необходимо знать либо его IP-адрес, либо полное доменное имя. Вместо этого вы можете использовать doctl для подключения к капле по ее имени, числовому идентификатору или частному IP:

[.note] #Note: перенаправление команд SSH в настоящее время недоступно в Windows.
#

Имя пользователя для использования в сеансе SSH.

Порт для сеанса SSH.

Включить пересылку агента.

Вы также можете изменить значения конфигурации по умолчанию в файле конфигурации. The project’s README file имеет более подробную информацию о том, как это сделать.

Использование ключей SSH

Перечислите SSH-ключи, связанные с вашей учетной записью.

Получите информацию о конкретном ключе по числовому идентификатору или отпечатку пальца ключа.

Свяжите открытый ключ с вашей учетной записью, указав его содержимое.

Свяжите открытый ключ с вашей учетной записью, указав исходный файл.

Удалите ключ из своей учетной записи по числовому идентификатору или отпечатку пальца.

Измените имя ключа по числовому идентификатору или отпечатку пальца.

Работа с плавающими IP

Перечислить все плавающие IP-адреса.

Получите подробную информацию о плавающем IP-адресе.

Удалите плавающий IP-адрес.

Назначение плавающих IP-адресов для капель

Команда doctl compute floating-ip-action используется для назначения или отмены назначения плавающего IP-адреса для капли.

assign floating_ip droplet_id

Назначьте капле плавающий IP-адрес по ее числовому идентификатору.

Отменить назначение плавающего IP-адреса.

get floating_ip action_id

Получите подробную информацию о действии с плавающим IP-адресом по его числовому идентификатору.

Работа с доменами

Команда doctl compute domain используется для управления доменами. Смотрите нашIntroduction to Managing DNS series для широкого обзора предмета.

Получите запись домена.

Управление доменными записями

Команду doctl compute domain records можно использовать для создания, удаления, обновления или получения информации о записях DNS домена.

Список записей для данного домена.

Создайте запись для домена.

delete domain_name record_id

Удалить запись по числовому идентификатору.

Обновить запись по числовому идентификатору.

Работа с блочными томами хранения

Создание, удаление и проверка томов блочного хранилища

Команду doctl compute volume можно использовать для создания, удаления или получения информации о томах блочного хранилища DigitalOcean. Для получения дополнительной информации об этой функции прочитайте наше руководство поHow To Use Block Storage on DigitalOcean.

Создать том. Имя, регион и размер являются обязательными.

Получите объем по числовому идентификатору.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *