Compute

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

서버 목록 조회

서버는 클라우드 공급자가 실행하는 컴퓨팅 인스턴스에 대한 액세스를 제공하는 가상 머신입니다.

def list_servers(conn):
    print("List Servers:")

    for server in conn.compute.servers():
        print(server)

이미지 목록 조회

이미지는 서버에 사용하려는 운영 체제입니다.

def list_images(conn):
    print("List Images:")

    for image in conn.compute.images():
        print(image)

리소스 사양 조회

플레이버는 서버의 리소스 구성입니다. 각 버전은 디스크, 메모리, vCPU 및 네트워크 대역폭의 고유한 조합입니다.

def list_flavors(conn):
    print("List Flavors:")

    for flavor in conn.compute.flavors():
        print(flavor)

네트워크 목록 조회

네트워크는 서버에 대한 연결을 제공합니다.

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

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

키 페어 생성

키 쌍은 공개 키 암호화의 공개 키와 개인 키입니다. 이는 서버에 연결할 때 로그인 정보를 암호화하고 해독하는 데 사용됩니다.

def create_keypair(conn):
    keypair = conn.compute.find_keypair(KEYPAIR_NAME)

    if not keypair:
        print("Create Key Pair:")

        keypair = conn.compute.create_keypair(name=KEYPAIR_NAME)

        print(keypair)

        try:
            os.mkdir(SSH_DIR)
        except OSError as e:
            if e.errno != errno.EEXIST:
                raise e

        with open(PRIVATE_KEYPAIR_FILE, 'w') as f:
            f.write("%s" % keypair.private_key)

        os.chmod(PRIVATE_KEYPAIR_FILE, 0o400)

    return keypair

서버 생성

최소한 서버에는 생성 시 이름, 이미지, 플레이버 및 네트워크가 필요합니다. 위와 같이 속성을 나열한 다음 find 메소드를 사용하여 적절한 리소스를 가져옴으로써 이러한 속성의 이름과 ID를 검색할 수 있습니다.

이상적으로는 키 쌍을 사용하여 서버를 생성하여 개인 키로 해당 서버에 로그인할 수도 있습니다.

서버는 부팅하는 데 시간이 걸리므로 wait_for_server를 호출하여 서버가 활성화될 때까지 기다립니다.

def create_server(conn):
    print("Create Server:")

    image = conn.image.find_image(IMAGE_NAME)
    flavor = conn.compute.find_flavor(FLAVOR_NAME)
    network = conn.network.find_network(NETWORK_NAME)
    keypair = create_keypair(conn)

    server = conn.compute.create_server(
        name=SERVER_NAME,
        image_id=image.id,
        flavor_id=flavor.id,
        networks=[{"uuid": network.id}],
        key_name=keypair.name,
    )

    server = conn.compute.wait_for_server(server)

    print(
        "ssh -i {key} root@{ip}".format(
            key=PRIVATE_KEYPAIR_FILE, ip=server.access_ipv4
        )
    )