如何通过OpenStack SDK创建仅支持IPv4的云服务器?
如何修改代码创建仅支持IPv4的云服务器?
原始代码
conn: Connection = create_connection() nics = [{'net-id': '`net_id`', 'subnet-id': '`subnet_id`'}] params = { 'name': 'Instance_app_2', 'networks': [{'uuid': 'net_id'}], 'nics': nics, 'security_groups': [{'name': 'GroupName'}], 'user_data': create_user_data(), # encoded user_data 'flavor_id': '`flavor_id`' 'image_id': '`image_id`', 'ipv6_address_mode': None, 'ipv6_ra_mode': None, } server = conn.compute.create_server(**params)
修改方案
要创建仅支持IPv4的云服务器,需从子网选择、参数配置两方面调整,修改后的代码如下:
conn: Connection = create_connection() # 关键:确保subnet-id对应的是仅支持IPv4的子网 nics = [{'net-id': '`net_id`', 'subnet-id': '`subnet_id`'}] params = { 'name': 'Instance_app_2', # 移除networks参数,避免与nics的子网配置冲突 'nics': nics, 'security_groups': [{'name': 'GroupName'}], 'user_data': create_user_data(), # encoded user_data 'flavor_id': '`flavor_id`', # 修复原代码缺失的逗号 'image_id': '`image_id`', # 删除IPv6相关参数,明确禁用IPv6分配 } server = conn.compute.create_server(**params)
核心修改要点
- 指定纯IPv4子网:
nics中的subnet-id必须对应仅分配IPv4地址的子网,不能使用同时支持IPv4/IPv6的双栈子网。 - 移除IPv6配置参数:删除
ipv6_address_mode和ipv6_ra_mode,避免OpenStack自动启用IPv6地址分配。 - 修复语法错误:原代码中
flavor_id行末尾缺少逗号,会触发Python语法错误,需补上。 - 避免网络参数冲突:
networks和nics同时配置可能导致重复关联网络,建议保留nics(明确指定子网)即可,移除networks参数。
内容的提问来源于stack exchange,提问作者ITN
相关产品推荐
相关产品推荐

