Рубрики
Uncategorized

Предоставление контейнеров докеров с Sparrowdo

Как предоставить экземпляры Docker с мощным DSL. Tagged с Docker, Perl6, Linux, DevOps.

Sparrowdo это инструмент управления конфигурацией, написанный на Perl6 В этом посте я собираюсь показать вам, как можно настроить (обеспечение) Экземпляры Docker от Sparrowdo сценариев.

Установите Perl6.

Есть много способов установить Perl6, вот пара ссылок, с которых вы можете начать:

После завершения установки Perl6 остальные просты, вам нужно установить SParrowdo в виде модуля Perl6:

$ zef install Sparrowdo

Sparrowdo Provisions Live Docker Containers, поэтому вам нужно запустить один. Я собираюсь использовать Bitnami/Minideb-etts , однако вы можете выбрать свой собственный:

$ docker run -t -d bitnami/minideb-extras bash

Если мы проверим наши контейнеры докеров, выход будет что-то подобное:

$ docker ps
CONTAINER ID        IMAGE                    COMMAND                 CREATED             STATUS              PORTS               NAMES
99bc3937ea37        bitnami/minideb-extras   "/entrypoint.sh bash"   2 seconds ago       Up 1 second                             determined_montalcini

Как мы видели, нам удалось запустить наш экземпляр докера.

Sparrowdo раскрывает аккуратный DSL Для конфигурации серверов, поэтому мы рассмотрим некоторый DSL Sparrowdo, чтобы показать, как его использовать.

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

Мы собираемся покрывать Некоторые типичные сценарии использования.

Воробей

По умолчанию SParrowdo ищет исходный код сценария в файле с именем Sparrowfile Расположен в текущем рабочем каталоге. Итак, мы собираемся разместить код сценария здесь.

Рассмотрим первый простой использование случая создания пользователей и каталогов.

Создание пользователей, файлов и каталогов

Вероятно, самое часто вы настраиваете свой сервер, так:

user "melezhik";

directory "/var/data/dir-one", %(
    owner => "melezhik"
);

А затем дайте этот сценарий, управляемый Sparrowdo:

$ sparrowdo --no_sudo --docker=determined_montalcini --format=production --bootstrap

Первый пробег будет производить Много выхода , не путайте -потому что это свежий сервер, а Sparrowdo Первая установка подразумевает (*) Sparrow Client Bootstrap на этом сервере (Unfit -Bootstrap Опция). Это приводит к многим дополнительным операциям.

Второй пробег будет намного быстрее и будет производить много выводов Terser (**):

running sparrow tasks on 127.0.0.1 ... 
target OS is - ubuntu
push [task] create user melezhik OK
push [task] create directory /var/data/dir-one OK
SPL file /opt/sparrow/sparrow.list is empty
get index updates from SparrowHub ... OK
set up task box file - /home/melezhik/.sparrowdo//opt/sparrow/task-box.json - OK
public@user is uptodate (0.2.1)
public@directory is uptodate (0.1.5)
running task box from /opt/sparrow/sparrow-cache/task-box.json ... 
2017-10-10 10:22:30 : [task] create user melezhik [path] modules/change/
2017-10-10 10:22:30 : [task] create directory /var/data/dir-one [path] modules/create/

(*) Warrow Client используется в качестве агента Sparrowdo для выполнения сценария, который выполняется в основные задачи воробья

(**) Кстати, Sparrowdo поставляется с параметрами для установки отчетов, пожалуйста, следуйте Документация Анкет

Также часто нужно, когда вы делаете настройку и конфигурацию сервера, так что:

package-install (
  'nano',
  'mc',
  'ncdu',
  'nginx'
);

И выход будет:

running sparrow tasks on 127.0.0.1 ... 
target OS is - ubuntu
push [task] install packages: nano mc ncdu nginx OK
SPL file /opt/sparrow/sparrow.list is empty
get index updates from SparrowHub ... OK
set up task box file - /home/melezhik/.sparrowdo//opt/sparrow/task-box.json - OK
installing public@package-generic version 0.003007 ...
Download https://sparrowhub.org/plugins/package-generic-v0.003007.tar.gz --- 200
running task box from /opt/sparrow/sparrow-cache/task-box.json ... 
2017-10-10 10:35:54 : [task] install packages: nano mc ncdu nginx [path] modules/apt-get/ [params] action:install package:nano
2017-10-10 10:36:01 : [task] install packages: nano mc ncdu nginx [path] modules/apt-get/ [params] action:install package:mc
2017-10-10 10:36:53 : [task] install packages: nano mc ncdu nginx [path] modules/apt-get/ [params] action:install package:ncdu
2017-10-10 10:36:59 : [task] install packages: nano mc ncdu nginx [path] modules/apt-get/ [params] action:install package:nginx

