Skip to content

Repository files navigation

DEMO2024

inspared by https://github.com/valeriar23/DEMO2022

Топология сети

image

План выполнения DEMO

  • 1 Модуль
  1. Базовая настройка сетевых устройств
  2. Настройка внутренней маршрутизации
  3. Настройка DHCP
  4. Настройка локальных учетных записей
  5. Проверка пропускной способности
  6. Написание backup скрипта
  7. Настройка SSH
  8. Настройка контроль доступ по SSH
  • 2 Модуль
  1. Настройка DNS сервера
  2. Настройка NTP
  3. Настройка выбора сервера домена
  4. Реализация файлового сервера
  5. Конфигурация веб-севера LMS Apache
  6. Запуск сервиса MediaWiki используя docker

Дисклеймер

В связи с отсутствием конкретных данных, относящихся к IP адресации в сети (за исключением необходимого количества хостов для каждого офиса см. Пункт 1 Модуль 1). Было решено взять в качестве образца:

  • ISP:CLI - 1.1.10.0/24

  • ISP:BR-R - 5.5.5.0/28

  • ISP:HQ-R - 4.4.4.0/26

  • BR-R:BR-SRV - 172.16.100.0/28

  • HQ-R:HQ-SRV - 192.168.100.0/26

    На самом экзамене IP адресация 100% будет другая

Так-же настройка IPv6 рассматриваться на данный момент не будет

Модуль 1 задание 6

"Составьте backup скрипты для сохранения конфигурации сетевых устройств, а именно HQ-R BR-R. Продемонстрируйте их работу"

  1. Создайте файл backup.bash в домашней директории пользователя
touch /root/backup.bash
  1. Откройте его с помшью любого текстового редактора, в моём случае - VIM
vim /root/backup.bash
  1. В начале создания bash скрипта, необходимо указать
#!/bin/bash

#!/bin/bash - это шебанг (shebang) или интерпретаторная строка, которая используется в начале исполняемых сценариев в операционной системе Linux и других подобных системах Unix. Эта строка указывает на то, какую программу использовать для интерпретации и выполнения содержимого файла. В данном случае #!/bin/bash означает, что файл должен быть выполнен с использованием оболочки Bash (Bourne-again shell).

  1. Следующей строкой укажем путь к файлу конфигурации, резервное копирование которой мы хотим сделать
CONFIG_FILE="/etc/network/interfaces"
  1. Создаём имя файла для резервной копии, добавив текущую дату и время
BACKUP_FILE="/root/interfaces_backup_$(date +%Y%m%d%H%M%S)"
  1. Создаём резервную копию файла конфигурации
cp $CONFIG_FILE $BACKUP_FILE
  1. Для того, чтобы пользователь понимал, что bash скрипт выполнение успешно, добавим вывод строки с помощью echo c указанием созданных раннее переменных
echo "Backup of $CONFIG_FILE saved to $BACKUP_FILE"

Модуль 2 задание 3

Настройка домена на Debian реализуется с помощью FreeIPA.

FreeIPA — это решение для управления идентификацией с открытым исходным кодом для операционных систем Linux/Unix. Это дочерний проект RedHat Identity Management System, который предоставляет решения для аутентификации и авторизации для систем Linux/Unix.

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

Сначала введите следующую команду apt, чтобы установить основные зависимости.

sudo apt install curl gnupg git lsb-release

image

Затем добавьте и загрузите ключ GPG репозитория Docker CE.

sudo mkdir -m 0755 -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

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

echo 

  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 

  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

image

Теперь запустите приведенную ниже команду «apt update», чтобы обновить индекс вашего пакета Debian.

sudo apt update

image

Затем установите пакеты Docker CE, введя команду «apt install» ниже. Введите y для подтверждения при появлении запроса и нажмите ENTER, чтобы продолжить.

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

image

Если Docker CE установлен, он также автоматически запускается и включается. выполните команду systemctl ниже, чтобы проверить службу Docker.

sudo systemctl is-enabled docker

sudo systemctl status docker

image

Наконец, если вы планируете запускать приложение Docker от пользователя без полномочий root, вам необходимо добавить своего пользователя в группу «docker». Введите следующую команду, чтобы добавить пользователя в группу «docker». В этом примере вы добавите пользователя «user» в группу «docker».

sudo usermod -aG docker user

Теперь выполните следующую команду git, чтобы загрузить репозиторий freeipa-container в вашу систему. Затем переместите в него свой рабочий каталог.

git clone https://github.com/freeipa/freeipa-container.git

cd freeipa-container

image

Теперь запустите приведенную ниже команду «ls», чтобы проверить список файлов и каталогов в репозитории «freeipa-container». Вы должны увидеть несколько файлов Dockerfile, которые вы можете использовать для настройки сервера FreeIPA в вашей системе Debian.

ls

image

Затем введите следующую команду, чтобы создать новый образ Docker сервера FreeIPA. В этом примере вы создадите образ Docker-сервера FreeIPA на основе «AlmaLinux 9» и будет называться «freeipa-almalinux9».

