You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:43:23