Рубрики
Uncategorized

Создание приложений приложений сердца Сердце с использованием облачных платформ и MLOPS Tools

Добро пожаловать обратно к моему другому персоналу на основе проекта. Здесь я собираюсь обсудить все этот проект от V … Помечено облаком, дежоптом, машины, WebDev.

Добро пожаловать обратно к моему другому персоналу на основе проекта. Здесь я собираюсь обсудить весь этот проект с самого начала до конца. Так, надеюсь, вы действительно наслаждаетесь этим. Так что давайте начнем.

Как это понятно от имени Создание приложений приложений сердца Сердца с использованием облачных платформ и MLOPS Tools Я собираюсь создать связанное со здоровьем приложение с отраслевым подходом. Итак, давайте посмотрим на шаг за шагом все мои действия для развертывания этого проекта в производственной среде.

Что я собираюсь выступать.

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

Примечание:

Здесь я упомянул мою ссылку Git, где вы можете найти все связанные коды и вещи. https://github.com/hackcoderr/heart-diseases-predictor

Требуемые знания

Чтобы создать этот проект, хорошее знание следующих инструментов и платформ является обязательным условием.

  • Террафор
  • Облачные платформы
    • Amazon Web Services (AWS)
    • Microsoft Azure.
  • Неизбежный
  • Кубернеты
  • Машинное обучение
  • Гит и Github
  • Докер
  • Jenkins.
  • колбы

Эти все инструменты и платформы помогут нам, как мы можем автоматизировать этот проект. Итак, давайте посмотрим на использование всех упомянутых сотрудников по одному и почему мы используем их здесь. Так что давайте начнем с террафора.

Террафом является инфраструктурой с открытым исходным кодом в качестве кодового программного обеспечения, который обеспечивает последовательный рабочий процесс CLI для управления сотнями облачных услуг. Террафом кодифицирует облачные API в декларативные файлы конфигурации.

Почему я использую террафору здесь.

Как упоминалось в вышеупомянутом введении Террафом что мы используем это для управления облачными сервисами Поэтому я хочу использовать некоторые облачные платформы (AWS, Azure и GCP), чтобы я мог создать нижеоборудованную воспроизводимую инфраструктуру.

Теперь пришло время установить террафору. Так что позвольте увидеть его установку.

Установите террафору.

Если вы используете Linux OS в качестве рабочей станции Terraporm, затем запустите команды ниже, иначе перейдите с упомянутой ссылкой и установите Terraporm в соответствии с вашей ОС. https://www.terraform.io/downloads.html.

sudo yum install wget -y
sudo wget https://releases.hashicorp.com/terraform/0.15.3/terraform_0.15.3_linux_amd64.zip 
sudo yum install unzip -y
sudo unzip terraform_0.15.3_linux_amd64.zip 
sudo mv terraform /usr/local/bin/

Теперь проверьте версию Terraporm с Террафом -Верс команда.

⚠️. Надеюсь, теперь это понятно, что я собираюсь сделать с помощью террафора, как это четко упоминается на вышеуказанной диаграмме. Я собираюсь использовать 2 облачных платформы (AWS и Azure). Так что позвольте начать с облака AWS, я пойду с лазурным.

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

Amazon Web Service — это онлайн платформа, которая предоставляет масштабируемые и экономически эффективные облачные вычислительные решения. Это широко используемая облачная платформа, которая предлагает несколько операций по требованию, такие как вычислительная мощность, хранение базы данных, доставку контента и т. Д., Чтобы помочь корпорациям масштабировать и расти.

Но если вы хотите больше об этом, посетите ссылку ниже. https://en.wikipedia.org/wiki/Amazon_Web_Services

AWS IAM

AWS Identity и Management Access (IAM) — это веб-служба, которая помогает вам надежно контролировать доступ к ресурсам AWS. Вы используете IAM для контроля, который аутентифицирован (подписан) и авторизован (имеет разрешения) для использования ресурсов.

Теперь нам понадобится ключ доступа и Секретный ключ Для создания VPC и запустите экземпляры AWS Terraform Tool, почему мы должны создавать AWS IAM пользователь с AmazonvpcfullAccess и Amazonec2fullaccess Отказ Так что загрузите свой файл учетных данных IAM.

Установите AWS CLI.

