Openstack Cli# Обращаемся к источнику данных, чтобы узнать ID существующего виртуального маршрутизатора data "openstack_networking_router_v2" "router" { name = "cloud" } data "openstack_networking_router_v2" "router1" { name = "cloud" } data "openstack_networking_router_v2" "router2" { name = "cloud" } data "openstack_networking_router_v2" "router3" { name = "cloud" } data "openstack_networking_router_v2" "router4" { name = "cloud" } # Создаём сеть с именем "INTERNET" в соответствие с топологией resource "openstack_networking_network_v2" "network" { name = "INTERNET" admin_state_up = "true" } resource "openstack_networking_network_v2" "network1" { name = "Backup-Net" admin_state_up = "true" } resource "openstack_networking_network_v2" "network2" { name = "Management-Net" admin_state_up = "true" } resource "openstack_networking_network_v2" "network3" { name = "Internal-Net" admin_state_up = "true" } resource "openstack_networking_network_v2" "network4" { name = "External-Net" admin_state_up = "true" } # Создаём подсеть с именем "INTERNET" в ранее созданной сети с именем "INTERNET" resource "openstack_networking_subnet_v2" "subnet" { name = "INTERNET" network_id = openstack_networking_network_v2.network.id cidr = "192.168.200.0/24" ip_version = 4 gateway_ip = "192.168.200.1" dns_nameservers = [ "77.88.8.8" ] enable_dhcp = false } resource "openstack_networking_subnet_v2" "subnet1" { name = "Backup-Net" network_id = openstack_networking_network_v2.network1.id cidr = "192.168.10.128/27" ip_version = 4 gateway_ip = "192.168.10.158" dns_nameservers = [ "77.88.8.8" ] enable_dhcp = false } resource "openstack_networking_subnet_v2" "subnet2" { name = "Management-Net" network_id = openstack_networking_network_v2.network2.id cidr = "192.168.10.64/26" ip_version = 4 gateway_ip = "192.168.10.126" dns_nameservers = [ "77.88.8.8" ] enable_dhcp = false } resource "openstack_networking_subnet_v2" "subnet3" { name = "Internal-Net" network_id = openstack_networking_network_v2.network3.id cidr = "192.168.10.0/26" ip_version = 4 gateway_ip = "192.168.10.62" dns_nameservers = [ "77.88.8.8" ] enable_dhcp = false } # Создаём подсеть с именем "INTERNET" в ранее созданной сети с именем "INTERNET" resource "openstack_networking_subnet_v2" "subnet4" { name = "External-Net" network_id = openstack_networking_network_v2.network4.id cidr = "172.16.1.0/29" ip_version = 4 gateway_ip = "172.16.1.6" dns_nameservers = [ "77.88.8.8" ] enable_dhcp = false } # Добавляем в существующий маршрутизатор созданную подсеть с именем "INTERNET", чтобы в дальнейшем ВМ подключённые к данной подсети имели доступ в Интернет resource "openstack_networking_router_interface_v2" "router_interface" { router_id = data.openstack_networking_router_v2.router.id subnet_id = openstack_networking_subnet_v2.subnet.id } resource "openstack_networking_router_interface_v2" "router_interface1" { router_id = data.openstack_networking_router_v2.router1.id subnet_id = openstack_networking_subnet_v2.subnet1.id } resource "openstack_networking_router_interface_v2" "router_interface2" { router_id = data.openstack_networking_router_v2.router2.id subnet_id = openstack_networking_subnet_v2.subnet2.id } resource "openstack_networking_router_interface_v2" "router_interface3" { router_id = data.openstack_networking_router_v2.router3.id subnet_id = openstack_networking_subnet_v2.subnet3.id } resource "openstack_networking_router_interface_v2" "router_interface4" { router_id = data.openstack_networking_router_v2.router4.id subnet_id = openstack_networking_subnet_v2.subnet4.id } Скрипт автоматизации: deploy-cloudinfra.sh a) Основные параметры Рабочая директория: /home/altlinux/bin Конфигурационный файл: /home/altlinux/bin/cloudinit.conf b) Пример скрипта (deploy-cloudinfra.sh) bash #!/bin/bash # Настройки подключения к облачному провайдеру source /home/altlinux/bin/cloudinit.conf
Любитель Linux и настройки сетевого оборудования
3
подписчика
В этом канале я вам покажу как настраивать Linux и разное сетевое оборудование
38 Развертывание базового стека ELK
vim ~/elk.yml version: '3.7'
services:
elasticsearch:
image: elasticsearch:7.10.1
container_name: elasticsearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9200:9200"
volumes:
- es_data:/usr/share/elasticsearch/data
logstash:
image: logstash:7.10.1
container_name: logstash
depends_on:
- elasticsearch
volumes:
- ...
37 Развертывание приложений в Docker (азвертывание WordPress с использованием Docker Compose)
vim ~/wordpress.yml version: '3.1'
services:
wordpress:
image: wordpress:latest
container_name: wordpress
networks:
- wordpress-network
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
depends_on:
- mysql
volumes:
- wordpress_data:/var/www/html
mysql:
image: mysql:5.7
container_name: mysql
networks:
...
36 Развертывание приложений в Docker (Развертывание Python-скрипта в Docker)
vim ~/py.py import os
def main():
working_directory = os.path.expanduser("/root")
file_path = os.path.join(working_directory, "input.txt")
if os.path.exists(file_path):
with open(file_path, "r", encoding="utf-8") as file:
content = file.read()
print(content)
else:
print("Ошибка: файл input.txt не найден в директории /root.")
if...
35 Cоздание и настройка скрипта на машине ControlVM
terraform destroy cloudinit.sh #!/bin/bash
cd /home/altlinux/bin
source cloud.conf
terraform init
terraform apply -auto-approve
terraform output > /home/altlinux/white.ip
ansible-playbook -i ansible/inventory ansible/wireguard_playbook.yml
ansible-playbook -i ansible/inventory ansible/ssh_playbook.yml
echo "Проверяем доступность созданных инстансов, для каждого инстанса статус должен быть ACTIVE:"
echo ""
openstack --insecure server list
echo "Проверяем доступность созданного балансировщика...
34 Подготовка облачной инфраструктуры
Все файлы создаются в контексте каталога /home/altlinux/bin, если не сказано иное vim network.tf # Обращаемся к источнику данных, чтобы узнать ID существующего виртуального маршрутизатора
data "openstack_networking_router_v2" "router" {
name = "cloud"
}
# Создаём сеть с именем "INTERNET" в соответствие с топологией
resource "openstack_networking_network_v2" "network" {
name = "INTERNET"
admin_state_up = "true"
}
# Создаём подсеть с именем "INTERNET" в ранее созданной сети с именем...
33 Подготовка облачной инфраструктуры (Подключение Terraform к провайдеру OpenStack)
vim ~/.terraformrc provider_installation {
network_mirror {
url = "https://terraform-mirror.mcs.mail.ru"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
} mkdir ~/bin && cd ~/bin vim cloud.conf # Terraform
export TF_VAR_OS_AUTH_URL=https://cyber-infra.local.prof:5000/v3 export TF_VAR_OS_PROJECT_NAME=Project1
export TF_VAR_OS_USERNAME=user01
export TF_VAR_OS_PASSWORD=user01P@ssw0rd
# openstacl-cli
export OS_AUTH_URL=https://cyber-infra.local.prof:5000/v3 export OS_IDENTITY_API_VERSION=3
export OS_AUTH_TYPE=password
export...
32 Подготовка облачной инфраструктуры
Заходим в файл /etc/hosts/ и ставим ip по которому подключены к киберинфра tab cyber-infra.local.prof Устанавливаем wget и unzip: sudo apt-get update && sudo apt-get install -y wget unzip wget https://hashicorp-releases.mcs.mail.ru/terraform/1.10.3/terraform_1.10.3_linux_amd64.zip sudo unzip terraform_1.10.3_linux_amd64.zip -d /usr/local/bin/ Проверяем terraform --version становим openstack-cli: sudo apt-get install -y python3-module-openstackclient python3-module-pip Проверяем openstack --version Установим необходимые модули для работы:python-octaviaclient...
31 Подготовка машины ControlVM
Создаём ключевую пару для доступа к ControlVM на рабочем столе с расширением '.pem': puttygen -t rsa -b 2048 -o Рабочий\ стол/cloud.pem Открываем в блокноте сгенерированный ключ и копируем заголовок ssh-rsa и публичную часть ключа:Заголовок и публичную часть ключа необходимо будет поместить в Кибер Инфраструктура далее В веб-интерфейсе...
30 Настройка резервного копирования (подключить в качестве устройства хранения)
Средствами графического интерфейса создаём на диске sdb таблицу разделов, раздел и соответствующую файловую систему: mkdir /backups && chmod 777 /backups Реализуем монтирофание: В веб-интерфейсе управления реализуем план полного резервного копированияв данном случае будет реализован план для CLI-HQ, т.к. на ADMIN-HQ не установлен агент из-за нехватки дискового пространства Выполняем полное резервное копирование ADMIN-HQ на узел хранения В данном случае выполняется резервное копирование CLI-HQ т...
29 Настройка резервного копирования (установка агента)
apt-get update && apt-get dist-upgrade -y && update-kernel -y && apt-get clean && reboot apt-get install kernel-source-<x.x> apt-get install kernel-headers-modules-std-def gcc make -y chmod +x CyberBackup_17_64-bit...
28 Настройка резервного копирования (Настройка организации и пользователя)
Создаём пользователя wsradmin с паролем P@ssw0rd на уровне ОС: Создаём отмел wsr: Добавляем пользователя wsradmin в отдел wsr с правами администратора: Реализуем возможность для доступа в веб-интерфейс...