Implementeer uw instanties met Ansible: verschil tussen versies

Uit Nl Ikoula wiki
Jump to navigation Jump to search
Regel 1: Regel 1:
 +
<span data-link_translate_zh_title="用Ansible部署你的实例"  data-link_translate_zh_url="用Ansible部署你的实例"></span>[[:zh:用Ansible部署你的实例]][[zh:用Ansible部署你的实例]]
 
<span data-link_translate_de_title="Stellen Sie Ihre Instanzen mit Ansible bereit"  data-link_translate_de_url="Stellen Sie Ihre Instanzen mit Ansible bereit"></span>[[:de:Stellen Sie Ihre Instanzen mit Ansible bereit]][[de:Stellen Sie Ihre Instanzen mit Ansible bereit]]
 
<span data-link_translate_de_title="Stellen Sie Ihre Instanzen mit Ansible bereit"  data-link_translate_de_url="Stellen Sie Ihre Instanzen mit Ansible bereit"></span>[[:de:Stellen Sie Ihre Instanzen mit Ansible bereit]][[de:Stellen Sie Ihre Instanzen mit Ansible bereit]]
 
<span data-link_translate_fr_title="Deployer vos instances avec Ansible"  data-link_translate_fr_url="Deployer vos instances avec Ansible"></span>[[:fr:Deployer vos instances avec Ansible]][[fr:Deployer vos instances avec Ansible]]
 
<span data-link_translate_fr_title="Deployer vos instances avec Ansible"  data-link_translate_fr_url="Deployer vos instances avec Ansible"></span>[[:fr:Deployer vos instances avec Ansible]][[fr:Deployer vos instances avec Ansible]]

Versie van 29 jul 2021 16:33

zh:用Ansible部署你的实例 de:Stellen Sie Ihre Instanzen mit Ansible bereit fr:Deployer vos instances avec Ansible
Dit artikel is vertaald door middel van automatische vertalingssoftware. U kunt het artikel bron hier te bekijken.

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

Beschrijving

We zullen zien hoe we snel IKOULA One Cloud instances kunnen implementeren via de Ansible tool

Eerst moet u Ansible installeren (https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) dan de "cs_instance" module (kan worden geïnstalleerd via "pip install cs" cf. https://docs.ansible.com/ansible/2.6/modules/cs_instance_module.html) waardoor u de Cloud Ikoula One API kunt gebruiken, als u dat nog niet hebt gedaan en een Cloud IKOULA One-account hebt.

Ansible is beschikbaar voor de meeste GNU/Linux distributies, MacOS maar kan ook gebruikt worden via Cygwin bijvoorbeeld onder Microsoft Windows.


Een instance implementeren in één commando met Ansible

U moet eerst het configuratiebestand ".cloudstack.ini" van de module "cs_instance" van Ansible maken en invullen/aanpassen:

[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

Dan hoef je alleen maar dit commando uit te voeren, met aanpassing van de waarden van de parameters (naam van je instantie, naam van het netwerk, enz.) en de parameters zelf (of je bijvoorbeeld een SSH-sleutelpaar hebt/wilt gebruiken of niet):

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>"

waarbij "<Nom de l’offre de calcul voulu >" de keuze is van :

"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)

Hier is een voorbeeld en het resultaat van de uitvoering ervan:

$ 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"
}

In dit voorbeeld implementeren we een Debian 9 instance in de advanced zone (EU-FR-IKDC1-Z1-ADV), gebruikmakend van de compute offering "t1.micro" in ons netwerk genaamd "My-Network-Z1" met ons SSH sleutelpaar genaamd "MY_SSHKEY"

Om alle bruikbare parameters en andere voorbeelden te zien, kunt u de ansible-doc van de "cs_instance" module gebruiken:

$ 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]
...

Opmerking: de uitvoer van het commando is opzettelijk afgekapt vanwege de lengte.

Een instantie implementeren met een Ansible afspeelboek

Op dezelfde manier als hierboven moet u eerst het configuratiebestand ".cloudstack.ini" van de module "cs_instance" van Ansible maken en invullen/aanpassen:

[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

Dan hoef je alleen maar een playbook-bestand te maken (yml-extensie / YAML-formaat), zoals hieronder, waarin je de waarden van de parameters (naam van je instantie, naam van het netwerk, enz.) en de parameters zelf aanpast (of je bijvoorbeeld een SSH-sleutelpaar hebt/wilt gebruiken of niet) :

Voorbeeld van een playbook voor het implementeren van een instantie in een geavanceerde zone:

$ 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>"
...

Voorbeeld van een playbook voor de implementatie van een instantie in een basiszone (waar we eenvoudigweg de netwerkparameter vervangen door de beveiligingsgroepenparameter en de post-deployment terugkeer toevoegen van het publieke ip-adres dat aan de vm is toegewezen):

$ 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
...


Nadat de parameters en hun waarden zijn aangepast, volgt hier een voorbeeld van hoe het playbook moet worden uitgevoerd (pas indien nodig de naam van uw playbook-bestand aan):

$ 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>