Differenze tra le versioni di "Distribuire le tue istanze con Ansible"

Da It Ikoula wiki.
Jump to navigation Jump to search
Riga 1: Riga 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_nl_title="Implementeer uw instanties met Ansible"  data-link_translate_nl_url="Implementeer uw instanties met Ansible"></span>[[:nl:Implementeer uw instanties met Ansible]][[nl:Implementeer uw instanties met Ansible]]
 
<span data-link_translate_nl_title="Implementeer uw instanties met Ansible"  data-link_translate_nl_url="Implementeer uw instanties met Ansible"></span>[[:nl:Implementeer uw instanties met Ansible]][[nl:Implementeer uw instanties met Ansible]]

Versione delle 16:33, 29 lug 2021

zh:用Ansible部署你的实例 de:Stellen Sie Ihre Instanzen mit Ansible bereit nl:Implementeer uw instanties met Ansible fr:Deployer vos instances avec Ansible
Il presente articolo è stato tradotto tramite un software di traduzione automatica. È possibile visualizzare l'origine articolo qui.

pt:Implante as suas instâncias com Ansible es:Despliegue de sus instancias con Ansible en:Deploy your instances with Ansible

Descrizione

Vedremo come distribuire rapidamente le istanze di IKOULA One Cloud tramite lo strumento Ansible

Per prima cosa è necessario installare Ansible (https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) poi il modulo "cs_instance" (può essere installato tramite "pip install cs" cf. https://docs.ansible.com/ansible/2.6/modules/cs_instance_module.html) permettendoti di utilizzare l'API di Cloud Ikoula One, se non l'hai già fatto e hai un account Cloud IKOULA One.

Ansible è disponibile per la maggior parte delle distribuzioni GNU/Linux, MacOS ma può anche essere usato tramite Cygwin, per esempio sotto Microsoft Windows.


Distribuire un'istanza in un solo comando con Ansible

Dovrete prima creare e compilare/adattare il file di configurazione ".cloudstack.ini" del modulo "cs_instance" di 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

Poi devi solo eseguire questo comando, adattando i valori dei parametri (nome della tua istanza, nome della rete, ecc.) e i parametri stessi (se hai/vuoi usare una coppia di chiavi SSH o no, per esempio):

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

dove "<Nom de l’offre de calcul voulu >" è la scelta di :

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

Ecco un esempio e il ritorno della sua esecuzione:

$ 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 questo esempio, distribuiamo un'istanza Debian 9 nella zona avanzata (EU-FR-IKDC1-Z1-ADV), usando l'offerta di calcolo "t1.micro" nella nostra rete chiamata "My-Network-Z1" con la nostra coppia di chiavi SSH chiamata "MY_SSHKEY"

Per vedere tutti i parametri utilizzabili e altri esempi, potete usare l'ansible-doc del modulo "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]
...

Nota: l'output del comando è volutamente troncato a causa della sua lunghezza.

Distribuire un'istanza con un playbook Ansible

Allo stesso modo di sopra, devi prima creare e riempire/adattare il file di configurazione ".cloudstack.ini" del modulo "cs_instance" di 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

Poi basta creare un file playbook (estensione yml / formato YAML), come di seguito, adattando i valori dei parametri (nome della tua istanza, nome della rete, ecc.) e i parametri stessi (se hai/vuoi usare una coppia di chiavi SSH o no per esempio) :

Esempio di un playbook per distribuire un'istanza in una zona avanzata:

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

Esempio di playbook per il deployment di un'istanza in una zona di base (dove sostituiamo semplicemente il parametro network con il parametro security groups e aggiungiamo il ritorno post-deployment dell'indirizzo ip pubblico assegnato alla 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
...


Una volta adattati i parametri e i loro valori, ecco un esempio di come eseguire il playbook (adattate il nome del vostro file playbook se necessario):

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