Теперь установите AWS CLI в вашей рабочей станции Terraform, которая поможет создать Profile AWS и другие сотрудники. Поэтому, если вы используете Linux, запустите команды ниже, и для других ОС посетите упомянутую ссылку. https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Создание профиля AWS

Теперь вы можете легко сделать профиль AWS CLI, который мы будем использовать в aws.tf файл в качестве профиля. Так что посмотрим.

  • Прежде всего войти с AWS CLI.
aws configure
  • После запуска вышеуказанной команды дайте свой Ключ доступа & Секретный ключ который вы скачали во время создания AWS IAM пользователь Отказ
  • Теперь запустите команду ниже, чтобы сделать свой профиль и то же самое здесь, дайте свой доступ и секретный ключ.
aws configure --profile profilename

⚠️. Кроме того, вы можете проверить свой профиль с помощью команды ниже.

aws configure --list-profiles

Теперь время — перейти к коду Terraform, поэтому сделайте свое рабочее пространство. Примечание. Я следующую упомянутую рабочую область для сотрудников Terraform для легкого понимания, поэтому вы также можете следовать за этим.

/root/hdp-project/terraform/aws/
  • Так что создайте aws.tf Файл внутри вышеупомянутого и напишите код ниже.
provider "aws" {
  region = "ap-south-1"
  profile = "hackcoderr"
}

Здесь вы можете установить любой регион На месте AP-South-1 В соответствии с вашими потребностями и дайте имя вашего профиля вместо моего профиля hakcoderr Отказ

Инициализация террафора кода

Terraform init Команда используется для инициализации рабочего каталога, содержащего файлы конфигурации террафора. Это первая команда, которая должна быть запущена после написания новой конфигурации Terraform или клонирование существующего из элемента управления версиями. Это безопасно запустить эту команду несколько раз. Вы можете инициализировать использование Terraform init Отказ

Создание Amazon VPC.

Виртуальное частное облако Amazon (Amazon VPC) позволяет запустить ресурсы AWS в виртуальную сеть, которую вы определили. Эта виртуальная сеть практически напоминает традиционную сеть, которую вы работаете в вашем собственном центре обработки данных, с преимуществами использования масштабируемой инфраструктуры AWS.

resource "aws_vpc" "vpc" {
  cidr_block       = "192.168.0.0/16"
  instance_tenancy = "default"
  enable_dns_support   = "true"
  enable_dns_hostnames = "true"
  tags = {
    Name = "aws-heart-disease-predictor-vpc"
    Environment = "Production"
  }
}

В приведенном выше коде вы можете выбрать бессловесные междоменные маршруты (CIDR) Диапазон блоков в соответствии с желаемым и если вы не хотите DNS Поддержка тогда вы можете написать ложь к enable_dns_support Отказ и дайте кому-нибудь ярлык как ты хочешь.

Создание подсети

Подсеть или подсеть — это логическое подразделение IP-сети. Практика разделиния сети на две или более сети называется подсети. AWS предоставляет два типа подсетина, которая позволяет Интернету получить доступ к машине, а другой является частным, что скрыто от Интернета.

resource "aws_subnet" "subnet-1a" {
  vpc_id     = aws_vpc.vpc.id
  cidr_block = "192.168.0.0/24"
  availability_zone = "ap-south-1a"
  map_public_ip_on_launch = "true"

  tags = {
    Name = "aws-heart-disease-predictor-sunbet"
    Environment = "Production"
  }
}

Здесь CIDR Диапазон должен быть под вашим VPC CIDR диапазон в противном случае это не работает и map_public_ip_on_launch Используется для назначения публичного IP-экземпляра после запуска, выберите любой Доступность_Zone Доступен ваш выбранный регион Отказ Вы можете дать теги для простого распознавания после создания подсетей.

Создание интернет-шлюза

Интернет-шлюз обслуживает два целя: предоставить целевую цену в ваших таблицах маршрута VPC для маршрутизации интернет-маршрута и для выполнения трансляции сетевого адреса (NAT) для экземпляров, которые были назначены общедоступными адресами IPv4.

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.vpc.id

  tags = {
    Name = "aws-heart-disease-predictor-internet-gateway"
  }
}

Приведенный выше код создаст ваш соответствующий интернет-шлюз. Вам необходимо указать, на каком VPC вы хотите создать интернет-шлюз. Кроме того, вы можете дать имя, используя блок тегов.

