Архивы AWS - Заметки Эникейщика https://7d3.ru/wiki/category/aws Или Рутинная Работа Системного Администратора Sat, 06 Jun 2020 10:47:42 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.9.7 [Terraform][AWS] Распределение инстансов между subnets https://7d3.ru/wiki/1127 https://7d3.ru/wiki/1127#respond Sat, 06 Jun 2020 10:47:42 +0000 https://7d3.ru/?p=1127 Задача: распределять инстансы равномерно между подсетями Решение: Получить остаток от деления. На питоне это выглядит так: [crayon-6a81075748f83630443643/] Каждому значению из первого списка назначается значение из второго списка по кругу [crayon-6a81075748f8e946264573/] В Terraform получаем список подсетей. Необходимо указать зависимость от создания этих подсетей. [crayon-6a81075748f92932822485/] При создании network_interface указать: [crayon-6a81075748f94849261339/]  

Сообщение [Terraform][AWS] Распределение инстансов между subnets появились сначала на Заметки Эникейщика.

]]>
Задача: распределять инстансы равномерно между подсетями

Решение: Получить остаток от деления. На питоне это выглядит так:

arr = [0,1,2,3,4,5,6,7,8,9,10]
arr2 = [0,1,2]

for x in arr:
  print(str(x) + "=" + str(arr2[x % len(arr2)]))

Каждому значению из первого списка назначается значение из второго списка по кругу

0=0
1=1
2=2
3=0
4=1
5=2
6=0
7=1
8=2
9=0
10=1

В Terraform получаем список подсетей. Необходимо указать зависимость от создания этих подсетей.

data "aws_subnet_ids" "private" {
  vpc_id = aws_vpc.vpc_clusterName.id
  tags = {
    Tier = "Private"
  }
  depends_on = [aws_subnet.vpc-sn_clusterName-private]
}

При создании network_interface указать:

resource "aws_network_interface" "ni_EC2_clusterName-node" {
  count = var.node_count
  #распределяются между subNet
  subnet_id       = element(data.aws_subnet_ids.private.ids[*], count.index % length(data.aws_subnet_ids.private.ids[*]))
  security_groups = ["${aws_security_group.sg_SSH-me.id}"]
  tags = {
    Name = "ni_EC2_clusterName-node-${count.index}"
  }
}

 

Сообщение [Terraform][AWS] Распределение инстансов между subnets появились сначала на Заметки Эникейщика.

]]>
https://7d3.ru/wiki/1127/feed 0
[K8s] Установка Kubernetes с помощью Kubespray (Terraform+Ansible) https://7d3.ru/wiki/1124 https://7d3.ru/wiki/1124#respond Fri, 05 Jun 2020 18:26:04 +0000 https://7d3.ru/?p=1124 Задача: Учебная задача создать кластер K8s в AWS на обычных инстансах не используя EKS [crayon-6a81075749881043727230/] Параметры подключения к AWS [crayon-6a81075749888022081513/] Параметр кластера [crayon-6a8107574988b625607898/] [crayon-6a8107574988e851786148/] Указываем дистрибутив для виртуалок. Ищем и заменяем в файле variables.tf [crayon-6a81075749891294438868/] [crayon-6a81075749894040124973/] Ставим K8s [crayon-6a81075749897453617424/]  

Сообщение [K8s] Установка Kubernetes с помощью Kubespray (Terraform+Ansible) появились сначала на Заметки Эникейщика.

]]>
Задача: Учебная задача создать кластер K8s в AWS на обычных инстансах не используя EKS

sudo apt update
sudo apt install unzip

#terraform
wget https://releases.hashicorp.com/terraform/0.12.26/terraform_0.12.26_linux_amd64.zip
unzip terraform_0.12.26_linux_amd64.zip
sudo mv terraform /usr/local/bin/

#kubespray
git clone https://github.com/kubernetes-sigs/kubespray.git && cd kubespray
sudo apt install python3-pip
pip3 install -r requirements.txt
PATH=\$PATH:~/.local/bin && echo "PATH=\$PATH:~/.local/bin" >> ~/.bashrc

Параметры подключения к AWS

cat <<EOF > ./contrib/terraform/aws/credentials.tfvars
#AWS Access Key
AWS_ACCESS_KEY_ID = ""
#AWS Secret Key
AWS_SECRET_ACCESS_KEY = ""
#EC2 SSH Key Name
AWS_SSH_KEY_NAME = "AWS-test"
#AWS Region
AWS_DEFAULT_REGION = "eu-central-1"
EOF

