******** Network ******** 네트워크 서비스를 사용하기 전에 Connect 사용자 가이드에 따라 네피리티 클라우드에 대한 연결을 생성해야 합니다. 그러면 아래 예제에 사용된 conn 변수 사용이 가능합니다. 네트워크 목록 확인 ------------------ 네트워크는 격리된 레이어 2 네트워킹 세그먼트입니다. 네트워크에는 프로젝트 네트워크와 공급자 네트워크라는 두 가지 유형이 있습니다. 프로젝트 네트워크는 완전히 격리되어 있으며 다른 프로젝트와 공유되지 않습니다. 공급자 네트워크는 데이터 센터의 기존 물리적 네트워크에 매핑되고 서버에 대한 외부 네트워크 액세스를 제공합니다. 관리자만 공급자 네트워크를 생성할 수 있습니다. 네트워크는 라우터를 통해 연결될 수 있습니다. .. code-block:: python def list_networks(conn): print("List Networks:") for network in conn.network.networks(): print(network) 서브넷 리스트 ------------- 서브넷은 IP 주소 및 관련 구성 상태의 블록입니다. 서브넷은 네트워크에 새 포트가 생성될 때 IP 주소를 할당하는 데 사용됩니다. .. code-block:: python def list_subnets(conn): print("List Subnets:") for subnet in conn.network.subnets(): print(subnet) 프토 리스트 ----------- 포트는 서버의 NIC와 같은 단일 장치를 네트워크에 연결하기 위한 연결 지점입니다. 또한 포트는 해당 포트에서 사용할 MAC 및 IP 주소와 같은 관련 네트워크 구성을 설명합니다. .. code-block:: python def list_ports(conn): print("List Ports:") for port in conn.network.ports(): print(port) 보안 그룹 리스트 ---------------- 보안 그룹은 서버의 가상 방화벽 역할을 합니다. 이는 포트 통과가 허용되는 네트워크 트래픽 유형과 방향을 지정하는 보안 그룹 규칙에 대한 컨테이너입니다. .. code-block:: python def list_security_groups(conn): print("List Security Groups:") for port in conn.network.security_groups(): print(port) 라우터 리스트 ------------- 라우터는 네트워크 간에 데이터 패킷을 전달하는 논리적 구성 요소입니다. 또한 프로젝트 네트워크의 서버에 대한 외부 네트워크 액세스를 제공하기 위해 레이어 3 및 NAT 전달을 제공합니다. .. code-block:: python 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가 포함됩니다. .. code-block:: python def list_network_agents(conn): print("List Network Agents:") for agent in conn.network.agents(): print(agent) 네트워크 생성 ------------- 프로젝트 네트워크와 서브넷을 만듭니다. 이 네트워크는 서버를 생성할 때 사용할 수 있으며 서버가 동일한 프로젝트 네트워크에 있는 다른 서버와 통신할 수 있도록 해줍니다. .. code-block:: python 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 액세스를 활성화해야 할 수 있습니다. .. code-block:: python 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 패킷을 허용하는 규칙을 만들어야 합니다. .. code-block:: python 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) 네트워크 삭제 -------------- 프로젝트 네트워크와 해당 서브넷을 삭제합니다. .. code-block:: python 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)