我也遇到了这个问题。在部署了几个 EC2 实例后,我最终卡住了(它确实工作了 1 晚,然后在第二天早上卡住了)。
我的快速解决方法是登录 Amazon EC2,删除与我的部署关联的密钥对.. IE:
EC2 = Fog::Compute.new provider: 'AWS',
region: REGION,
aws_access_key_id: AWS_ACCESS_KEY,
aws_secret_access_key: AWS_SECRET_KEY
Fog.credential = waffles
s = EC2.servers.bootstrap image_id: AMI_ID,
flavor_id: FLAVOR_ID,
private_key_path: '~/.ssh/id_rsa',
public_key_path: '~/.ssh/id_rsa.pub',
tags: { Name: TAGGED_NAME },
username: ROOT_USER
这将创建一个名为“fog_waffles b6:21:d1:3d:2b:b9:e7:48:b9:75:50:3f:03:5b:fb:85”的密钥对。删除它,您应该能够继续前进。
据我所知,如果您创建具有相同密钥对名称的新实例,则密钥对不会得到更新/替换。如果您删除该实例,然后使用具有相同名称的新密钥对创建一个新实例,它似乎会遇到问题。
有关EC2 密钥对的更多信息
附录
我使用的雾的版本是 1.9。
如果您有多个人创建实例,您可能希望使用以下内容:
EC2 = Fog::Compute.new provider: 'AWS',
region: REGION,
aws_access_key_id: AWS_ACCESS_KEY,
aws_secret_access_key: AWS_SECRET_KEY
Fog.credential = waffles
s = EC2.servers.bootstrap image_id: AMI_ID,
flavor_id: FLAVOR_ID,
private_key_path: '~/.ssh/id_rsa',
public_key_path: '~/.ssh/id_rsa.pub',
tags: { Name: TAGGED_NAME },
username: ROOT_USER
EC2.delete_key_pair("fog_waffles")
这将确保密钥对永远不会发生冲突。删除它是可以的,因为它只是部署实例时需要的。部署实例后,Fog 会将您的公钥放入 authorized_keys 中,这样您就可以访问该实例。
另一种选择是将 Fog.credential 更改为对每个用户都是唯一的(而不是删除它)。IE:
Fog.credential = waffles_ryan