Создание таблицы маршрута

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

resource "aws_route_table" "route_table" {
  vpc_id = aws_vpc.vpc.id

  route {

gateway_id = aws_internet_gateway.gw.id
    cidr_block = "0.0.0.0/0"
  }

    tags = {
    Name = "aws-heart-disease-predictor-route-table"
  }
}

Вам необходимо создать таблицу маршрутизации для интернет-шлюза, который вы создали выше. Здесь я допускаю все IP-диапазон. Таким образом, мои экземпляры EC2 могут подключаться к миру Интернета. Нам нужно дать VPC_ID, чтобы мы могли легко выделить таблицу маршрутизации к соответствующему VPC. Вы можете указать имя таблицы маршрутизации с помощью блока тегов.

Ассоциация таблицы маршрута для подсетей

Нам нужно подключить таблицу маршрутизации, созданную для интернет-шлюзов в соответствующие подсети внутри VPC.

// Route Table Association
resource "aws_route_table_association" "route-association" {
  subnet_id      = aws_subnet.subnet-1a.id
  route_table_id = aws_route_table.route_table.id
}

Вам необходимо указать, какие подсети вы хотите взять в общественный мир. Как будто подвески соответствуют связанным (подключены) к интернет-шлюзу, это будет публичная подсеть. Но если вы не связываете подсети к таблице маршрутизации в интернет-шлюзе, то она будет известна как частные подсети. Исполнения, которые запускаются в частной подсети, не могут подключаться извне, так как он не будет иметь публичный IP, а также не будет подключен к интернет-шлюзу. Вам необходимо указать таблицу маршрутизации для ассоциации подсетей. Если вы не укажете таблицу маршрутизации в блоке вышеуказанного ассоциации, то подсеть займет таблицу маршрута VPC. Поэтому, если вы хотите взять экземпляры EC2 для публичного мира, вам необходимо указать маршрутизатор в блоке вышеуказанного ассоциации. Это на вашем диапазоне IP, вы хотите, чтобы ваши экземпляры EC2 для подключения. Здесь я должен дать 0.0.0.0/0 означает, что могу получить доступ к чему-либо из экземпляров EC2.

Создание группы безопасности

Группа безопасности действует как виртуальный брандмауэр для ваших экземпляров EC2 для управления входящим и исходящим трафиком. Если вы не укажете группу безопасности, Amazon EC2 использует группу безопасности по умолчанию. Вы можете добавлять правила к каждой группе безопасности, которая позволяет трафику или из соответствующих экземпляров.

resource "aws_security_group" "SG" {
  name = "Heart-SG"
  vpc_id = "${aws_vpc.vpc.id}"
  ingress {
      from_port   = 0
      to_port     = 0
      protocol    = "-1"
      cidr_blocks = ["0.0.0.0/0"]
  }

 egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
  tags ={
    Environment = "Production"
    Name= "aws-heart-disease-predictor-SG"
  }

}

