2

我正在使用雾在 EC2 上配置服务器。

我有:

EC2 = Fog::Compute.new 提供者:'AWS',
                       aws_access_key_id:AWS_ACCESS_KEY,
                       aws_secret_access_key:AWS_SECRET_KEY


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',
                              标签:{名称:TAGGED_NAME},
                              用户名:ROOT_USER

当我在 rakefile 中运行它并且它挂s = EC2.servers.bootstrap了很长时间。

有什么想法或指示吗?

4

1 回答 1

1

我也遇到了这个问题。在部署了几个 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
于 2013-02-22T22:48:11.260 回答