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)