Wie deploye ich eine Instance (VM) mit OSC - Ansible oder Terraform

OpenStack Client (auch bekannt als OSC) ist ein Befehlszeilen-Client für OpenStack, der den Befehlssatz für Compute, Identity, Image, Object Storage und Block Storage APIs in einer einzigen Shell mit einer einheitlichen Befehlsstruktur zusammenführt.

In diesem Kapitel sind Beispiele enthalten, wie mit Hilfe des OCS, Ansible oder mit Terraform eine VM deployed werden kann.

Voraussetzungen

  • Der verwendete CLI (OSC, Ansible oder Terraform) müssen installiert und konfiguriert sein
  • Grundkenntnisse des Linux Betriebssystems (shell)
  • Zugriff auf laufende Linux-VM (In unserem Beispiel Ubuntu) mit geöffnetem Port (Egress 443) zum OpenStack API
  • Application Credentials (cloud.yaml)

Eine Anleitung zur Installation und Konfiguration des OpenStack OSC (siehe: Wie konfiguriere ich den OpenStack Client (OSC)).

In den folgenden Beispielen wird eine VM mit Ubuntu 20.04 in die Availability ZONE ch-zh1-az2 deployed.

Beispiel deploy VM mit OpenStack CLI (OSC)

openstack server create vm-u2004-az2 \
   --image "Ubuntu 20.04" \
   --flavor m1.small \
   --key-name foo-key \
   --network foo-net \
   --security-group default \
   --availability-zone ch-zh1-az2

Beispiel deploy VM mit Ansible

- os_server:
    name: "foo-u2004-az2"
    image: "Ubuntu 20.04"
    key_name: "foo-key"
    flavor: "m1.micro"
    network: "foo-net"
    security_groups: "default"
    availability_zone: "ch-zh1-az2"

Beispiel deploy VM mit Terraform

resource "openstack_compute_instance_v2" "instance_1" {
   name = "vm-u2004-az2"
   image_name = "Ubuntu 20.04"
   flavor_name = "m1.micro"
   key_pair = "foo-key"
   security_groups = ["default"]
   availability_zone = "ch-zh1-az2"

   network {
      name = "foo-net"
   }
}

Wie deploye ich ein Volume mit OSC - Ansible oder Terraform

In den folgenden Beispielen wird ein 10GB Volume in die Availability ZONE ch-zh1-az2 deployed.

Beispiel deploy Volume mit OpenStack CLI (OSC)

openstack volume create vol1-az2 \
   --size 10 \
   --availability-zone ch-zh1-az2

Beispiel deploy Volume mit Ansible

- os_volume:
    display_name: "vol1-az2"
    size: 10
    availability_zone: "ch-zh1-az2"

Beispiel deploy Volume mit Terraform

resource "openstack_blockstorage_volume_v2" "volume_1" {
   name = "vol1-az2"
   size = 10
   availability_zone = "ch-zh1-az2"