← Навигация по документации

Multipass — это инструмент для создания облачных виртуальных машин Ubuntu на Linux, macOS и Windows.

  1. Установите Multipass

    Метод установки Multipass отличается в зависимости от платформы - Как установить Multipass на Linux - Как установить Multipass на macOS - Как установить Multipass на Windows 2. Подготовьте YAML-файл Cloud-init docker-cloud-config.yaml: ```yaml

    cloud-config

    apt: sources: docker.list: source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88

    packages: - apt-transport-https - ca-certificates - curl - gnupg-agent - software-properties-common - docker-ce - docker-ce-cli - containerd.io

    Включить ipv4-форвардинг, требуется на машинах с CIS-закалкой

    write_files: - path: /etc/sysctl.d/enabled_ipv4_forwarding.conf content: | net.ipv4.conf.all.forwarding=1

    создать группу docker

    groups: - docker

    Добавить пользователя по умолчанию, создаваемого автоматически, в группу docker

    system_info: default_user: groups: [docker] ``` чтобы упростить установку Docker Engine при запуске новой ВМ.

    В Linux файл docker-cloud-config.yaml должен располагаться в домашнем каталоге пользователя, чтобы он был доступен приложению Multipass Snap.

  2. Создайте и запустите новую ВМ с установленным Docker Engine для каждого узла (например): console $ multipass launch -n arc-node -d 10G -m 4G --cloud-init docker-cloud-config.yaml Launched: arc-node console $ multipass launch -n db-node -d 10G -m 4G --cloud-init docker-cloud-config.yaml Launched: db-node console $ multipass launch -n elk-node -d 10G -m 4G --cloud-init docker-cloud-config.yaml Launched: elk-node где

    См. ```console $ multipass launch -h Usage: multipass launch [options] [[] | ] Create and start a new instance.

    Options: -h, --help Displays help on commandline options -v, --verbose Increase logging verbosity. Repeat the 'v' in the short option for more detail. Maximum verbosity is obtained with 4 (or more) v's, i.e. -vvvv. -c, --cpus Number of CPUs to allocate. Minimum: 1, default: 1. -d, --disk Disk space to allocate. Positive integers, in bytes, or with K, M, G suffix. Minimum: 512M, default: 5G. -m, --mem Amount of memory to allocate. Positive integers, in bytes, or with K, M, G suffix. Minimum: 128M, default: 1G. -n, --name Name for the instance. If it is 'primary' (the configured primary instance name), the user's home directory is mounted inside the newly launched instance, in 'Home'. --cloud-init | Path or URL to a user-data cloud-init configuration, or '-' for stdin --network Add a network interface to the instance, where is in the "key=value,key=value" format, with the following keys available: name: the network to connect to (required), use the networks command for a list of possible values, or use 'bridged' to use the interface configured via multipass set local.bridged-network. mode: auto|manual (default: auto) mac: hardware address (default: random). You can also use a shortcut of "" to mean "name=". --bridged Adds one --network bridged network. --mount : Mount a local directory inside the instance. If is omitted, the mount point will be the same as the absolute path of --timeout Maximum time, in seconds, to wait for the command to complete. Note that some background operations may continue beyond that. By default, instance startup and initialization is limited to 5 minutes each.

    Arguments: image Optional image to launch. If omitted, then the default Ubuntu LTS will be used. can be either ‘release’ or ‘daily‘. If is omitted, ‘release’ will be used. can be a partial image hash or an Ubuntu release version, codename or alias. is a custom image URL that is in http://, https://, or file:// format. для просмотра всех доступных опций. 4. Выведите список созданных экземпляров и добавьте записи в ваш DNS или файл hosts:console $ multipass list Name State IPv4 Image arc-node Running 10.109.53.4 Ubuntu 20.04 LTS 172.19.0.1 172.17.0.1 db-node Running 10.109.53.75 Ubuntu 20.04 LTS 172.17.0.1 172.19.0.1 elk-node Running 10.109.53.139 Ubuntu 20.04 LTS 172.19.0.1 172.17.0.1 console $ sudo -i # cat >> /etc/hosts << EOF 10.109.53.4 arc-node 10.109.53.75 db-node 10.109.53.139 elk-node EOF # exit logout `` 5. Перенесите специфичные для узлов скрипты конфигурации (например, [init-arc-node.sh](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/init-arc-node.sh), [init-db-node.sh](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/init-db-node.sh), [init-elk-node.sh](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/init-elk-node.sh), [docker-compose.yml`](https://raw.githubusercontent.com/wiki/dcm4che/dcm4chee-arc-light/docker/docker-compose.yml), на созданные ВМ (например):

console $ multipass transfer init-arc-node.sh docker-compose.yml docker-compose.env arc-node: console $ multipass transfer init-db-node.sh db-node: console $ multipass transfer init-elk-node.sh elk-node: 6. Откройте командную оболочку в каждом экземпляре и запустите специфичный для узла скрипт инициализации от имени root: console $ multipass shell arc-node Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64) ... ubuntu@arc-node$ sudo bash -v ~ubuntu/init-arc-node.sh ... console $ multipass shell db-node Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64) ... ubuntu@db-node$ sudo bash -v ~ubuntu/init-db-node.sh ... console $ multipass shell elk-node Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-124-generic x86_64) ... ubuntu@elk-node$ sudo bash -v ~ubuntu/init-elk-node.sh ... 7. Инициализируйте Docker Swarm в командной оболочке узла, выступающего в роли менеджера swarm: ```console ubuntu@arc-node:~$ docker swarm init Swarm initialized: current node (reney80x2dbg82aqh5b5130zc) is now a manager.

To add a worker to this swarm, run the following command:

   docker swarm join --token SWMTKN-1-4rceln8o0wwcmoqjv67wg17svij7mzj3kkyhrnbk4f1tejz8eu-3lxvhgmmzv1gbmmvpkir4wz9m 10.109.53.4:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. и добавьте остальные узлы в swarm как worker, выполнив указанную выше команду в их командных оболочках:console ubuntu@db-node:~$ docker swarm join --token SWMTKN-1-4rceln8o0wwcmoqjv67wg17svij7mzj3kkyhrnbk4f1tejz8eu-3lxvhgmmzv1gbmmvpkir4wz9m 10.109.53.4:2377 This node joined a swarm as a worker. console ubuntu@elk-node:~$ docker swarm join --token SWMTKN-1-4rceln8o0wwcmoqjv67wg17svij7mzj3kkyhrnbk4f1tejz8eu-3lxvhgmmzv1gbmmvpkir4wz9m 10.109.53.4:2377 This node joined a swarm as a worker. 8. Теперь вы готовы создавать сервисы по отдельности или разворачивать стеки сервисов на узле, выступающем в роли менеджера swarm (например):console ubuntu@arc-node:~$ docker stack deploy -c docker-compose.yml dcm4che Creating network dcm4che_default Creating service dcm4che_arc Creating service dcm4che_elasticsearch Creating service dcm4che_kibana Creating service dcm4che_logstash Creating service dcm4che_ldap Creating service dcm4che_keycloak Creating service dcm4che_oauth2-proxy Creating service dcm4che_db 9. Вы можете останавливать и перезапускать созданные ВМ, например:console $ multipass stop arc-node db-node elk-node console $ multipass start arc-node db-node elk-node 10. Вы можете удалить и окончательно очистить созданные ВМ, например:console $ multipass delete -p arc-node db-node elk-node ```