Запуск услуг

Услуги являются жизненно важной частью инфраструктуры и конфигурации. Sparrowdo предоставляет желаемое Набор функций Чтобы справиться с этой задачей. Давайте установим веб -сервер NGINX и добавьте его к уровням запуска, а затем запустим его. Сценарий будет:

package-install 'nginx';
service-enable 'nginx';
service-start 'nginx';

И отчет Sparrowdo выглядит так:

running sparrow tasks on 127.0.0.1 ... 
target OS is - ubuntu
push [task] install packages: nginx OK
push [task] enable service nginx OK
push [task] start service nginx OK
SPL file /opt/sparrow/sparrow.list is empty
get index updates from SparrowHub ... OK
set up task box file - /home/melezhik/.sparrowdo//opt/sparrow/task-box.json - OK
public@package-generic is uptodate (0.3.7)
installing public@service version 0.001015 ...
Download https://sparrowhub.org/plugins/service-v0.001015.tar.gz --- 200
running task box from /opt/sparrow/sparrow-cache/task-box.json ... 
2017-10-10 10:42:33 : [task] install packages: nginx [path] modules/apt-get/ [params] action:install package:nginx
2017-10-10 10:42:33 : [task] enable service nginx [path] modules/enable/ [params] os:debian service:nginx
2017-10-10 10:42:33 : [task] start service nginx [path] modules/start/ [params] os:debian service:nginx

BTW Sparrowdo предоставляет некоторые нефте функции Чтобы проверить здоровье служб, поэтому давайте использовать SOME, чтобы проверить доступность Nginx Server:

proc-exists 'nginx';
http-ok;

В этом случае мы меняем -формат по умолчанию значения, чтобы увидеть более подробную информацию:

$ sparrowdo --no_sudo --docker=determined_montalcini --format=default
running sparrow tasks on 127.0.0.1 ... 
target OS is - ubuntu
push [task] check nginx process OK
push [task] run bash: curl -fsSLk -D - --retry 3 127.0.0.1 -o /dev/null ... OK
SPL file /opt/sparrow/sparrow.list is empty
get index updates from SparrowHub ... OK
set up task box file - /home/melezhik/.sparrowdo//opt/sparrow/task-box.json - OK
installing public@proc-validate version 0.001003 ...
Download https://sparrowhub.org/plugins/proc-validate-v0.001003.tar.gz --- 200
installing public@bash version 0.001006 ...
Download https://sparrowhub.org/plugins/bash-v0.001006.tar.gz --- 200
running task box from /opt/sparrow/sparrow-cache/task-box.json ... 
2017-10-10 11:26:28 : [task] check nginx process [path] /
check by pid file
pid found at /var/run/nginx.pid:11114
11114 nginx: master process /usr/       43:54
ok  scenario succeeded
ok  text match /.*/
ok  '11114 nginx: master process /usr/       43:54' match /.*/
STATUS  SUCCEED
@ runs bash command
2017-10-10 11:26:28 : [task] run bash: curl -fsSLk -D - --retry 3 127.0.0.1 -o /dev/null ... [path] modules/bash-command/ [params] envvars:
++ test -z
++ bash -c ' curl -fsSLk -D - --retry 3 127.0.0.1 -o /dev/null'
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Tue, 10 Oct 2017 11:26:28 GMT
Content-Type: text/html
Content-Length: 867
Last-Modified: Tue, 10 Oct 2017 10:37:28 GMT
Connection: keep-alive
ETag: "59dca2e8-363"
Accept-Ranges: bytes

ok  scenario succeeded
STATUS  SUCCEED

И, наконец, если эти абстракции высокого уровня недостаточно недостаточно, вы всегда можете выполнить произвольный код Bash, см. Следующий раздел.

Bash Функция позволяет вставить фрагменты кода и выполнять их, есть много способов назвать его и различные параметры, которые вы можете добавить, простая форма — это просто Bash $ Command , как это:

bash('echo hello world');

SParrowdo — это современные, все батареи включали в себя инструментарий для удаленного настраивания серверов. Как мы видели, это хорошо играет с Docker.

Есть много земли для покрытия, как SSH/SCP Призывы команды, забрать Репозитории Git, население файлов конфигурации по Шаблоны И еще, я бы посоветовал вам углубить детали в Sparrowdo Github Страницы документации или на специальном блоге Sparrowdo — http://sparrowdo.wordepress.com

Как обычно — идеи, комментарии и вопросы приветствуются.

С уважением.

Автор Sparrowdo.

Оригинал: «https://dev.to/melezhik/provision-of-docker-containers-with-sparrowdo-8p5»