Skip to content

Latest commit

 

History

History
198 lines (134 loc) · 6.57 KB

File metadata and controls

198 lines (134 loc) · 6.57 KB

Отчет

Описание задачи

Необходимо развернуть три виртуальные машины, согласно схеме:

Решение

Для построения и реализации поставленной задачи был использован сервис Play-with-docker.com, который позволяет подключаться удалённо к виртуальным машинам.

Первым этапом было создание виртуальных машин:

Виртуальная машина А

Теперь необходимо настроить машину А (Сервер). Настройка заключается в создание ssh-ключа, создании адаптера для задания маршрутов.

Шаг №1. Генерация ssh-ключа.

Подключение к виртуальной машине А происходит по команде: ssh ip172-18-0-34-conq0rgl2o9000dchcq0@direct.labs.play-with-docker.com

Шаг №2. Создание адаптера на машине А.

Шаг №3. Создание маршрута на машине А между А и С

Следующим этапом будет настройка машины Б, которая выступает связующим звеном между А и С.

Виртуальная машина Б

Шаг №1. Генерация ssh-ключа

Подключение к виртуальной машине А происходит по команде: ssh ip172-18-0-75-conq0rgl2o9000dchcq0@direct.labs.play-with-docker.com

Шаг №2. Создание адаптера на виртуалке Б

Создадим 1-ый маршрут 192.168.24.1/24

Создадим 2-ой маршрут 192.168.2.1/24

На данном этапе настройка машины Б завершается. Приступим к настройке машины С.

Виртуальная машина С

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

Шаг №1. Генерация ssh-ключа

Подключение к виртуальной машине C происходит по команде: ssh ip172-18-0-122-conq0rgl2o9000dchcq0@direct.labs.play-with-docker.com

Шаг №2. Создание адаптера на виртуалке С и добавление маршрута между С и А

Настройка машины С завершено

Создание и запуск http-сервера

Шаг №1. Установка модуля Flask на машине А

Шаг №2. Создание файла app.py

Шаг №3. Разворачивание hhtp-сервера на 5000 порту на виртуалке А

Шаг №4. Отправка запроса с машины С на 5000 порт машины А

Машина С:

Машина А:

Bash-скрипты для виртуалок А, Б и С

Также в рамках задания необходимо было прописать bash-скрипт для каждой виртуалки, который позволит в дальнейшим упростить запуска наших машин.

Виртуалка А.

#!/bin/bash
echo "Adapter for A"
ip link add macvlan1 link eth0 type macvlan mode bridge
ip address add dev macvlan1 192.168.24.10/24
ip link set macvlan1 up
ip route add 192.168.2.0/24 via 192.168.24.1

pip install flask

touch app.py

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET'])
def get_request():
    return 'GET request'

@app.route('/', methods=['POST'])
def post_request():
    data = request.get_json()
    return f'POST request with data: {data}'

@app.route('/', methods=['PUT'])
def put_request():
    data = request.get_json()
    return f'PUT request with data: {data}'

app.run(host='0.0.0.0', port=5000)

python app.py

Виртуалка Б.

#!/bin/bash
echo "Configuring adapter for A"
ip link add macvlan1 link eth0 type macvlan mode bridge
ip address add dev macvlan1 192.168.24.1/24
ip link set macvlan1 up
echo "Adapter for A - ready\n"

echo "Configuring adapter for C"
ip link add macvlan2 link eth0 type macvlan mode bridge
ip address add dev macvlan2 192.168.2.1/24
ip link set macvlan2 up
echo "Adapter for C - ready\n"

Виртуалка С.

#!/bin/bash
echo "Configuring adapter for subnet C"
ip link add macvlan1 link eth0 type macvlan mode bridge
ip address add dev macvlan1 192.168.2.10/24
ip link set macvlan1 up
ip route add 192.168.24.0/24 via 192.168.2.1

echo "Adapter for C - ready"

printf "Sending request"
curl "http://192.168.28.10:5000"