Приведенное выше создаст группу безопасности, которая работает в качестве брандмауэра. Так какой тип трафика хочет Грасс & вход Вы можете установить здесь. Но я хочу все виды трафика, так что здесь я дал все трафики Отказ -1 значит все. from_port = 0 to_port = 0 (0.0.0.0) Это означает, что мы отключили брандмауэр и (0,0.0.0//0) означает весь трафик, который я могу получить доступ от этого исходящего правила. Вы можете дать название соответствующей группы безопасности.

Создание кода для экземпляров AWS

Экземпляр EC2 — это не что иное, как виртуальный сервер в терминологии Amazon Web Services. Он стоит для упругого вычисления облака. Это веб-сервис, в котором абонент AWS может запросить и обеспечить вычислительный сервер в облаке AWS. AWS предоставляет несколько типов экземпляров для соответствующих бизнес-потребностей пользователя.

resource "aws_instance" "Ansible_Controller_Node" {
  ami           = "ami-0a9d27a9f4f5c0efc"
  instance_type = "t2.micro"
  subnet_id = "${aws_subnet.subnet-1a.id}"
  vpc_security_group_ids = ["${aws_security_group.SG.id}"]
  key_name = "key"
 tags ={
    Environment = "${var.environment_tag}"
    Name= "Ansible_Controller_Node"
  }
}


resource "aws_instance" "K8S_Master_Node" {
  ami           = "ami-04bde106886a53080"
  instance_type = "t2.medium"
  subnet_id = "${aws_subnet.subnet-1a.id}"
  vpc_security_group_ids = ["${aws_security_group.SG.id}"]
  key_name = "key"
 tags ={
    Environment = "${var.environment_tag}"
    Name= "K8S_Master_Node"
  }

}
resource "aws_instance" "K8S_Slave1_Node" {
  ami           = "ami-04bde106886a53080"
  instance_type = "t2.medium"
  subnet_id = "${aws_subnet.subnet-1a.id}"
  vpc_security_group_ids = ["${aws_security_group.SG.id}"]
  key_name = "key"
 tags ={
    Environment = "${var.environment_tag}"
    Name= "K8S_Slave1_Node"
  }

}
resource "aws_instance" "K8S_Slave2_Node" {
  ami           = "ami-04bde106886a53080"
  instance_type = "t2.medium"
  subnet_id = "${aws_subnet.subnet-1a.id}"
  vpc_security_group_ids = ["${aws_security_group.SG.id}"]
  key_name = "key"
 tags ={
    Environment = "${var.environment_tag}"
    Name= "K8S_Slave2_Node"
  }

}
resource "aws_instance" "JenkinsNode" {
  ami           = "ami-0a9d27a9f4f5c0efc"
  instance_type = "t2.micro"
  subnet_id = "${aws_subnet.subnet-1a.id}"
  vpc_security_group_ids = ["${aws_security_group.SG.id}"]
  key_name = "key"
 tags ={
    Environment = "${var.environment_tag}"
    Name= "JenkinsNode"
  }

}

resource "aws_instance" "DockerNode" {
  ami           = "ami-0a9d27a9f4f5c0efc"
  instance_type = "t2.micro"
  subnet_id = "${aws_subnet.subnet-1a.id}"
  vpc_security_group_ids = ["${aws_security_group.SG.id}"]
  key_name = "key"
 tags ={
    Environment = "${var.environment_tag}"
    Name= "DockerNode"
  }
}

Приведенное выше начнется экземпляр EC2, так что AMI Считать и induction_type Вы можете выбрать в соответствии с желаемым и писать Теги как ты хочешь.

Примечание : Если вы хотите увидеть полный код в то время, пройдите через мой GIT REPO. https://github.com/hackcoderr/heart-diseases-predictor/blob/master/terraform/aws/aws.tf

Построить и развернуть инфраструктуру

С вашим шаблоном Terraform создан, первый шаг — инициализировать террафору. Этот шаг гарантирует, что террафом имеет все необходимые условия для создания вашего шаблона в Azure.

terraform init

Следующим шагом состоит в том, чтобы обзор террафоров и проверки шаблона. Этот шаг сравнивает запрошенные ресурсы в государственную информацию, сохраненную террафом, а затем выводит запланированное исполнение. Ресурсы Azure не создаются в этот момент.

terraform plan

Если все выглядит правильно, и вы готовы построить инфраструктуру в Azure, нанесите шаблон в террафоре.

terraform apply

Как только завершится террафом, ваша инфраструктура VM готова.

Это также общедоступный облачный провайдер и предоставляет ресурсы и услуги, что обеспечивает AWS. Так, надеюсь, у вас есть идея об этом, иначе вы хотите больше об этом, а затем посетить упомянутую ссылку. https://en.wikipedia.org/wiki/Microsoft_Azure

Установить Azure CLI

Здесь мы должны также установить Azure CLI для профиля Azure Так что запускайте код террафора для Azure. Поэтому, если вы используете RHEL, CentOS или Fedora в качестве Linux, затем запустите команды ниже, в противном случае следуйте этому ссылка Отказ

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
sudo dnf install azure-cli -y

Итак, давайте проверим версию Azure CLI только для подтверждения.

Войти с Azure через CLI

Когда мы будем работать террафом, мы должны предоставить учетные данные Azure для профиля Azure, чтобы мы могли войти в систему с Azure. Таким образом, есть много способов входить в систему с ним, и Azure CLI является одним из них, которые я собираюсь использовать. Итак, давайте перейдем вперед и войдите.

az login

По мере того, как вы введете вышеуказанную команду, придутятся желтые инструкции. Настолько просматривайте данный URL, который я подчеркнул с красным цветом. После этого появится окно окно и дает данный код. Теперь вы можете увидеть ваши полномочия Azure на вашем CLI.

Примечание : Если вы получите более одной подписки, я D Тогда вы можете просто выбрать один идентификатор с помощью команды ниже.

az account set --subscription "My Demos"

Итак, сейчас время состоит в том, чтобы перейти к написанию кода террафора.

Настройте провайдер Microsoft Azure

Раздел поставщика сообщает Terraform использовать Azure Provider. Это будет использовать ваши полномочия Azure, такие как Подписка_id , Client_id , Client_Secret и Tenant_id за кулисами.

provider "azurerm" {
    features {}
}

Создать ресурсную группу

Группа ресурсов — это контейнер, который содержит связанные ресурсы для решения Azure. Группа ресурсов может включать все ресурсы для решения, или только те ресурсы, которые вы хотите управлять как группу.

resource "azurerm_resource_group" "hdp-rg" {
    name     = "Azure-HDP-ResourceGroup"
    location = "Central India"

    tags = {
        Name = "Azure-HDP-RG"
        environment = "Production"
    }
}

Вышеуказанная секция создает группу ресурсов, названную Azure-HDP-ResourceGroupgroup в Центральная Индия место нахождения. Но Эти вещи, которые вы можете управлять в соответствии с вашим желанием.

Создать виртуальную сеть

Он имеет ту же концепцию, что и AWS VPC, поэтому давайте понять код шаблона для него.

resource "azurerm_virtual_network" "hdp-vnet" {
    name                = "Azure-HDP-Vnet"
    address_space       = ["192.168.0.0/16"]
    location            = azurerm_resource_group.hdp-rg.location
    resource_group_name = azurerm_resource_group.hdp-rg.name

    tags = {
        Name = "Azure-HDP-VNet"
        environment = "Production"
    }
}

Вышеуказанное сечение создает виртуальную сеть с именем Azure-HDP-VNET в 192.168.0.0.0/16 адресное пространство.

Создать подсеть

Он также работает как подсеть AWS, поэтому давайте посмотрим код напрямую.

resource "azurerm_subnet" "hdp-subnet" {
    name                 = "Azure-HDP-Subnet"
    resource_group_name  = azurerm_resource_group.hdp-rg.name
    virtual_network_name = azurerm_virtual_network.hdp-vnet.name
    address_prefixes       = ["192.168.0.0/24"]
}

Вышеуказанная секция создает подсеть с именем Azure-HDP-подсеть в Azure-HDP-VNET Виртуальная сеть.

Создать публичный IP-адрес

Чтобы получить доступ к ресурсам через Интернет, создайте и назначить публичное IP-адрес вашего виртуальной машины. Поэтому я собираюсь в 3 виртуальных видах ВМ, поэтому мне понадобится 3 общественных IPS.

resource "azurerm_public_ip" "hdp-publicip-1" {
    name                         = "Azure-HDP-PublicIP-1"
    location                     = azurerm_resource_group.hdp-rg.location
    resource_group_name          = azurerm_resource_group.hdp-rg.name
    allocation_method            = "Dynamic"

    tags = {
        Name = "HDP-Public-IP-1"
        environment = "Production"
    }
}

resource "azurerm_public_ip" "hdp-publicip-2" {
    name                         = "Azure-HDP-PublicIP-2"
    location                     = azurerm_resource_group.hdp-rg.location
    resource_group_name          = azurerm_resource_group.hdp-rg.name
    allocation_method            = "Dynamic"

    tags = {
        Name = "HDP-Public-IP-2"
        environment = "Production"
    }
}

resource "azurerm_public_ip" "hdp-publicip-3" {
    name                         = "Azure-HDP-PublicIP-3"
    location                     = azurerm_resource_group.hdp-rg.location
    resource_group_name          = azurerm_resource_group.hdp-rg.name
    allocation_method            = "Dynamic"

    tags = {
        Name = "HDP-Public-IP-3"
        environment = "Production"
    }
}

Вышеуказанное раздел создает 3 общедоступного IP-адреса с именем AZURE-HDP-PALUCKIP-1 и так далее.

Создать сетевую группу безопасности

Группы безопасности сети контролируют поток сетевого трафика в и вынесении вашего виртуальной машины.

resource "azurerm_network_security_group" "hdp-sg" {
    name                = "Azure-HDP-SG"
    location            = azurerm_resource_group.hdp-rg.location
    resource_group_name = azurerm_resource_group.hdp-rg.name

    security_rule {
        name                       = "SSH"
        priority                   = 1001
        direction                  = "Inbound"
        access                     = "Allow"
        protocol                   = "Tcp"
        source_port_range          = "*"
        destination_port_range     = "22"
        source_address_prefix      = "*"
        destination_address_prefix = "*"
    }

    tags = {
        Name = "Azure-HDP-SG"
        environment = "Production"
    }
}

Вышеуказанная секция создает группу сетевой безопасности с именем Azure-HDP-SG и определяет правило, чтобы позволить SSH трафик на TCP Port 22 Отказ

Создать виртуальную сетевую интерфейсную карту.

Виртуальная интерфейсная карта сетевой сети (NIC) соединяет вашу VM к данной виртуальной сети, общедоступному IP-адресу и группе безопасности сети.

resource "azurerm_network_interface" "hdp-nic-1" {
    name                      = "myNIC-1"
    location                  = azurerm_resource_group.hdp-rg.location
    resource_group_name       = azurerm_resource_group.hdp-rg.name

    ip_configuration {
        name                          = "myNicConfiguration"
        subnet_id                     = azurerm_subnet.hdp-subnet.id
        private_ip_address_allocation = "Dynamic"
        public_ip_address_id          = azurerm_public_ip.hdp-publicip-1.id
    }

    tags = {
        Name = "HDP-NIC-1"
        Environment = "Production"
    }
}

resource "azurerm_network_interface" "hdp-nic-2" {
    name                      = "myNIC-2"
    location                  = azurerm_resource_group.hdp-rg.location
    resource_group_name       = azurerm_resource_group.hdp-rg.name

    ip_configuration {
        name                          = "myNicConfiguration"
        subnet_id                     = azurerm_subnet.hdp-subnet.id
        private_ip_address_allocation = "Dynamic"
        public_ip_address_id          = azurerm_public_ip.hdp-publicip-2.id
    }

    tags = {
        Name = "HDP-NIC-2"
        Environment = "Production"
    }
}

resource "azurerm_network_interface" "hdp-nic-3" {
    name                      = "myNIC-3"
    location                  = azurerm_resource_group.hdp-rg.location
    resource_group_name       = azurerm_resource_group.hdp-rg.name

    ip_configuration {
        name                          = "myNicConfiguration"
        subnet_id                     = azurerm_subnet.hdp-subnet.id
        private_ip_address_allocation = "Dynamic"
        public_ip_address_id          = azurerm_public_ip.hdp-publicip-3.id
    }

    tags = {
        Name = "HDP-NIC-3"
        Environment = "Production"
    }
}

Вышеуказанная секция в шаблоне террафора создает 3 виртуального NIC имени Mynic-1 И поэтому нет, подключенных к виртуальным сетевым ресурсам, которые вы создали.

Подключите группу безопасности к сетевому интерфейсу

Теперь вы можете подключить свои карты NIC с группой безопасности, которую вы создали.

resource "azurerm_network_interface_security_group_association" "hdp-nic-sg-1" {
    network_interface_id      = azurerm_network_interface.hdp-nic-1.id
    network_security_group_id = azurerm_network_security_group.hdp-sg.id
}

resource "azurerm_network_interface_security_group_association" "hdp-nic-sg-2" {
    network_interface_id      = azurerm_network_interface.hdp-nic-2.id
    network_security_group_id = azurerm_network_security_group.hdp-sg.id
}

resource "azurerm_network_interface_security_group_association" "hdp-nic-sg-3" {
    network_interface_id      = azurerm_network_interface.hdp-nic-3.id
    network_security_group_id = azurerm_network_security_group.hdp-sg.id
}

Вышеуказанная секция в шаблоне террафора создает 3 ассоциации групп безопасности, подключенные к созданным вами картам NIC.

Создать виртуальные машины

Последний шаг — создать VMS и использовать все ресурсы, созданные. Итак, вы видите здесь 3 VMS по имени как AZ-HDP-VM-1 И так нет.

 resource "azurerm_virtual_machine" "main-1" {
  name                  = "az-hdp-vm-1"
  location              = azurerm_resource_group.hdp-rg.location
  resource_group_name   = azurerm_resource_group.hdp-rg.name
  network_interface_ids = [azurerm_network_interface.hdp-nic-1.id]
  vm_size               = "Standard_DS1_v2"
  delete_os_disk_on_termination = true
  delete_data_disks_on_termination = true

  storage_image_reference {
    publisher = "RedHat"
    offer     = "RHEL"
    sku       = "8.1"
    version   = "latest"
  }
  storage_os_disk {
    name              = "hdp-disk-1"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }
  os_profile {
    computer_name  = "hostname"
    admin_username = "hdpAdmin"
    admin_password = "Password1234!"
  }
  os_profile_linux_config {
    disable_password_authentication = false
  }

  tags = {
    Name = "Az-HDP-Slave-1"
    Environment = "Production"
  }
}


resource "azurerm_virtual_machine" "main-2" {
  name                  = "az-hdp-vm-2"
  location              = azurerm_resource_group.hdp-rg.location
  resource_group_name   = azurerm_resource_group.hdp-rg.name
  network_interface_ids = [azurerm_network_interface.hdp-nic-2.id]
  vm_size               = "Standard_DS1_v2"
  delete_os_disk_on_termination = true
  delete_data_disks_on_termination = true

  storage_image_reference {
    publisher = "RedHat"
    offer     = "RHEL"
    sku       = "8.1"
    version   = "latest"
  }
  storage_os_disk {
    name              = "hdp-disk-2"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }
  os_profile {
    computer_name  = "hostname"
    admin_username = "hdpAdmin"
    admin_password = "Password1234!"
  }
  os_profile_linux_config {
    disable_password_authentication = false
  }
  tags = {
    Name = "Az-HDP-Slave-2"
    Environment = "Production"
  }
}


resource "azurerm_virtual_machine" "main-3" {
  name                  = "az-hdp-vm-3"
  location              = azurerm_resource_group.hdp-rg.location
  resource_group_name   = azurerm_resource_group.hdp-rg.name
  network_interface_ids = [azurerm_network_interface.hdp-nic-3.id]
  vm_size               = "Standard_DS1_v2"
  delete_os_disk_on_termination = true
  delete_data_disks_on_termination = true

  storage_image_reference {
    publisher = "RedHat"
    offer     = "RHEL"
    sku       = "8.1"
    version   = "latest"
  }
  storage_os_disk {
    name              = "hdp-disk-3"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }
 os_profile {
    computer_name  = "hostname"
    admin_username = "hdpAdmin"
    admin_password = "Password1234!"
  }
  os_profile_linux_config {
    disable_password_authentication = false
  }
  tags = {
    Name = "Az-HDP-Slave-3"
    Environment = "Production"
  }
}

Вышеуказанное сечение создает 3 виртуальной машины с именем AZ-HDP-VM-1 и AZ-HDP-VM-2 и AZ-HDP-VM-3 и прикрепляет виртуальные NICK по имени Mynic-1. , Mynic-2. и Mynic-3. ущары. Последние RHEL 8.1 Изображение используется, а пользователь по имени Azureuser создано.

Построить и развернуть инфраструктуру

С вашим шаблоном Terraform создан, первый шаг — инициализировать террафору. Этот шаг гарантирует, что террафом имеет все необходимые условия для создания вашего шаблона в Azure.

terraform init

Следующим шагом состоит в том, чтобы обзор террафоров и проверки шаблона. Этот шаг сравнивает запрошенные ресурсы в государственную информацию, сохраненную террафом, а затем выводит запланированное исполнение. Ресурсы Azure не создаются в этот момент.

terraform plan

Если все выглядит правильно, и вы готовы построить инфраструктуру в Azure, нанесите шаблон в террафоре.

terraform apply

Как только завершится террафом, ваша инфраструктура VM готова.

Вот сейчас, мы должны создать модель обучения машины. Поскольку набор данных имеет классификацию проблемы, мы должны выбрать алгоритмы классификации. Здесь я обучал модель с Логистическая регрессия , RandomForestClassifier , Classsifier Phief Classisifier , Градиентбоостингклассификатор Отказ

from sklearn.linear_model import LogisticRegression
lr_model=LogisticRegression()
lr_model.fit(X_train, y_train)
lr_y_model= lr_model.predict(X_test)
lr_y_model
from sklearn.metrics import accuracy_score
print("Logistic Regression Accuracy: ", accuracy_score(y_test, lr_y_model))
Logistic Regression Accuracy:  0.9180327868852459/opt/conda/lib/python3.7/site-packages/sklearn/linear_model/_logistic.py:765: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
from sklearn.ensemble import RandomForestClassifier
rfc_model = RandomForestClassifier(n_estimators=10000, max_depth=100)
rfc_model
rfc_model.fit(X_train, y_train)
rfc_y_pred = rfc_model.predict(X_test)
rfc_y_pred
from sklearn.metrics import accuracy_score
print("Random Forest Accuracy: ", accuracy_score(y_test, rfc_y_pred))

Случайная точность леса: 0.7704918032786885

from sklearn.tree import DecisionTreeClassifier
dt_model = DecisionTreeClassifier()
dt_model.fit(X_train, y_train)
dt_y_pred=dt_model.predict(X_test)dt_y_pred
from sklearn.metrics import accuracy_score
print("Decision Tree Accuracy: ", accuracy_score(y_test, dt_y_pred))

Точность дерева решений: 0.6721311475409836

from sklearn.ensemble import GradientBoostingClassifier
GB_model = GradientBoostingClassifier(n_estimators=1000)
GB_model.fit(X_train, y_train)
y_pred_GB = GB_model.predict(X_test)
y_pred_GB
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred_GB)

