Network

네트워크 서비스를 사용하기 전에 Connect 사용자 가이드에 따라 네피리티 클라우드에 대한 연결을 생성해야 합니다. 그러면 아래 예제에 사용된 conn 변수 사용이 가능합니다.

네트워크 목록 확인

네트워크는 격리된 레이어 2 네트워킹 세그먼트입니다. 네트워크에는 프로젝트 네트워크와 공급자 네트워크라는 두 가지 유형이 있습니다. 프로젝트 네트워크는 완전히 격리되어 있으며 다른 프로젝트와 공유되지 않습니다. 공급자 네트워크는 데이터 센터의 기존 물리적 네트워크에 매핑되고 서버에 대한 외부 네트워크 액세스를 제공합니다. 관리자만 공급자 네트워크를 생성할 수 있습니다. 네트워크는 라우터를 통해 연결될 수 있습니다.

def list_networks(conn):
    print("List Networks:")

    for network in conn.network.networks():
        print(network)

서브넷 리스트

서브넷은 IP 주소 및 관련 구성 상태의 블록입니다. 서브넷은 네트워크에 새 포트가 생성될 때 IP 주소를 할당하는 데 사용됩니다.

def list_subnets(conn):
    print("List Subnets:")

    for subnet in conn.network.subnets():
        print(subnet)

프토 리스트

포트는 서버의 NIC와 같은 단일 장치를 네트워크에 연결하기 위한 연결 지점입니다. 또한 포트는 해당 포트에서 사용할 MAC 및 IP 주소와 같은 관련 네트워크 구성을 설명합니다.

def list_ports(conn):
    print("List Ports:")

    for port in conn.network.ports():
        print(port)

보안 그룹 리스트

보안 그룹은 서버의 가상 방화벽 역할을 합니다. 이는 포트 통과가 허용되는 네트워크 트래픽 유형과 방향을 지정하는 보안 그룹 규칙에 대한 컨테이너입니다.

def list_security_groups(conn):
    print("List Security Groups:")

    for port in conn.network.security_groups():
        print(port)

라우터 리스트

라우터는 네트워크 간에 데이터 패킷을 전달하는 논리적 구성 요소입니다. 또한 프로젝트 네트워크의 서버에 대한 외부 네트워크 액세스를 제공하기 위해 레이어 3 및 NAT 전달을 제공합니다.

def list_routers(conn):
    print("List Routers:")

    for router in conn.network.routers():
        print(router)

네트워크 Agent 리스트

네트워크 에이전트는 가상 네트워크를 구현하는 데 사용되는 다양한 작업을 처리하는 플러그인입니다. 이러한 에이전트에는 neutron-dhcp-agent, neutron-l3-agent, neutron-metering-agent 및 neutron-lbaas-agent가 포함됩니다.

def list_network_agents(conn):
    print("List Network Agents:")

    for agent in conn.network.agents():
        print(agent)

네트워크 생성

프로젝트 네트워크와 서브넷을 만듭니다. 이 네트워크는 서버를 생성할 때 사용할 수 있으며 서버가 동일한 프로젝트 네트워크에 있는 다른 서버와 통신할 수 있도록 해줍니다.

def create_network(conn):
    print("Create Network:")

    example_network = conn.network.create_network(
        name='openstacksdk-example-project-network'
    )

    print(example_network)

    example_subnet = conn.network.create_subnet(
        name='openstacksdk-example-project-subnet',
        network_id=example_network.id,
        ip_version='4',
        cidr='10.0.2.0/24',
        gateway_ip='10.0.2.1',
    )

    print(example_subnet)

포트 열기

네트워크에 대한 보안 그룹을 생성할 때 해당 포트를 통한 통신을 허용하려면 특정 포트를 열어야 합니다. 예를 들어 포트 443에서 HTTPS 액세스를 활성화해야 할 수 있습니다.

def open_port(conn):
    print("Open a port:")

    example_sec_group = conn.network.create_security_group(
        name='openstacksdk-example-security-group'
    )

    print(example_sec_group)

    example_rule = conn.network.create_security_group_rule(
        security_group_id=example_sec_group.id,
        direction='ingress',
        remote_ip_prefix='0.0.0.0/0',
        protocol='tcp',
        port_range_max='443',
        port_range_min='443',
        ethertype='IPv4',
    )

    print(example_rule)

ping 응답 받기

보안 그룹 내 네트워크의 컴퓨터를 ping하려면 인바운드 ICMP 패킷을 허용하는 규칙을 만들어야 합니다.

def allow_ping(conn):
    print("Allow pings:")

    example_sec_group = conn.network.create_security_group(
        name='openstacksdk-example-security-group2'
    )

    print(example_sec_group)

    example_rule = conn.network.create_security_group_rule(
        security_group_id=example_sec_group.id,
        direction='ingress',
        remote_ip_prefix='0.0.0.0/0',
        protocol='icmp',
        port_range_max=None,
        port_range_min=None,
        ethertype='IPv4',
    )

    print(example_rule)

네트워크 삭제

프로젝트 네트워크와 해당 서브넷을 삭제합니다.

def delete_network(conn):
    print("Delete Network:")

    example_network = conn.network.find_network(
        'openstacksdk-example-project-network'
    )

    for example_subnet in example_network.subnet_ids:
        conn.network.delete_subnet(example_subnet, ignore_missing=False)
    conn.network.delete_network(example_network, ignore_missing=False)