docker build -t freeipa-almalinux9 -f  Dockerfile.almalinux-9 .

После выполнения команды docker build вы должны увидеть процесс сборки образа Docker для сервера FreeIPA.

image

Выполните следующую команду, чтобы проверить список образов Docker, доступных в вашей системе. Вы должны увидеть образ Docker под названием «freeipa-almalinux9», созданный и доступный в вашей системе.

docker images

image

Модуль 2 задание 4

Вначале установим на каждом сервере необходимые компонент

  1. Установите и настройте Samba на сервере HQ-SRV, если он еще не установлен. Выполните команду для установки Samba (если она еще не установлена):

Установите на HQ-SRV пакет nfs-kernel-server, которы позволит вам предоставлять доступ к вашим каталогам. Поскольку это первая операция, которую вы выполняете с помощью apt в этом сеансе, обновите индекс локальных пакетов перед установкой:

sudo apt update
sudo apt install nfs-kernel-server

После установки пакетов переключитесь на клиентский сервер

На клиенте необходимо установить пакет nfs-common, обеспечивающий функции NFS без добавления каких-либо серверных компонентов. Обновите индекс локальных пакетов перед установкой, чтобы гарантированно использовать актуальную информацию:

sudo apt update
sudo apt install nfs-common

Для начала создайте каталоги на HQ-SRV:

mkdir /shares/network -p
mkdir /shares/branch_files -p
mkdir /shares/admin_files -p

Для монтирования на клиенте также создайте каталоги:

mkdir /mnt/network -p
mkdir /mnt/admin_files -p
mkdir /mnt/branch_files -p

Для настройки экспорта каталога, откройте следующие записи:

/share/network client_ip(rw,sync,no_roo_squash)
/share/branch_files client_ip(rw,sync,no_roo_squash)
/share/admin_files client_ip(rw,sync,no_roo_squash)

Здесь мы используем для обоих каталогов одинаковые параметры конфигурации, за исключением no_root_squash. Посмотрим, что означают эти опции:

rw: эта опция дает клиенту доступ к чтению и записи на соответствующем томе. sync: эта опция принудительно заставляет NFS записывать изменения на диске, прежде чем отправлять ответ. В результате мы получаем более стабильную и согласованную среду, поскольку в ответе отражается фактическое состояние удаленного тома. Однако при этом снижается скорость операций с файлами. no_subtree_check: данная опция предотвращает проверку вложенного дерева, когда хост проверяет фактическую доступность файла в экспортированном дереве при каждом запросе. Это может вызвать много проблем в случае переименования файла, когда он открыт на клиентской системе. Проверку вложенного дерева в большинстве случаев лучше отключить. no_root_squash: по умолчанию NFS преобразует запросы удаленного пользователя root в запросы пользователя без привилегий на сервере. Это предназначено для обеспечения безопасности, чтобы пользователь root клиентской системы не мог использовать файловую систему хоста с правами root. Опция no_root_squash отключает такое поведение для определенных общих ресурсов. Нам нужно создать строку для каждого каталога, к которым мы планируем предоставить общий доступ. Обязательно замените сокращение client_ip своим реальным IP-адресом:

Для безопасности NFS преобразует любые операции root на клиенте в операции с учетными данными nobody:nogroup. В связи с этим, нам необходимо изменить владельца каталога для соответствия этим учетным данным.

sudo systemctl restart nfs-kernel-server

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

chown nobody:nogroup /shares/network
chown nobody:nogroup /shares/branch_files
chown nobody:nogroup  /shares/admin_files

Запуск сервиса Moodle LMS (Apache2+MariaDB)

Веб-сервер Apache доступен в репозитории Debian и может быть установлен через менеджер пакетов apt, выполнив следующую команду:

sudo apt install apache2

Добавьте Apache2 в автозапуск.

sudo systemctl enable apache2

Для провекра первичной работоспособности яндекс зайдите в браузер и в поисковой строке введите ваш IP-адрес.

http://your-IP-address

image

Для установки PHP для Moodle, скачиваем пакеты.

sudo apt install php libapache2-mod-php php-iconv php-intl php-soap php-zip php-curl php-mbstring php-mysql php-gd php-xml php-pspell php-json php-xmlrpc

Проверить наличие PHP можно командой:

php -v

Вы должны получить такой ответ:

