Size: a a a

2020 April 17

D

Denis 災 nobody in AWS_RU
Можно сделать проверку в cloudformation, что если есть IAM role то использовать, если нет - создать такую роль?

вариант - можно ли использовать блок Condition в таске?
то есть нужно проверить существование ресурса

или просто сделать отдельный стэк под роли, и обозначить в доке что если выполнение падает с ошибкой - добавить стэк с ролями?
источник

M

Maksimus Ulibikus in AWS_RU
Всем привет.

Под пользователем lnxcfg генерирую ключи в "ssh/insecure-deployer"

ssh-keygen -t rsa -C "insecure-deployer" -P '' -f ssh/insecure-deployer

Далее создаю:

*key-pairs.tf*

resource "aws_key_pair" "deployer" {
 key_name = "deployer-key"
 public_key = file("ssh/insecure-deployer.pub")
}

*nat-server.tf*

/* NAT/VPN server */
resource "aws_instance" "nat" {
 ami = lookup(var.amis, var.region)
 instance_type = "t2.micro"
 subnet_id = aws_subnet.public.id
 security_groups = [aws_security_group.default.id, aws_security_group.nat.id]
 key_name = aws_key_pair.deployer.key_name
 source_dest_check = false

 connection {
   user = "lnxcfg"
   host_key = "ssh/insecure-deployer"
   host     = "var.host"
 }
 provisioner "remote-exec" {
   inline = [
     "sudo iptables -t nat -A POSTROUTING -j MASQUERADE",
     "echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/forwarding > /dev/null",
     /* Install docker */
     "curl -sSL https://get.docker.com/ubuntu/ | sudo sh",
     /* Initialize open vpn data container */
     "sudo mkdir -p /etc/openvpn",
     "sudo docker run --name ovpn-data -v /etc/openvpn busybox",
     /* Generate OpenVPN server config */
     "sudo docker run --volumes-from ovpn-data --rm gosuri/openvpn ovpn_genconfig -p var.vpc_cidr -u udp://aws_instance.nat.public_ip"
   ]
 }
}

Делаю apply и получаю ошибку.

aws_instance.nat: Still creating... [10s elapsed]
aws_instance.nat: Still creating... [20s elapsed]
aws_instance.nat: Still creating... [30s elapsed]
aws_instance.nat: Provisioning with 'remote-exec'...


Error: knownhosts: /tmp/tf-known_hosts148129445:1: knownhosts: missing key type pattern

Вижу, что написано "knownhosts: missing key type pattern", но не понимаю почему.
источник

AD

Alex Demidov in AWS_RU
Maksimus Ulibikus
Всем привет.

Под пользователем lnxcfg генерирую ключи в "ssh/insecure-deployer"

ssh-keygen -t rsa -C "insecure-deployer" -P '' -f ssh/insecure-deployer

Далее создаю:

*key-pairs.tf*

resource "aws_key_pair" "deployer" {
 key_name = "deployer-key"
 public_key = file("ssh/insecure-deployer.pub")
}

*nat-server.tf*

/* NAT/VPN server */
resource "aws_instance" "nat" {
 ami = lookup(var.amis, var.region)
 instance_type = "t2.micro"
 subnet_id = aws_subnet.public.id
 security_groups = [aws_security_group.default.id, aws_security_group.nat.id]
 key_name = aws_key_pair.deployer.key_name
 source_dest_check = false

 connection {
   user = "lnxcfg"
   host_key = "ssh/insecure-deployer"
   host     = "var.host"
 }
 provisioner "remote-exec" {
   inline = [
     "sudo iptables -t nat -A POSTROUTING -j MASQUERADE",
     "echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/forwarding > /dev/null",
     /* Install docker */
     "curl -sSL https://get.docker.com/ubuntu/ | sudo sh",
     /* Initialize open vpn data container */
     "sudo mkdir -p /etc/openvpn",
     "sudo docker run --name ovpn-data -v /etc/openvpn busybox",
     /* Generate OpenVPN server config */
     "sudo docker run --volumes-from ovpn-data --rm gosuri/openvpn ovpn_genconfig -p var.vpc_cidr -u udp://aws_instance.nat.public_ip"
   ]
 }
}

Делаю apply и получаю ошибку.

aws_instance.nat: Still creating... [10s elapsed]
aws_instance.nat: Still creating... [20s elapsed]
aws_instance.nat: Still creating... [30s elapsed]
aws_instance.nat: Provisioning with 'remote-exec'...


Error: knownhosts: /tmp/tf-known_hosts148129445:1: knownhosts: missing key type pattern

Вижу, что написано "knownhosts: missing key type pattern", но не понимаю почему.
Вместо host_key указать private_key ?
источник

M

Maksimus Ulibikus in AWS_RU
Alex Demidov
Вместо host_key указать private_key ?
Пишет - нет ключа
aws_instance.nat: Provisioning with 'remote-exec'...


Error: Failed to read ssh private key: no key found
источник

AD

Alex Demidov in AWS_RU
Maksimus Ulibikus
Пишет - нет ключа
aws_instance.nat: Provisioning with 'remote-exec'...


Error: Failed to read ssh private key: no key found
указать его через file("ssh/insecure-deployer")
источник

M

Maksimus Ulibikus in AWS_RU
Alex Demidov
указать его через file("ssh/insecure-deployer")
То есть вместо private_key = "ssh/insecure-deployer" сделать file("ssh/insecure-deployer")?
источник

AD