Градиентбоостингклассифельная точность: 0.7868852459016393 Из вышеупомянутой модели создания и сравнения Логистическая регрессия дает много точности, но я принимаю модель Случайное лес и сохранение его до .h5 расширение.

import joblib
joblib_file = "LogisticRegression_Heart_Prediction.h5"
joblib.dump(lr_model, joblib_file)

Этот выше код создаст файл с именем RandomForest_heart_Prediction.H5 И мы должны использовать эту модель во время создания докера, в котором мы должны установить колбу. Ниже приведен код для Dockerfile . Кодовая ссылка

Полный код Моя модель обучения машины:

https://colab.research.google.com/drive/1hr2igd-gjnjGn335g8VWosY5i1LuEDZY

Теперь нам нужно создать изображение, используя ниже Код DockerFile Отказ

FROM centos:latestRUN yum install python3  python3-devel   gcc-c++ -y && \
    python3 -m pip install --upgrade --force-reinstall pip && \
    yum install sudo -y && \
    yum install --assumeyes  python3-pip && \
    pip install keras && \
    pip install tensorflow --no-cache-dir  tensorflow && \
    pip install --upgrade pip tensorflow && \
    pip3 install flask && \
    pip3 install joblib && \
    pip3 install sklearn && \
    mkdir  /heart_app &&  \
    mkdir /heart_app/templatesCOPY  LogisticRegression_Heart_Prediction.h5    /heart_app
