给horizon添加分配指定floating IP的功能

这篇个人学习笔记介绍了在OpenStack Horizon中为实例分配指定浮动IP的步骤,涉及代码修改,包括在forms.py、nova.py等多个文件中添加address变量以实现功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为个人学习笔记分享,有任何问题欢迎交流!


适应版本:E

使用方法:

如下图所示,若要分配指定的floatingIP,可在里输入指定IP;若不要分配指定的floating IP,“IP地址”栏为空,直接点“分配IP”按钮。



修改过程

1./usr/share/pyshared/horizon/dashboards/nova/access_and_security/floating_ips/forms.py:FloatingIpAllocate中添加一个变量address,address从horizon的页面上接受用户输入的floating ip的值;并在api函数中添加该变量。

class FloatingIpAllocate(forms.SelfHandlingForm):
    tenant_name = forms.CharField(widget=forms.HiddenInput())
    pool = forms.ChoiceField(label=_("Pool"))
    address = forms.CharField(required=False,label=_("IP Address"))

    def __init__(self, *args, **kwargs):
        super(FloatingIpAllocate, self).__init__(*args, **kwargs)
        floating_pool_list = kwargs.get('initial', {}).get('pool_list', [])
        self.fields['pool'].choices = floating_pool_list
        #self.fields['address'].choices = None

    def handle(self, request, data):
        try:
            fip = api.tenant_floating_ip_allocate(request,
                                                  pool=data.get('pool', None),address=data.get('a
OpenStack配置虚拟机实例的过程涉及多个组件的协作,包括计算服务(Nova)、镜像服务(Glance)、网络服务(Neutron)以及仪表盘(Horizon)等。以下是详细的配置指南: ### 创建和配置虚拟机实例的基本步骤 1. **准备镜像** 在创建虚拟机之前,需要确保已经上传了可用的操作系统镜像。常见的镜像格式包括QCOW2、RAW、VHD等。可以通过`glance`命令或通过Horizon界面上传镜像。例如: ```bash glance image-create --name "CentOS-7" --disk-format qcow2 --container-format bare < CentOS-7.qcow2 ``` 2. **创建密钥对(Key Pair)** 为了能够通过SSH访问虚拟机,需要先创建一个密钥对,并将其导入到OpenStack中。可以使用以下命令生成并添加密钥: ```bash ssh-keygen -t rsa -f ~/.ssh/openstack_key nova keypair-add --pub-key ~/.ssh/openstack_key.pub mykey ``` 3. **配置安全组(Security Group)** 安全组用于定义虚拟机的网络访问规则。默认情况下,所有入站流量都被阻止。需要添加允许SSH(端口22)、ICMP(ping)以及其他必要服务的规则。例如: ```bash nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 ``` 4. **创建网络(Neutron)** 如果尚未配置网络,则需要先创建外部和内部网络,并设置子网和路由器。示例命令如下: ```bash neutron net-create external_network --router:external True --provider:network_type flat --provider:physical_network physnet1 neutron subnet-create external_network 203.0.113.0/24 --gateway 203.0.113.1 --allocation-pool start=203.0.113.100,end=203.0.113.200 --enable-dhcp False neutron net-create internal_network neutron subnet-create internal_network 192.168.1.0/24 --gateway 192.168.1.1 neutron router-create demo_router neutron router-interface-add demo_router internal_subnet_id neutron router-gateway-set demo_router external_network ``` 5. **启动虚拟机实例** 使用`nova boot`命令启动虚拟机,并指定镜像、Flavor、密钥对以及网络等参数。例如: ```bash nova boot --flavor m1.small --image CentOS-7 --key-name mykey --nic net-id=internal_network_id myinstance ``` 6. **分配浮动IPFloating IP)** 为了让虚拟机可以从外部网络访问,需要为其分配一个浮动IP地址: ```bash nova floating-ip-create external_network nova add-floating-ip myinstance 203.0.113.101 ``` 7. **验证虚拟机状态和网络连通性** 使用以下命令查看虚拟机状态: ```bash nova list ``` 然后尝试从外部网络Ping该浮动IP地址,并使用SSH连接测试: ```bash ping 203.0.113.101 ssh -i ~/.ssh/openstack_key centos@203.0.113.101 ``` ### 常见问题与解决方法 - **虚拟机无法访问外部网络**:请检查是否已正确配置外部网桥(如`br-ex`),并确保主机网卡已绑定到该网桥[^2]。 - **无法SSH连接虚拟机**:请确认安全组规则是否允许SSH流量,并且密钥对是否正确配置。 - **虚拟机处于错误状态**:可查看Nova的日志文件(通常位于`/var/log/nova/`目录下)以排查具体原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值