Как добавить преднастройку на EC2 AWS

Arman Nurgaliyev
2 min readJan 15, 2024

--

В данной статье мы будем использовать terraform через который мы развернем EC2.

Вы так же можете использовать hashicorp packer для создания своего образа вирутальной машины. Но, тут мы хотели разобрать другой вариант.

Для этого подготовим два файла в корне проекта user_data.sh

#!/bin/bash
sudo apt-get update
sudo adduser --disabled-password --gecos 'DevOps' devops
sudo usermod -aG sudo devops
sudo passwd --delete devops
echo '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
echo 'devops ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
sudo sed -i 's,PermitRootLogin yes,PermitRootLogin no,g' /etc/ssh/sshd_config
echo 'Port 4080' | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd
sudo mkdir -p /home/devops/.ssh
echo 'ssh-rsa pub key' | sudo tee -a /home/devops/.ssh/authorized_keys
sudo chown -R devops:devops /home/devops/.ssh
sudo chmod 700 /home/devops/.ssh
sudo chmod 600 /home/devops/.ssh/authorized_keys
sudo ufw allow 4080
echo "y" | sudo ufw enable
su devops
sudo deluser ubuntu

В данном bash скрипте мы производим такие действия:

  1. Создаем пользователя devops
  2. Добавляем pub key в этого пользователя
  3. Убираем root доступ
  4. Меняем порт ssh с 22 на 4080
  5. Удаляем ubuntu пользователя

Далее этого скрипт надо передать в terraform ec2.

 resource "aws_instance" "managment" {
ami = var.ami
instance_type = var.t3_micro
vpc_security_group_ids = [aws_security_group.managment.id]
key_name = aws_key_pair.devops.id
subnet_id = aws_subnet.managment.id
user_data = file("user_data.sh")
root_block_device {
volume_size = 30
volume_type = var.volume
delete_on_termination = true
}
lifecycle {
ignore_changes = [
user_data,
vpc_security_group_ids,
volume_tags,
root_block_device
]
}
tags = {
Name = "managment"

}

}

В блоке user_data = file(“user_data.sh”) как раз передаем значения с файла в нашу виртуальную машину.

Данная статья показывает, что в AWS можно разворачивать EC2 разными способами. Я показал лишь один. Хорошего дня!

Также рекомендую подписаться на казахстанское DevOps-сообщество (https://t.me/DevOpsKaz) в Telegram. Ребята пишут о DevOps и всех его проявлениях: K8s, AppSec, Облаках, HighLoad, Data/ML, QA, Linux и другом. А я помогаю им по AWS:)

--

--