为什么在openstack地平线上设置浮动ip时,操作顺序很重要?

为什么在openstack地平线上设置浮动ip时,操作顺序很重要?,openstack,openstack-horizon,Openstack,Openstack Horizon,我想使用openstack来设置ubuntu/bionic的实例。在使用ansible/openstack API自动生成vm实例之前,我通过openstack horizon web界面执行了一些测试。基本上,我执行以下步骤: 创建网络:我的网络 shared: False subnet: address: 192.168.66.0/24 IP version: IPv4 gateway: 192.168.66.254 allocation pool: 192

我想使用openstack来设置ubuntu/bionic的实例。在使用ansible/openstack API自动生成vm实例之前,我通过openstack horizon web界面执行了一些测试。基本上,我执行以下步骤:

  • 创建网络:我的网络

    shared: False
    
    subnet:
        address: 192.168.66.0/24
        IP version: IPv4
        gateway: 192.168.66.254
        allocation pool: 192.168.66.100,192.168.66.200
    dns: my-dns-ips
    
  • 创建路由器:我的路由器

    external provider: provider
    interface:
         subnet: my-network
         ip: 192.168.66.254
    
  • 创建实例:我的实例

    network: my-network    
    security group: default + ssh + icmp
    keypair: generated via ssh-keygen and imported to horizon
    
    ip: 192.168.13.209
    port to be associated: my-instance:192.168.66.123
    
  • 将浮动ip添加到我的实例中

    network: my-network    
    security group: default + ssh + icmp
    keypair: generated via ssh-keygen and imported to horizon
    
    ip: 192.168.13.209
    port to be associated: my-instance:192.168.66.123
    
  • 按以下顺序运行这些步骤:1。3.2.4.我可以按预期通过浮动ip ping和ssh连接到我的机器。但是,当按顺序1运行这些步骤时。2.3.4.我可以ping,但无法使用
    权限被拒绝(公钥)
    错误进行ssh

    理想情况下,顺序为1。2.3.4.对于我未来的ansible需求来说,这是最好的,因为它们允许在网络设置和实例分配之间进行清晰(干净)的分离

    你能告诉我为什么这个命令会触发ssh错误,而另一个命令工作正常吗

    这是正常行为吗?如果是,你能解释一下原因吗


    [编辑]进一步查看成功和失败实例的日志,我注意到失败实例找不到ssh密钥。这显然解释了ssh失败的原因,但我仍然不明白为什么在这种情况下,密钥对没有注入实例。

    这是因为在第一次尝试时,实例可以从
    DHCP代理获取元数据。但是在第二个顺序中,网络在路由器上有一个
    gw
    ,在图中,
    metadata agent
    起作用。我不能通过这么多信息来说明问题,但我建议检查中子和nova配置文件中的
    元数据\u代理\u共享\u秘密。如果您不是这样,您是否可以发布neutron services的配置文件并解释哪个服务安装在哪里?

    这是因为在您第一次尝试时,该实例可以从DHCP代理获取元数据。但是在第二个顺序中,网络在路由器上有一个
    gw
    ,在图中,
    metadata agent
    起作用。我不能通过这么多信息来说明问题,但我建议检查中子和nova配置文件中的
    元数据\u代理\u共享\u秘密。如果您的情况并非如此,您能否发布中子服务的配置文件,并解释哪个服务安装在哪里?

    谢谢您的解释。这真的很有道理。通过将
    os\u server::config\u drive
    选项设置为
    True
    ,我最终可以在没有明确理解的情况下实现。不客气,我建议您在中子元数据和l3代理中查找问题。当您的解决方案工作时,它将不允许您在cloud init中添加用户数据。元数据代理是在实例中注入元数据的最佳方式。感谢您的解释。这真的很有道理。通过将
    os\u server::config\u drive
    选项设置为
    True
    ,我最终可以在没有明确理解的情况下实现。不客气,我建议您在中子元数据和l3代理中查找问题。当您的解决方案工作时,它将不允许您在cloud init中添加用户数据。元数据代理是在实例中注入元数据的最佳方式。