Alex Demidov in AWS_RU
Maksimus Ulibikus
То есть вместо private_key = "ssh/insecure-deployer" сделать file("ssh/insecure-deployer")?
Да. Из доки - private_key - The contents of an SSH key to use for the connection. These can be loaded from a file on disk using the file function.
источник

M

Maksimus Ulibikus in AWS_RU
Запутался совсем.

А в key-pairs.tf оставить так же?
resource "aws_key_pair" "deployer" {
 key_name = "deployer-key"
 public_key = file("ssh/insecure-deployer.pub")
}
источник

AD

Alex Demidov in AWS_RU
Maksimus Ulibikus
Запутался совсем.

А в key-pairs.tf оставить так же?
resource "aws_key_pair" "deployer" {
 key_name = "deployer-key"
 public_key = file("ssh/insecure-deployer.pub")
}
да, это public key который на instance заливается, а не private key который используется для подключения
источник

M

Maksimus Ulibikus in AWS_RU
Alex Demidov
да, это public key который на instance заливается, а не private key который используется для подключения
Прошло!

Пока жду

aws_instance.nat: Still creating... [2m0s elapsed]
aws_instance.nat (remote-exec): Connecting to remote host via SSH...
aws_instance.nat (remote-exec):   Host: var.host
aws_instance.nat (remote-exec):   User: lnxcfg
aws_instance.nat (remote-exec):   Password: false
aws_instance.nat (remote-exec):   Private key: true
aws_instance.nat (remote-exec):   Certificate: false
aws_instance.nat (remote-exec):   SSH Agent: false
aws_instance.nat (remote-exec):   Checking Host Key: false
aws_instance.nat: Still creating... [2m10s elapsed]
источник

M

Maksimus Ulibikus in AWS_RU
Alex Demidov
да, это public key который на instance заливается, а не private key который используется для подключения
Код пятилетней давности. Через каждые пару строк меняю содержимое, потому что не работает и дошел до коннекта к инстансу по ssh. Вроде пошло, но в коде nat-server.tf было так:

connection {
   user = "ubuntu"
   key_file = "ssh/insecure-deployer"
 }
key_file = "ssh/insecure-deployer" понял на то, что вы предложили, а теперь такая проблема:

При запуске кода была ругань, что строка host - обязательна. Добавил туда host     = "" И вот здесь я не пойму: а какой хост то указывать и где его взять?
источник

M

Maksimus Ulibikus in AWS_RU
Alex Demidov
да, это public key который на instance заливается, а не private key который используется для подключения
В результате из-за хоста такая ошибка:

aws_instance.nat: Still creating... [5m20s elapsed]
aws_instance.nat (remote-exec): Connecting to remote host via SSH...
aws_instance.nat (remote-exec):   Host: var.host
aws_instance.nat (remote-exec):   User: lnxcfg
aws_instance.nat (remote-exec):   Password: false
aws_instance.nat (remote-exec):   Private key: true
aws_instance.nat (remote-exec):   Certificate: false
aws_instance.nat (remote-exec):   SSH Agent: false
aws_instance.nat (remote-exec):   Checking Host Key: false


Error: timeout - last error: dial tcp: lookup var.host on 192.168.122.1:53: no such host
источник

AD

Alex Demidov in AWS_RU
Maksimus Ulibikus
Код пятилетней давности. Через каждые пару строк меняю содержимое, потому что не работает и дошел до коннекта к инстансу по ssh. Вроде пошло, но в коде nat-server.tf было так:

connection {
   user = "ubuntu"
   key_file = "ssh/insecure-deployer"
 }
key_file = "ssh/insecure-deployer" понял на то, что вы предложили, а теперь такая проблема:

При запуске кода была ругань, что строка host - обязательна. Добавил туда host     = "" И вот здесь я не пойму: а какой хост то указывать и где его взять?
host = self.public_ip
источник

M

Maksimus Ulibikus in AWS_RU
Alex Demidov
host = self.public_ip
Спасибо огромное за помощь )) Там уже другие ошибки посыпальсь в по части SSH, но буду сам разбираться.
источник

AD

Alex Demidov in AWS_RU
Maksimus Ulibikus
Спасибо огромное за помощь )) Там уже другие ошибки посыпальсь в по части SSH, но буду сам разбираться.
you are welcome :)
источник

KT

Karen Tovmasyan in AWS_RU
Maksimus Ulibikus
Спасибо огромное за помощь )) Там уже другие ошибки посыпальсь в по части SSH, но буду сам разбираться.
источник

V

Viacheslav in AWS_RU
ssh ключ можно генерировать прямо в terraform
источник

AS

Alexey Stekov in AWS_RU
источник

OK

Oleg 👑 Konung in AWS_RU
Всем привет. Подскажите, пожалуйста, тестирую codebuild для билда и пуша в ECR
Создал один прожект, привязал к нему CodeBuildServiceRole с подключенной полиси в ECR, команда в buildspec $(aws ecr get-login --no-include-email) отрабатывает без проблем
Создал второй проект, подключил ту же самую роль, в этом билде на этом шагу отваливается с
[Container] 2020/04/17 12:08:46 Running command $(aws ecr get-login --no-include-email)
/usr/bin/env: 'sh #\r': No such file or directory

[Container] 2020/04/17 12:08:47 Command did not exit successfully $(aws ecr get-login --no-include-email) exit status 127


Пишут типа не хватает прав в ECR, но хз роль та же что и в первом прожекте. Чего может не хватать ?
источник

DN

Denys N in AWS_RU
Всем привет, я тут в AWS пытаюсь настроить доступ к aws бакету в другом аккаунте. У меня есть arn role, arn bucket и нихера не работает. Кто-то делал тут такое?
источник