ngine_io.exoscale_compute

Rola Ansible: Exoscale Compute

:warning: NIE JEST JUŻ WSPARTE: Exoscale nie będzie dłużej wspierać API Cloudstack po 1 maja 2024 roku.
Zobacz ogłoszenie.

CI

Zarządza zasobami obliczeniowymi w Chmurze Exoscale.

Zmienne roli

# API do użycia
exoscale__api_key:
exoscale__api_secret:
exoscale__api_endpoint: https://api.exoscale.ch/v1

# Strefa do użycia
exoscale__zone: ch-dk-2

# Grupy zabezpieczeń do utworzenia
exoscale__security_groups:
  - name: default
    rules:
      - protocol: tcp
        type: ingress
        cidr: 0.0.0.0/0
        start_port: 22
        end_port: 22

# Grupy przynależności do utworzenia (domyślnie [])
exoscale__affinity_groups:
  - name: moja grupa klastra

# Sieci do utworzenia (domyślnie [])
exoscale__networks:
  - name: sieć-prywatna
    start_ip: 10.23.12.100
    end_ip: 10.23.12.150
    netmask: 255.255.255.0

# Klucze SSH do przesłania
exoscale__ssh_key_default_name: "{{ lookup('env', 'USER') }}@{{ lookup('pipe', 'hostname') }}"
exoscale__ssh_key_default_pubkey: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
exoscale__ssh_keys:
  - name: "{{ exoscale__ssh_key_default_name }}"
    pubkey: "{{ exoscale__ssh_key_default_pubkey }}"

# Instancja serwera
exoscale__server_name: "{{ inventory_hostname_short }}"
exoscale__server_template: "Rocky Linux 8 (Green Obsidian) 64-bit"
exoscale__server_service_offering: Small
exoscale__server_root_disk_size: 10
exoscale__server_networks: "{{ omit }}"
exoscale__server_ip_to_networks: "{{ omit }}"
exoscale__server_security_groups:
  - default
exoscale__server_affinity_groups: []
exoscale__server_ssh_key: "{{ exoscale__ssh_key_default_name }}"
exoscale__server_user_data: |
  #cloud-config
  manage_etc_hosts: false
  fqdn: "{{ inventory_hostname }}"

exoscale__server_state: present
exoscale__server_allow_reboot: false

Zależności

Zobacz requirements.txt dla zależności związanych z bibliotekami Pythona.

Przykłady

Playbook

Typowy playbook wyglądałby tak:

---
- name: Dostarczanie serwerów w chmurze
  hosts: all
  serial: 5
  gather_facts: false
  roles:
    - role: ngine_io.exoscale_compute
      delegate_to: localhost

  post_tasks:
    - name: Czekaj na dostęp SSH
      delegate_to: localhost
      wait_for:
        host: "{{ ansible_host }}"
        port: 22
        timeout: 60

    - name: Czekaj na zakończenie cloud-init
      wait_for:
        host: "{{ ansible_host }}"
        path: /var/lib/cloud/instance/boot-finished
        timeout: 600

Typowe konfiguracje

Typowe wspólne konfiguracje w głównej grupie (np. group_vars/all.yml) dla dodatkowych grup zabezpieczeń, reguł, grup przynależności i sieci:

# plik: group_vars/all.yml

# API: dane uwierzytelniające
exoscale__api_key: EXO...
exoscale__api_secret: ...$

# Strefa: domyślnie ch-dk-2
exoscale__zone: ch-gva-2

# Szablon: w zależności od używanych szablonów, istnieje domyślny użytkownik, któremu przypisywany jest klucz SSH
ansible_user: rockylinux
exoscale__server_template: "Rocky Linux 8 (Green Obsidian) 64-bit 2021-08-25-13bb54"

# Włącz IPv6
exoscale__server_ipv6_enabled: true

# Grupy zabezpieczeń: utwórz te grupy zabezpieczeń.
# UWAGA: Istniejące grupy zabezpieczeń o różnych nazwach nie będą modyfikowane.
# UWAGA: Dodatkowe istniejące reguły w poniższych grupach nie będą modyfikowane.
exoscale__security_groups:
  - name: proxy
    rules:
      - protocol: tcp
        type: ingress
        cidr: 0.0.0.0/0
        port: 443

      - protocol: tcp
        type: ingress
        cidr: 0.0.0.0/0
        port: 80

      - protocol: tcp
        type: ingress
        cidr: 1.2.3.4/32
        start_port: 8000
        end_port:  8999

  - name: mqtt
    rules:
      - port: 1883
      - port: 8883

# Grupy przynależności: utwórz te grupy.
exoscale__affinity_groups:
  - name: cassandra
  - name: proxy

# Utwórz prywatne sieci do dostępu w tle.
exoscale__networks:
  - name: moja prywatna sieć
    start_ip: 10.23.12.100
    end_ip: 10.23.12.150
    netmask: 255.255.255.0

Konfiguracja instancji przez zmienne grup/host

Zakładając inwentarz podobny do poniższego:

[proxy]
proxy1.example.com
proxy2.example.com

[cassandra]
cassandra1.example.com
cassandra2.example.com
cassandra3.example.com

Upewnij się, że wszystkie instancje proxy używają innej usługi i dodatkowej grupy zabezpieczeń proxy:

#plik: group_vars/proxy.yml

# Duża oferta (domyślnie Mała)
exoscale__server_service_offering: Medium

# Przypisanie grup zabezpieczeń do instancji (domyślnie: [default])
exoscale__server_security_groups:
  - default
  - proxy

# Dołączenie prywatnej sieci
exoscale__server_networks:
  - moja prywatna sieć

Upewnij się, że wszystkie instancje cassandra są na różnych hostach sprzętowych:

#plik: group_vars/cassandra.yml

# Przypisanie grupy przynależności do wszystkich instancji
exoscale__server_affinity_groups: cassandra

# Użycie sprzętu związanego z CPU
exoscale__server_service_offering: CPU-extra-large

# Dołączenie prywatnej sieci
exoscale__server_networks:
  - moja prywatna sieć

:information_source: WSKAZÓWKA: uzyskaj listę wszystkich ofert cs listServiceOfferings | jq --raw-output '.serviceoffering[].name'.
Zobacz https://github.com/exoscale/cs/, jak korzystać z biblioteki używanej w CLI.


Licencja

MIT

Informacje o autorze

René Moser (@resmo)

O projekcie

Manages Exoscale Cloud compute resources

Zainstaluj
ansible-galaxy install ngine_io.exoscale_compute
Licencja
mit
Pobrania
1.2k
Właściciel
Engineering Cloud Computing