Параметр кластера

cat <<EOF > ./contrib/terraform/aws/terraform.tfvars
#Global Vars
aws_cluster_name = "devtest"

#VPC Vars
aws_vpc_cidr_block       = "10.250.192.0/18"
aws_cidr_subnets_private = ["10.250.192.0/20", "10.250.208.0/20"]
aws_cidr_subnets_public  = ["10.250.224.0/20", "10.250.240.0/20"]

#Bastion Host
aws_bastion_size = "t2.micro"


#Kubernetes Cluster

aws_kube_master_num  = 3
aws_kube_master_size = "t2.macro"

aws_etcd_num  = 3
aws_etcd_size = "t2.micro"

aws_kube_worker_num  = 3
aws_kube_worker_size = "t2.micro"

#Settings AWS ELB

aws_elb_api_port                = 6443
k8s_secure_api_port             = 6443
kube_insecure_apiserver_address = "0.0.0.0"

default_tags = {
  #  Env = "devtest"
  #  Product = "kubernetes"
}

inventory_file = "../../../inventory/hosts"

EOF

cd ~/kubespray/contrib/terraform/aws/

Указываем дистрибутив для виртуалок. Ищем и заменяем в файле variables.tf

vim variables.tf
data "aws_ami" "distro" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] #Ubuntu
}

terraform plan -out myplan -var-file=credentials.tfvars
terraform apply "myplan"

Ставим K8s

cd ~/kubespray
cat inventory/hosts
ansible-playbook -i ./inventory/hosts ./cluster.yml -e ansible_user=ubuntu -b --become-user=root --flush-cache -e ansible_ssh_private_key_file=<path to EC2 SSH private key file>

 

Сообщение [K8s] Установка Kubernetes с помощью Kubespray (Terraform+Ansible) появились сначала на Заметки Эникейщика.

]]>
https://7d3.ru/wiki/1124/feed 0
[AWS][Terraform] Signature expired: https://7d3.ru/wiki/1110 https://7d3.ru/wiki/1110#respond Thu, 16 Apr 2020 12:39:01 +0000 https://7d3.ru/?p=1110 Проблема: Error: error using credentials to get account ID: error calling sts:GetCallerIdentity: SignatureDoesNotMatch: Signature expired: 20200416T103401Z is now earlier than 20200416T121902Z (20200416T123402Z - 15 min.) Решение: Необходимо проверить и синхронизировать время

Сообщение [AWS][Terraform] Signature expired: появились сначала на Заметки Эникейщика.

]]>
Проблема: Error: error using credentials to get account ID: error calling sts:GetCallerIdentity: SignatureDoesNotMatch: Signature expired: 20200416T103401Z is now earlier than 20200416T121902Z (20200416T123402Z - 15 min.)

Решение: Необходимо проверить и синхронизировать время

Сообщение [AWS][Terraform] Signature expired: появились сначала на Заметки Эникейщика.

]]>
https://7d3.ru/wiki/1110/feed 0
[AWS] AD авторизация Linux https://7d3.ru/wiki/1096 https://7d3.ru/wiki/1096#respond Sun, 05 Apr 2020 10:51:09 +0000 https://7d3.ru/?p=1096 Задача: Авторизоваться с Active Directory пользаками на Amazon-Linux-инстансах Решение: На инстансе Должна быть прикреплена IAM-роль AmazonEC2RoleforSSM https://aws.amazon.com/ru/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/ [crayon-6a81075749bed246064338/] [crayon-6a81075749bf4616395074/] [crayon-6a81075749bf7118599235/] https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_linux_instance.html [crayon-6a81075749bf9526667181/] Добавление в sudoers. Логинимся под АД-учеткой на линукс [crayon-6a81075749bfc156016866/] Под учеткой с sudo. Пробел надо экранировать \ [crayon-6a81075749bfe685092963/] Для проверки: [crayon-6a81075749c07538989260/]  

Сообщение [AWS] AD авторизация Linux появились сначала на Заметки Эникейщика.

]]>
Задача: Авторизоваться с Active Directory пользаками на Amazon-Linux-инстансах

Решение:

На инстансе Должна быть прикреплена IAM-роль AmazonEC2RoleforSSM

https://aws.amazon.com/ru/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/

