«Пошаговое руководство по настройке, установке и настройке мощного экземпляра Windows 11 с поддержкой графического процессора с использованием Hashicorp Terraform»
Hashicorp Terraform — отличный инструмент для специалистов по данным, использующих AWS EC2 и другие сервисы AWS. Terraform позволяет специалистам по обработке и анализу данных быстро и легко настроить развертывание своих приложений как локально, так и в облаке. Это помогает им управлять своей инфраструктурой предсказуемым, воспроизводимым и автоматизированным способом.
Использование Terraform предлагает множество преимуществ для специалистов по данным. Это помогает им отслеживать изменения в своей инфраструктуре и позволяет легко откатиться в случае сбоя развертывания. Это также помогает им сэкономить время и деньги за счет автоматизации развертывания.
Язык, используемый для настройки развертываний с помощью Terraform, — это предметно-ориентированный язык, называемый языком конфигурации HashiCorp (HCL). HCL — это декларативный язык, то есть он позволяет пользователю описать желаемое конечное состояние своей инфраструктуры в виде кода. Затем этот код можно повторно использовать и совместно использовать в нескольких развертываниях.
Язык конфигурации HashiCorp (HCL) — это мощный, понятный человеку язык, который помогает разработчикам и системным администраторам настраивать инфраструктуру и управлять ею. HCL используется различными инструментами, такими как Terraform, Nomad и Vault, и предоставляет мощные функции, такие как модули, переменные и функции.
HCL — это мощный и простой в использовании язык, упрощающий определение и настройку инфраструктуры. Он поддерживает мощные функции, такие как модули, переменные и функции, что позволяет создавать сложные конфигурации с минимальными усилиями. Кроме того, HCL является декларативным, что означает, что вам не нужно беспокоиться о порядке выполнения задач.
В этом руководстве приведены инструкции по созданию сценария Terraform для настройки, установки и настройки мощного экземпляра AWS EC2 Microsoft Windows Server 2022 для машинного обучения и обработки данных с поддержкой графического процессора и всем необходимым программным обеспечением и инструментами. Сценарий также будет включать инструкции по установке, настройке и удалению экземпляра с помощью Terraform, а также всех служб, таких как IAM, AMI, VPC, подсети, назначение общедоступных IP-адресов, конфигурацию DNS, хранилище, теги, группы безопасности и т. д. пара ключей и т. д., необходимые для экземпляра.
Кроме того, руководство проведет вас через процесс установки сред разработки, таких как JavaScript, TypeScript, Node.js, Python, PowerShell, Oh-my-Zsh, Git Bash, VS Code, подсистема Windows для Linux, Docker, AWS CLI, AWS SDK, Terraform, TensorFlow, Keras, PyTorch, Scikit-Learn, OpenCV, SciPy, Pandas, NumPy, Matplotlib, Seaborn, Jupyter Notebook, Apache Spark и Hadoop.
Предпосылки
Прежде чем приступить к работе с этим учебным пособием, у вас должны быть некоторые базовые знания о Terraform и AWS. У вас также должна быть учетная запись AWS и вы должны быть знакомы с консолью AWS.
Шаг 1: Создание сценария Terraform
Первым шагом в создании сценария Terraform является создание каталога, в котором вы будете хранить все файлы Terraform.
mkdir terraform-scripts
Далее вам нужно будет установить и инициализировать каталог с помощью команды Terraform.
terraform init
Теперь вы создадите основной файл Terraform. В этом руководстве файл будет называться «ec2.tf».
touch ec2.tf
Следующий шаг — открыть файл в вашем любимом текстовом редакторе и ввести следующий код:
provider "aws" { region = "us-east-1" access_key = "<YOUR ACCESS KEY>" secret_key = "<YOUR SECRET KEY>" } resource "aws_instance" "ec2_instance" { ami = "ami-0be29bafdaad782db" instance_type = "p2.xlarge" key_name = "<YOUR KEYNAME>" tags = { Name = "ec2-instance" } } resource "aws_eip" "eip" { instance = "${aws_instance.ec2_instance.id}" vpc = true tags = { Name = "eip-instance" } }
Этот код создаст экземпляр AWS с указанным AMI, именем ключа и типом экземпляра. Он также создаст эластичный IP-адрес, который будет связан с экземпляром.
Далее вам нужно будет добавить код для настройки экземпляра. Сюда входит код для создания VPC, подсетей, групп безопасности, ролей IAM и других ресурсов, необходимых для настройки экземпляра.
# Create a VPC resource "aws_vpc" "vpc" { cidr_block = "10.0.0.0/16" tags = { Name = "my_vpc" } } # Create a Subnet resource "aws_subnet" "subnet" { vpc_id = "${aws_vpc.vpc.id}" cidr_block = "10.0.1.0/24" availability_zone = "us-east-1a" tags = { Name = "my_subnet" } } # Create an Internet Gateway resource "aws_internet_gateway" "igw" { vpc_id = "${aws_vpc.vpc.id}" tags = { Name = "my_igw" } } # Create a Route Table resource "aws_route_table" "rtb" { vpc_id = "${aws_vpc.vpc.id}" tags = { Name = "my_rtb" } } # Create a Route to the Internet Gateway resource "aws_route" "rte" { route_table_id = "${aws_route_table.rtb.id}" destination_cidr_block = "0.0.0.0/0" gateway_id = "${aws_internet_gateway.igw.id}" } # Associate the Subnet with the Route Table resource "aws_route_table_association" "rta" { subnet_id = "${aws_subnet.subnet.id}" route_table_id = "${aws_route_table.rtb.id}" } # Create an IAM Role for the Instance resource "aws_iam_role" "role" { name = "ec2_instance_role" assume_role_policy = <<EOF { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "Service": "ec2.amazonaws.com" }, "Effect": "Allow", "Sid": "" } ] } EOF } # Create an IAM Instance Profile resource "aws_iam_instance_profile" "profile" { name = "ec2_instance_profile" role = "${aws_iam_role.role.name}" } # Attach the IAM Instance Profile to the Instance resource "aws_instance" "ec2_instance" { ami = "ami-0be29bafdaad782db" instance_type = "p2.xlarge" key_name = "<YOUR KEYNAME>" iam_instance_profile = "${aws_iam_instance_profile.profile.name}" tags = { Name = "ec2-instance" } }
Далее вам нужно будет добавить код для настройки экземпляра с необходимым программным обеспечением и инструментами. Сюда входит код для установки нескольких сред разработки.
# Install Development Frameworks resource "null_resource" "dev_frameworks" { depends_on = [aws_instance.ec2-instance] triggers = { instance_id = aws_instance.ec2-instance.id } connection { type = "ssh" user = "Administrator" host = self.public_ip private_key = file(var.private_key_path) } provisioner "remote-exec" { inline = [ # Install JavaScript "choco install nodejs -y", # Install TypeScript "npm install -g typescript", # Install Python "choco install python -y", # Install PowerShell "choco install powershell-core -y", # Install Oh-my-Zsh "choco install oh-my-zsh -y", # Install Git Bash "choco install git -y", # Install VS Code "choco install vscode -y", # Install Windows Subsystem for Linux "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux", # Install Docker "choco install docker-desktop -y", # Install AWS CLI "choco install awscli -y", # Install AWS SDK "pip install boto3", # Install Terraform "choco install terraform -y", # Install TensorFlow "pip install tensorflow", # Install Keras "pip install keras", # Install PyTorch "pip install torch", # Install Scikit-Learn "pip install scikit-learn", # Install OpenCV "pip install opencv-python", # Install SciPy "pip install scipy", # Install Pandas "pip install pandas", # Install NumPy "pip install numpy", # Install Matplotlib "pip install matplotlib", # Install Seaborn "pip install seaborn", # Install Jupyter Notebook "pip install jupyter", # Install Apache Spark "pip install pyspark", # Install Hadoop "pip install hadoop" ] } }
Наконец, вам нужно будет добавить код для настройки экземпляра с поддержкой GPU.
# Install Nvidia GPU Drivers user_data = <<EOF # Install Nvidia GPU Drivers Invoke-WebRequest -Uri https://www.nvidia.com/Download/index.aspx -OutFile nvidia_driver_install.exe Start-Process -FilePath .\nvidia_driver_install.exe -ArgumentList '/S /no-desktop-shortcut' -Wait EOF tags = { Name = "ec2-instance" } } # Install Cuda Toolkit resource "null_resource" "cuda_toolkit_install" { depends_on = [aws_instance.ec2-instance] connection { type = "ssh" user = "ec2-user" private_key = file("~/.ssh/your_key_name.pem") host = aws_instance.ec2-instance.public_ip } provisioner "remote-exec" { inline = [ "curl -O http://developer.download.nvidia.com/compute/cuda/10.0/cuda_10.0.130_410.48_win10.exe", "Start-Process -FilePath .\cuda_10.0.130_410.48_win10.exe -ArgumentList '/S /no-desktop-shortcut' -Wait", ] } } # Install AWS CLI resource "null_resource" "aws_cli_install" { depends_on = [aws_instance.ec2-instance] connection { type = "ssh" user = "ec2-user" private_key = file("~/.ssh/your_key_name.pem") host = aws_instance.ec2-instance.public_ip } provisioner "remote-exec" { inline = [ "curl -O https://s3.amazonaws.com/aws-cli/AWSCLI64PY2.msi", "Start-Process -FilePath .\AWSCLI64PY2.msi -ArgumentList '/S /no-desktop-shortcut' -Wait", ] } }
Шаг 2: Запуск сценария Terraform
После того, как вы сгенерировали скрипт Terraform, вы можете запустить его с помощью следующей команды.
terraform apply
Это создаст экземпляр с указанными конфигурациями.
Шаг 3: Уничтожение экземпляра
Если вам больше не нужен экземпляр, вы можете уничтожить его с помощью следующей команды.
terraform destroy
Это уничтожит экземпляр и все связанные с ним ресурсы.
Из этого руководства вы узнали, как сгенерировать сценарий Terraform для настройки, установки и настройки мощного экземпляра Windows AWS EC2 для машинного обучения и обработки данных с поддержкой графического процессора и всем необходимым программным обеспечением и инструментами. Вы также узнали, как установить, настроить и уничтожить экземпляр с помощью Terraform, а также как установить среды разработки, такие как JavaScript, TypeScript, Node.js, Python, PowerShell, Oh-my-Zsh, Git Bash, VS Code. , Подсистема Windows для Linux, Docker, AWS CLI, AWS SDK, Terraform, TensorFlow, Keras, PyTorch, Scikit-Learn, OpenCV, SciPy, Pandas, NumPy, Matplotlib, Seaborn, Jupyter Notebook, Apache Spark и Hadoop.