Wdrażaj instancje za pomocą Ansible

Z Pl Ikoula wiki
Wersja z dnia 16:37, 29 lip 2021 autorstwa Ikbot (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

ro:Implementarea instanțelor cu Ansible ru:Развертывание ваших экземпляров с помощью Ansible fr:Deployer vos instances avec Ansible
Artykuł ten jest wynikiem translacji automatycznej wykonywane przez oprogramowanie. Możesz przeglądać źródła artykułu tutaj.

ja:Ansibleによるインスタンスのデプロイ zh:用Ansible部署你的实例 de:Stellen Sie Ihre Instanzen mit Ansible bereit nl:Implementeer uw instanties met Ansible it:Distribuire le tue istanze con Ansible pt:Implante as suas instâncias com Ansible es:Despliegue de sus instancias con Ansible en:Deploy your instances with Ansible

Opis

Zobaczymy, jak szybko wdrożyć instancje IKOULA One Cloud za pomocą narzędzia Ansible.

Najpierw będziesz musiał zainstalować Ansible (https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) następnie moduł "cs_instance" (może być zainstalowany poprzez "pip install cs" cf. https://docs.ansible.com/ansible/2.6/modules/cs_instance_module.html) umożliwiając Ci korzystanie z API Cloud Ikoula One, jeśli jeszcze tego nie zrobiłeś i masz konto Cloud IKOULA One.

Ansible jest dostępny dla większości dystrybucji GNU/Linux, MacOS, ale może być również używany przez Cygwin, na przykład pod Microsoft Windows.


Wdrażanie instancji jednym poleceniem za pomocą Ansible

Najpierw trzeba będzie utworzyć i wypełnić/adaptować plik konfiguracyjny ".cloudstack.ini" modułu "cs_instance" w Ansible :

[CloudIkoulaOne]
endpoint = https://cloudstack.ikoula.com/client/api
key = <clé API de votre utilisateur/compte Cloud IKOULA One>
secret = <clé privée de votre utilisateur/compte Cloud IKOULA One>
timeout = 30

Następnie wystarczy uruchomić to polecenie, dostosowując wartości parametrów (nazwa instancji, nazwa sieci, itp.) i same parametry (czy masz/chcesz używać pary kluczy SSH, czy nie, na przykład):

ansible -i "localhost," -c local all -m cs_instance -a "name=<Nom de la VM> display_name=<Nom de la VM>  state=present template=< Nom entre simples quotes ou ID du template voulu> api_region=CloudIkoulaOne zone=<Nom de la zone voulu> service_offering=< Nom de l’offre de calcul voulu > networks=<Nom du réseau existant voulu> ssh_key=<Nom de la paire de clés ssh CIO existante>"

gdzie "<Nom de l’offre de calcul voulu >" oznacza wybór :

"t1.pico" (1/2 Core CPU with 512MB RAM and 100Mbps NIC)
"t1.micro" (1 Core CPU with 1GB RAM and 100Mbps NIC)
"m1.small" (1 Core CPU with 1.7GB RAM and 100Mbps NIC)
"m1.medium" (2 Cores CPU with 3.8GB RAM and 100Mbps NIC)
"m1.large" (4 Cores CPU with 7.6GB RAM and 100Mbps NIC)
"m1.extralarge" (8 Cores CPU with 15.3GB RAM and 100Mbps NIC)

Oto przykład i zwrot z jego wykonania:

$ ansible -i "localhost," -c local all -m cs_instance -a "name=Debian9advz1 display_name=Debian9adv1 state=present template='Debian 9 - Minimal - 64bits' api_region=CloudIkoulaOne zone=EU-FR-IKDC1-Z1-ADV service_offering=t1.micro networks=My-Network-Z1 ssh_key=MY_SSHKEY"
localhost | SUCCESS => {
    "account": "ikoula",
    "affinity_groups": [],
    "changed": true,
    "created": "2018-09-12T10:05:00+0200",
    "default_ip": "10.1.1.176",
    "display_name": "Debian9adv1",
    "domain": "ROOT",
    "hypervisor": "XenServer",
    "id": "3c60acc9-1480-48bc-ab78-934f0e607d6c",
    "instance_name": "i-1079-67026-VM",
    "name": "Debian9advz1",
    "password": "KYqrT3h28qOs",
    "password_enabled": true,
    "security_groups": [],
    "service_offering": "t1.micro",
    "ssh_key": "MY_SSHKEY",
    "state": "Running",
    "tags": [],
    "template": "Debian 9 - Minimal - 64bits",
    "user_data": "",
    "zone": "EU-FR-IKDC1-Z1-ADV"
}

W tym przykładzie, wdrażamy instancję Debiana 9 w strefie zaawansowanej (EU-FR-IKDC1-Z1-ADV), używając oferty obliczeniowej "t1.micro" w naszej sieci o nazwie "My-Network-Z1" z naszą parą kluczy SSH o nazwie "MY_SSHKEY".

Aby zobaczyć wszystkie możliwe do wykorzystania parametry i inne przykłady, możesz skorzystać z ansible-doc modułu "cs_instance":

$ ansible-doc cs_instance
> CS_INSTANCE    (/usr/lib/python2.7/site-packages/ansible/modules/cloud/cloudstack/cs_instance.py)

  Deploy, start, update, scale, restart, restore, stop and destroy instances.

Options (= is mandatory):

- account
        Account the instance is related to.
        [Default: None]
- affinity_groups
        Affinity groups names to be applied to the new instance.
        [Default: []]
- api_http_method
        HTTP method used.
        (Choices: get, post)[Default: get]
- api_key
        API key of the CloudStack API.
        [Default: None]
- api_region
        Name of the ini section in the `cloustack.ini' file.
        [Default: cloudstack]
- api_secret
        Secret key of the CloudStack API.
        [Default: None]
- api_timeout
        HTTP timeout.
        [Default: 10]
- api_url
        URL of the CloudStack API e.g. https://cloud.example.com/client/api.
        [Default: None]
- cpu
        The number of CPUs to allocate to the instance, used with custom service offerings
        [Default: None]
- cpu_speed
        The clock speed/shares allocated to the instance, used with custom service offerings
        [Default: None]
- disk_offering
        Name of the disk offering to be used.
        [Default: None]
- disk_size
        Disk size in GByte required if deploying instance from ISO.
        [Default: None]
...

Uwaga: wynik polecenia jest celowo obcięty ze względu na jego długość.

Wdrażanie instancji za pomocą playbooka Ansible

W taki sam sposób jak powyżej musisz najpierw utworzyć i wypełnić/adaptować plik konfiguracyjny ".cloudstack.ini" modułu "cs_instance" w Ansible :

[CloudIkoulaOne]
endpoint = https://cloudstack.ikoula.com/client/api
key = <clé API de votre utilisateur/compte Cloud IKOULA One>
secret = <clé privée de votre utilisateur/compte Cloud IKOULA One>
timeout = 30

Następnie wystarczy utworzyć plik playbooka (rozszerzenie yml / format YAML), jak poniżej, dostosowując wartości parametrów (nazwa instancji, nazwa sieci, itp.) i same parametry (jeśli masz / chcesz użyć pary kluczy SSH lub nie, na przykład) :

Przykład playbooka do wdrożenia instancji w strefie zaawansowanej:

$ cat deploy_instance_adv.yml
---

- hosts: all
  connection: local
  user: root

  tasks:

  - name: 'Create Debian instance in Cloud IKOULA One with Ansible Playbook'
    cs_instance:
      name: "<Nom de la VM>"
      state: present
      display_name: "<Nom de la VM>"
      template: "<Nom entre simples quotes ou ID du template CIO voulu>"
      api_region: "CloudIkoulaOne"
      zone: "<Nom de la zone voulu>"
      service_offering: "<Nom de l’offre de calcul voulu >"
      networks: "<Nom du réseau existant voulu>"
      ssh_key: "<Nom de la paire de clés ssh CIO existante>"
...

Przykład playbooka do deploymentu instancji w podstawowej strefie (gdzie po prostu zastępujemy parametr network parametrem security groups i dodajemy post-deploymentowy zwrot publicznego adresu ip przypisanego do vm):

$ cat deploy_instance_basic.yml
---

- hosts: all
  connection: local
  user: root

  tasks:

  - name: 'Create Debian instance in Cloud IKOULA One with Ansible Playbook'
    cs_instance:
      name: "<Nom de la VM>"
      state: present
      display_name: "<Nom de la VM>"
      template: "<Nom entre simples quotes ou ID du template CIO voulu>"
      api_region: "CloudIkoulaOne"
      zone: "<Nom de la zone voulu>"
      service_offering: "<Nom de l’offre de calcul voulu >"
      security_groups: "<Nom du groupe de sécurité existant voulu>"
      ssh_key: "<Nom de la paire de clés ssh CIO existante>"

  - name: "VM ip address:"
    debug:
      var: vminfo.default_ip
...


Po dostosowaniu parametrów i ich wartości, oto przykład jak uruchomić playbook (dostosuj nazwę swojego pliku playbooka, jeśli to konieczne):

$ ansible-playbook -i "localhost," -c local deploy_instance_adv.yml

PLAY [all] ********************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [Create Debian instance in Cloud IKOULA One with Ansible Playbook] ********************************************************************************************************************************************************************************************************************************
changed: [localhost]

PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0

Catégorie :Cloud public Catégorie:API Catégorie :Cloud</Nom>