COPY  app.py  /heart_app
COPY  myform.html  /heart_app/templates
COPY  result.html   /heart_app/templates
EXPOSE  4444
WORKDIR  /heart_app
CMD export FLASK_APP=app.py
ENTRYPOINT flask  run --host=0.0.0.0    --port=4444

Чтобы построить команду docker Image. Docker Build -t Image_Name: версия.

Мой ссылка на образы докера:

https://hub.docker.com/repository/docker/hackcoderr/heart-diseases-predictor

Anisible — это обеспечение программного обеспечения с открытым исходным кодом, управление конфигурацией и инструмент развертывания приложений, позволяющий инфраструктуру в качестве кода.

Установить Anbible

Я собираюсь установить Ansible Setup AWS экземпляр с именем Аналогичный контроллер-узел который я запустил раньше. Так запустить упомянутые команды.

sudo yum install python3 git -y
git clone https://github.com/hackcoderr/Ansible-Setup.git
cd Ansible-Setup/
python3 script.py
sudo hostnamectl set-hostname ansible-controller

Примечание : Если вы хотите узнать больше об этом, вы можете посетить мой Обязательный репозиторий STEUP Отказ

Отдохнуть Объяснение

Пожалуйста, посетите упомянутую ссылку для отдыха и посмотрите файл readme.md. https://github.com/hackcoderr/heart-diseases-predictor

Оригинал: «https://dev.to/hackcoderr/heart-diseases-prediction-app-creation-using-cloud-platforms-mlops-tools-15gp»