Différences entre versions de « Deployer vos instances avec Ansible »

De Ikoula Wiki
Jump to navigation Jump to search
 
(18 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<span data-link_translate_ro_title="Implementarea instanțelor cu Ansible"  data-link_translate_ro_url="Implementarea instanțelor cu Ansible"></span>[[:ro:Implementarea instanțelor cu Ansible]][[ro:Implementarea instanțelor cu Ansible]]
 +
<span data-link_translate_ru_title="Развертывание ваших экземпляров с помощью Ansible"  data-link_translate_ru_url="Развертывание ваших экземпляров с помощью Ansible"></span>[[:ru:Развертывание ваших экземпляров с помощью Ansible]][[ru:Развертывание ваших экземпляров с помощью Ansible]]
 +
<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_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_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_it_title="Distribuire le tue istanze con Ansible"  data-link_translate_it_url="Distribuire le tue istanze con Ansible"></span>[[:it:Distribuire le tue istanze con Ansible]][[it:Distribuire le tue istanze con Ansible]]
 +
<span data-link_translate_pt_title="Implante as suas instâncias com Ansible"  data-link_translate_pt_url="Implante as suas instâncias com Ansible"></span>[[:pt:Implante as suas instâncias com Ansible]][[pt:Implante as suas instâncias com Ansible]]
 +
<span data-link_translate_es_title="Despliegue de sus instancias con Ansible"  data-link_translate_es_url="Despliegue de sus instancias con Ansible"></span>[[:es:Despliegue de sus instancias con Ansible]][[es:Despliegue de sus instancias con Ansible]]
 +
<span data-link_translate_en_title="Deploy your instances with Ansible"  data-link_translate_en_url="Deploy your instances with Ansible"></span>[[:en:Deploy your instances with Ansible]][[en:Deploy your instances with Ansible]]
 +
 +
{{#seo:
 +
|title=Deployer vos instances avec Ansible
 +
|title_mode=append
 +
|keywords=these,are,your,keywords
 +
|description=Comment déployer vos instances avec Ansible
 +
|image=Uploaded_file.png
 +
|image_alt=Wiki Logo
 +
}}
 +
 
== Description ==
 
== Description ==
  
Ligne 8 : Ligne 29 :
  
  
== Déploiement d'une instance en une commande avec Ansible ==
+
== Déploiement d'une instance en une commande avec ''Ansible'' ==
  
Vous devrez tout d'abord créer et renseigner/adapter le fichier de configuration ".cloudstack.ini" du module "cs_instance" de Ansible :
+
Vous devrez tout d'abord créer et renseigner/adapter le fichier de configuration ".cloudstack.ini" du module "cs_instance" de '''Ansible''' :
  
 
<pre>
 
<pre>
Ligne 132 : Ligne 153 :
  
 
Ensuite il suffit de créer un fichier de playbook (extension yml / format YAML), comme ci-dessous, en adaptant les valeurs des paramètres (nom de votre instance, nom du réseau, etc.) et les paramètres en eux-mêmes (si vous avez/voulez utliser ou non une paire de clé SSH par exemple) :
 
Ensuite il suffit de créer un fichier de playbook (extension yml / format YAML), comme ci-dessous, en adaptant les valeurs des paramètres (nom de votre instance, nom du réseau, etc.) et les paramètres en eux-mêmes (si vous avez/voulez utliser ou non une paire de clé SSH par exemple) :
 +
 +
Exemple de playbook de déploiement d'une instance en zone avancée :
  
 
<pre>
 
<pre>
Ligne 143 : Ligne 166 :
 
   tasks:
 
   tasks:
  
- name: 'Create Debian instance in Cloud IKOULA One with Ansible Playbook'
+
  - name: 'Create Debian instance in Cloud IKOULA One with Ansible Playbook'
 
     cs_instance:
 
     cs_instance:
 
       name: "<Nom de la VM>"
 
       name: "<Nom de la VM>"
Ligne 156 : Ligne 179 :
 
...
 
...
 
</pre>
 
</pre>
 +
 +
Exemple de playbook de déploiement d'une instance en zone basic (où on remplace simplement le paramètre réseau par celui des security groups et on ajoute le retour post-déploiement de l'adresse ip publique attribuée à la vm) :
 +
 +
<pre>
 +
$ 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
 +
...
 +
</pre>
 +
  
 
Une fois les paramètres et leurs valeurs adapté(e)s, voici un exemple d'exécution du playbook (adaptez le nom de votre fichier playbook au besoin):
 
Une fois les paramètres et leurs valeurs adapté(e)s, voici un exemple d'exécution du playbook (adaptez le nom de votre fichier playbook au besoin):
Ligne 174 : Ligne 228 :
 
</pre>
 
</pre>
  
 
 
[[Catégorie :Cloudstack]]
 
 
[[Catégorie :Cloud public]]
 
[[Catégorie :Cloud public]]
 +
[[Catégorie:API]]
 +
[[Catégorie :Cloud]]

Version actuelle datée du 21 septembre 2021 à 14:26

ro:Implementarea instanțelor cu Ansible ru:Развертывание ваших экземпляров с помощью Ansible 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 es:Despliegue de sus instancias con Ansible en:Deploy your instances with Ansible

Description

Nous allons voir comment déployer rapidement des instance(s) Cloud IKOULA One via l'outils Ansible

Tout d'abord vous devrez installer Ansible (https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) puis le module "cs_instance" (peut être installé via "pip install cs" cf. https://docs.ansible.com/ansible/2.6/modules/cs_instance_module.html) permettant d'utiliser l'API de Cloud Ikoula One, si ce n'est pas déjà fait et disposer d'un compte Cloud IKOULA One.

Ansible est disponible pour la plupart des distributions GNU/Linux, MacOS mais est aussi utilisable via Cygwin par exemple sous Microsoft Windows.


Déploiement d'une instance en une commande avec Ansible

Vous devrez tout d'abord créer et renseigner/adapter le fichier de configuration ".cloudstack.ini" du module "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

Ensuite il suffit de lancer cette commande en adaptant les valeurs des paramètres (nom de votre instance, nom du réseau, etc.) et les paramètres en eux-mêmes (si vous avez/voulez utliser ou non une paire de clé SSH par exemple) :

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

où "<Nom de l’offre de calcul voulu >" correspond au choix à :

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

Voici un exemple ainsi que le retour de son exécution :

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

Dans cet exemple, nous déployons une instance Debian 9 en zone avancée (EU-FR-IKDC1-Z1-ADV), utilisant l'offre de calcul "t1.micro" dans notre réseau nommé "My-Network-Z1" avec notre paire de clés SSH nommée "MY_SSHKEY"

Pour voir l'ensemble des paramètres utilisables et d'autres exemples, vous pouvez utiliser le ansible-doc du module "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]
...

Note : la sortie de la commande est volontairement tronquée du fait de sa longueur.

Déploiement d'une instance avec un playbook Ansible

De la même façon que ci-dessus vous devez tout d'abord créer et renseigner/adapter le fichier de configuration ".cloudstack.ini" du module "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

Ensuite il suffit de créer un fichier de playbook (extension yml / format YAML), comme ci-dessous, en adaptant les valeurs des paramètres (nom de votre instance, nom du réseau, etc.) et les paramètres en eux-mêmes (si vous avez/voulez utliser ou non une paire de clé SSH par exemple) :

Exemple de playbook de déploiement d'une instance en zone avancée :

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

Exemple de playbook de déploiement d'une instance en zone basic (où on remplace simplement le paramètre réseau par celui des security groups et on ajoute le retour post-déploiement de l'adresse ip publique attribuée à 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
...


Une fois les paramètres et leurs valeurs adapté(e)s, voici un exemple d'exécution du playbook (adaptez le nom de votre fichier playbook au besoin):

$ 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