sudo yum -y update
vi /etc/dhcp/dhclient.conf

#Добавить адреса ДНС AD-контроллера
supersede domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;

vi /etc/sysconfig/network-scripts/ifcfg-НАЗВАНИЕ_СЕТЕВОГО_ИНТЕРФЕЙСА

#найти и установить
PEERDNS=yes

sudo reboot

https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_linux_instance.html

sudo yum -y install sssd realmd krb5-workstation
sudo realm join -U join_account@example.com example.com --verbose
sudo vi /etc/ssh/sshd_config

#найти и заменить
PasswordAuthentication yes

sudo service sshd restart

Добавление в sudoers. Логинимся под АД-учеткой на линукс

id
[administrator@ad.7d3.ru@ip-172-31-46-114 ~]$ id
uid=1612600500(administrator@ad.7d3.ru) gid=1612600513(domain users@ad.7d3.ru) groups=1612600513(domain users@ad.7d3.ru),1612600512(domain admins@ad.7d3.ru),1612600518(schema admins@ad.7d3.ru),1612600520(group policy creator owners@ad.7d3.ru),1612600572(denied rodc password replication group@ad.7d3.ru)

Под учеткой с sudo. Пробел надо экранировать \

sudo visudo

%ad.7d3.ru\\domain\ admins ALL=(ALL:ALL) ALL
#или
administrator@ad.7d3.ru ALL=(ALL:ALL) ALL

Для проверки:

sudo -l

 

Сообщение [AWS] AD авторизация Linux появились сначала на Заметки Эникейщика.

]]>
https://7d3.ru/wiki/1096/feed 0
[AWS][Microsoft SQL] file to retrieve data for this request https://7d3.ru/wiki/1086 https://7d3.ru/wiki/1086#respond Mon, 23 Mar 2020 11:44:03 +0000 https://7d3.ru/?p=1086 Проблема: Пытаюсь перенести базу Microsoft SQL Server  на инстанс AWS-RDS. При restore получаю ошибку "file to retrieve data for this request, Permission denied" Решение: Надо положить бэкап-файл на S3 Создать S3 Bucket в том же регионе, что и БД Создать новую RDS OptionsGroup с опцией SQLSERVER_BACKUP_RESTOR. Добавить роль IAM, чтобы БД могла лезть в S3 […]

Сообщение [AWS][Microsoft SQL] file to retrieve data for this request появились сначала на Заметки Эникейщика.

]]>
Проблема: Пытаюсь перенести базу Microsoft SQL Server  на инстанс AWS-RDS. При restore получаю ошибку "file to retrieve data for this request, Permission denied"

Решение: Надо положить бэкап-файл на S3

  1. Создать S3 Bucket в том же регионе, что и БД
  2. Создать новую RDS OptionsGroup с опцией SQLSERVER_BACKUP_RESTOR. Добавить роль IAM, чтобы БД могла лезть в S3
  3. Заменить OptionsGroup инстанса
  4. Подключиться к БД исполнить скрипт восстановления (restore) BD
    exec msdb.dbo.rds_restore_database 
    	@restore_db_name='database_name', 
    	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',
    	@with_norecovery=0|1,
    	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
    	[@type='DIFFERENTIAL|FULL'];

    или сокращенно
    exec msdb.dbo.rds_restore_database 
    	@restore_db_name='database_name', 
    	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension';

    Проверить статус: exec msdb.dbo.rds_task_status;

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html

Сообщение [AWS][Microsoft SQL] file to retrieve data for this request появились сначала на Заметки Эникейщика.

]]>
https://7d3.ru/wiki/1086/feed 0
[AWS] ping https://7d3.ru/wiki/1083 https://7d3.ru/wiki/1083#respond Sat, 21 Mar 2020 09:04:15 +0000 https://7d3.ru/?p=1083 Проблема: не проходит пинг с одного инстанса на другой Решение: У вас заблокирован ICMP трафик.  В Security Groups добавить правило “Custom ICMP - IPv4” -> “Echo Request”

Сообщение [AWS] ping появились сначала на Заметки Эникейщика.

]]>
Проблема: не проходит пинг с одного инстанса на другой

Решение: У вас заблокирован ICMP трафик.  В Security Groups добавить правило “Custom ICMP - IPv4” -> “Echo Request”

Сообщение [AWS] ping появились сначала на Заметки Эникейщика.

]]>
https://7d3.ru/wiki/1083/feed 0