雾挂在Fog :: Compute.servers.bootstrap上

时间:2013-01-11 16:50:19

标签: ruby-on-rails fog

我使用雾来配置EC2上的服务器。

我有:

EC2 = Fog::Compute.new provider:              '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',
                              tags:       { Name: TAGGED_NAME },
                              username: ROOT_USER

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

有任何想法或指示吗?

1 个答案:

答案 0 :(得分:1)

我也遇到了这个问题。经过几次EC2实例部署后,我最终陷入困境(它实际上工作了一晚,第二天早上就被卡住了。)

我的快速修复是登录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 keypairs

<强>附录

我使用的雾版本是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