EC2 userdata codecommit clone не работает

Я запускаю экземпляр ec2 из пользовательских данных, и мне нужно клонировать репо с моими доступными плейбуками, но его не удается клонировать. Подробности см. Ниже. Может ли кто-нибудь помочь мне разобраться в этом. когда я использую ssh для экземпляра после начальной загрузки, то клонирование работает, но не во время начальной загрузки.

#!/usr/bin/env bash
set -x

exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1

cd /home/ec2-user

mkdir -p .ssh
ssh-keygen -b 2048 -t rsa -f /home/ec2-user/.ssh/codecommit -q -N ""

KEY_ID=`aws iam  upload-ssh-public-key --user-name ${user_id} --ssh-public-key-body "$(cat /home/ec2-user/.ssh/codecommit.pub)" \
  --query 'SSHPublicKey.SSHPublicKeyId' --output text`

echo -e "
Host git-codecommit.*.amazonaws.com
  User $KEY_ID
  IdentityFile /home/ec2-user/.ssh/codecommit
" >> /home/ec2-user/.ssh/config

ssh-keyscan -t rsa git-codecommit.us-east-2.amazonaws.com >> /home/ec2-user/.ssh/known_hosts

  sudo chown -R ec2-user:ec2-user /home/ec2-user/.ssh
sudo chmod 700 /home/ec2-user/.ssh
sudo chmod 644 /home/ec2-user/.ssh/*
sudo chmod 600 /home/ec2-user/.ssh/codecommit*

eval "$(ssh-agent -s)"

export GIT_SSH_COMMAND="ssh -v -F /home/ec2-user/.ssh/config -o StrictHostKeyChecking=no"
export GIT_TRACE_PACKET=true
export GIT_TRACE=2
export GIT_CURL_VERBOSE=1

**sleep 60s**
git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/ansible

person victor m    schedule 10.08.2018    source источник
comment
Проблема была решена - 60 секунд сна, прежде чем клон исправил проблемы.   -  person victor m    schedule 11.08.2018
comment
Поскольку вы смогли решить проблему самостоятельно, вы можете ответить на свой вопрос (и даже принять свой ответ), чтобы другим людям, столкнувшимся с той же проблемой, было легче найти решение.   -  person Leon    schedule 11.08.2018


Ответы (1)


Добавление 60 секунд сна до того, как команда git clone сработает. Похоже, что загрузка ключа SSH займет некоторое время, прежде чем станет активной.

sleep 60s
git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/ansible

OR

for i in {1..30}; do
  git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/ansible      
  [ $? == 0 ] && break || sleep 2s; echo "keep trying ..."
done
person victor m    schedule 12.08.2018