代码之家  ›  专栏  ›  技术社区  ›  victor m

EC2用户数据codecommit克隆失败

  •  1
  • victor m  · 技术社区  · 8 年前

    我正在从userdata启动一个ec2实例,我需要用我的ansible playbooks克隆一个repo,但它无法克隆。详见下文。有人能帮我弄清楚吗。当我在引导后ssh到实例时,clone可以工作,但不能在引导时工作。

    #!/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
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   victor m    8 年前

    在git clone命令执行之前添加60秒的睡眠时间。SSH密钥上传似乎需要一段时间才能激活。

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

    或者

    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
    
    推荐文章