Output: PHP 7.4.28 (cli) (built: Feb 17 2022 16:17:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies

Установка Базы Данных MariaDB осуществляется следующей командой:

sudo apt install mariadb-server mariadb-client

Добавьте MariaDB в автозагрузку.

sudo systemctl enable mariadb

Для дальнейшей работы, нужно отредактировать конфигурационный файл MariaDB.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Добавьте следующие строки:

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

Перезапустите службу

sudo systemctl restart mariadb

Для создания базы данных в MariaDB, сначала войдите в неё.

sudo  mysql -u root

Чтобы создать базу данных, пользователя базы данных и выдать все привелегии, нужно прописать:

MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> CREATE USER 'moodle_user'@'localhost' IDENTIFIED BY 'Moodle_Passw0rd!';
MariaDB [(none)]> GRANT ALL ON moodledb.* TO 'moodle_user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT

Установка Moodle производится с помощью команды:

sudo wget https://download.moodle.org/download.php/direct/stable400/moodle-4.0.1.zip

После загрузки, распакуйте скаченные файлы и сохраните их в директорию для html.

sudo unzip moodle-4.0.1.zip -d /var/www/html/

Создайте директорию для Moodle.

sudo mkdir /var/www/html/moodledata

Настройте права доступа для созданной диреткории.

sudo chown -R www-data:www-data /var/www/html/moodle/
sudo chmod -R 755 /var/www/html/moodle/
sudo chown -R www-data:www-data /var/www/html/moodledata/

Создайте конфигурационный файл Apache для сайта.

nano /etc/apache2/sites-available/moodle.conf

Файл должен выглядить следующим образом:

<VirtualHost *:80>

ServerAdmin webmaster@your-domain.com

ServerName your-domain.com
ServerAlias www.your-domain.com
DocumentRoot /var/www/html/moodle

<Directory /var/www/html/moodle/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/your-domain.com_error.log
CustomLog ${APACHE_LOG_DIR}/your-domain.com_access.log combined

</VirtualHost>

Активируйте виртуальный хост Apache.

sudo a2ensite moodle.conf

Перезапустите службу.

sudo systemctl restart apache2

Чтобы получить доступ к веб-установки, открой браузер и перейдите по IP-адресу/DNS имени на ваш хост.

http://your-domain.com

В появившемся окне, выберите язык

image Настройте URL-адрес, корневой веб-каталог и каталог данных, а затем нажмите «Далее»

image Настройте «драйвер базы данных», используйте сервер базы данных MariaDB и нажмите «Далее»

image Введите информацию о базе данных и нажмите «Далее», чтобы продолжить

image Примите Соглашение об авторском праве и нажмите «Продолжить»

image Система проверяет конфигурацию сервера и все расширения PHP, необходимые для Moodle

image Если все требования выполнены, нажмите «Продолжить»

image Убедитесь, что все результаты «Success». Затем снова нажмите «Продолжить»

image Заполните информацию об администраторе и нажмите «Обновить профиль»

image Вы будете перенаправлены на панель администратора

image

Запуск сервиса MediaWiki используя docker на сервере

  1. Установите службы Docker и Docker-compose

  2. Создайте файл wiki.yml

touch wiki.yml
  1. Отредактируйте созданный файл
vim wiki.yml
  1. Приведите его к следующему виду
# MediaWiki with MariaDB
#
# Access via "http://localhost:8080"
#   (or "http://$(docker-machine ip):8080" if using docker-machine)
version: '3'
services:
  mediawiki:
    image: mediawiki
    restart: always
    ports:
      - 8080:80
    links:
      - database
    volumes:
      - images:/var/www/html/images
      # After initial setup, download LocalSettings.php to the same directory as
      # this yaml and uncomment the following line and use compose to restart
      # the mediawiki service
      # - ./LocalSettings.php:/var/www/html/LocalSettings.php
  # This key also defines the name of the database host used during setup instead of the default "localhost"
  database:
    image: mariadb
    restart: always
    environment:
      # @see https://phabricator.wikimedia.org/source/mediawiki/browse/master/includes/DefaultSettings.php
      MYSQL_DATABASE: mediawiki
      MYSQL_USER: wiki
      MYSQL_PASSWORD: DEP@ssw0rd
      MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
    volumes:
      - db:/var/lib/mysql

volumes:
  images:
  db:
  1. Запустите docker контейнеры
docker-compose -f wiki.yml up -d
  1. Проверьте запуск контейнеров
docker ps
  1. Если вы всё сделали правильно, то при переходе на адрес хоста, на котором запущены контейнеры вас будет ждать следующая веб-страниа
image

Нажимамем "Please set up the wiki first."

  1. Выбираем язык
image
  1. Приступаем к настройке базы данных
image

10 Для того, чтобы узнать хост базы данных, пропишем

docker exec -it root-database-1 bash

Где "root-database-1" - имя запущенного контейнера, чтобы его уточнить, можно прописать

docker ps

А после того, как вам удалось войти в контейнер БД, нужно прописать команду

hostname -i

В результате чего, БД выдаст вам желаемый хост базы данных

  1. Заполняем таблицу основываясь на wiki.yml файле и полученном хосте
image
  1. Создаём учетную запись
image
  1. После проделанных манипуляций, сайт Mediawiki предложит вам скачать файл LocalSettings.php, который нужно скопировать в одну директорию с wiki.yml
cp /home/user/Downloads/LocalSettings.php /root/
  1. Снимаем комментарий со строчки в wiki.yml
./LocalSettings.php:/var/www/html/LocalSettings.php
  1. Перезапускаем контейнеры
docker-compose -f wiki.yml up -d
  1. Mediawiki должно работать
image

About

Infrastructure demo project - automated deployment and provisioning

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages