Diferencia entre revisiones de «Despliegue de sus instancias con Ansible»

De ES Ikoula wiki
Jump to navigation Jump to search
Línea 1: Línea 1:
 +
<span data-link_translate_pl_title="Wdrażaj instancje za pomocą Ansible"  data-link_translate_pl_url="Wdrażaj instancje za pomocą Ansible"></span>[[:pl:Wdrażaj instancje za pomocą Ansible]][[pl:Wdrażaj instancje za pomocą Ansible]]
 
<span data-link_translate_ja_title="Ansibleによるインスタンスのデプロイ"  data-link_translate_ja_url="Ansibleによるインスタンスのデプロイ"></span>[[:ja:Ansibleによるインスタンスのデプロイ]][[ja:Ansibleによるインスタンスのデプロイ]]
 
<span data-link_translate_ja_title="Ansibleによるインスタンスのデプロイ"  data-link_translate_ja_url="Ansibleによるインスタンスのデプロイ"></span>[[:ja:Ansibleによるインスタンスのデプロイ]][[ja:Ansibleによるインスタンスのデプロイ]]
 
<span data-link_translate_zh_title="用Ansible部署你的实例"  data-link_translate_zh_url="用Ansible部署你的实例"></span>[[:zh:用Ansible部署你的实例]][[zh:用Ansible部署你的实例]]
 
<span data-link_translate_zh_title="用Ansible部署你的实例"  data-link_translate_zh_url="用Ansible部署你的实例"></span>[[:zh:用Ansible部署你的实例]][[zh:用Ansible部署你的实例]]

Revisión del 16:35 29 jul 2021

pl:Wdrażaj instancje za pomocą Ansible 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 fr:Deployer vos instances avec Ansible
Este artículo ha sido traducido por un software de traducción automática. Usted puede ver el origen artículo aquí.

en:Deploy your instances with Ansible

Descripción

Veremos cómo desplegar rápidamente instancias de IKOULA One Cloud a través de la herramienta Ansible

En primer lugar, tendrá que instalar Ansible (https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) entonces el módulo "cs_instance" (puede instalarse mediante "pip install cs" cf. https://docs.ansible.com/ansible/2.6/modules/cs_instance_module.html) permitiéndole utilizar la API de Cloud Ikoula One, si no lo ha hecho ya y tiene una cuenta de Cloud IKOULA One.

Ansible está disponible para la mayoría de las distribuciones de GNU/Linux y MacOS, pero también puede utilizarse a través de Cygwin, por ejemplo, en Microsoft Windows.


Despliegue de una instancia en un solo comando con Ansible

Primero tendrá que crear y rellenar/adaptar el archivo de configuración ".cloudstack.ini" del módulo "cs_instance" de 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

A continuación, sólo tienes que ejecutar este comando, adaptando los valores de los parámetros (nombre de tu instancia, nombre de la red, etc.) y los propios parámetros (si tienes/quieres utilizar un par de claves SSH o no, por ejemplo):

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

donde "<Nom de l’offre de calcul voulu >" es la elección de :

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

He aquí un ejemplo y el retorno de su ejecución:

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

En este ejemplo, desplegamos una instancia de Debian 9 en la zona avanzada (EU-FR-IKDC1-Z1-ADV), utilizando la oferta de computación "t1.micro" en nuestra red denominada "Mi-Red-Z1" con nuestro par de claves SSH denominado "MI_SSHKEY"

Para ver todos los parámetros utilizables y otros ejemplos, puede utilizar el ansible-doc del módulo "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: la salida del comando está deliberadamente truncada debido a su longitud.

Despliegue de una instancia con un playbook de Ansible

De la misma manera que en el caso anterior, primero hay que crear y rellenar/adaptar el archivo de configuración ".cloudstack.ini" del módulo "cs_instance" de 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

A continuación, sólo tienes que crear un archivo playbook (extensión yml / formato YAML), como el que aparece a continuación, adaptando los valores de los parámetros (nombre de tu instancia, nombre de la red, etc.) y los propios parámetros (si tienes/quieres usar un par de claves SSH o no, por ejemplo) :

Ejemplo de libro de jugadas para desplegar una instancia en una zona avanzada:

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

Ejemplo de playbook para el despliegue de una instancia en una zona básica (donde simplemente sustituimos el parámetro de red por el de grupos de seguridad y añadimos la devolución posterior al despliegue de la dirección ip pública asignada a la 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 vez adaptados los parámetros y sus valores, he aquí un ejemplo de cómo ejecutar el libro de jugadas (adapte el nombre de su archivo de libro de jugadas si es necesario):

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