Implante as suas instâncias com Ansible

Fonte: Pt Ikoula wiki
Revisão em 16h32min de 29 de julho de 2021 por Ikbot (discussão | contribs)
Ir para navegação Ir para pesquisar

de:Stellen Sie Ihre Instanzen mit Ansible bereit nl:Implementeer uw instanties met Ansible it:Distribuire le tue istanze con Ansible fr:Deployer vos instances avec Ansible
Este artigo foi traduzido por um sistema de tradução automática. Você pode visualizar a fonte do artigo aqui.

es:Despliegue de sus instancias con Ansible en:Deploy your instances with Ansible

Descrição

Veremos como implementar rapidamente as instâncias do IKOULA One Cloud através da ferramenta Ansible

Primeiro terá de instalar o Ansible (https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) depois o módulo "cs_instance" (pode ser instalado através de "pip install cs" cf. https://docs.ansible.com/ansible/2.6/modules/cs_instance_module.html) permitindo-lhe utilizar a API do Cloud Ikoula One, se ainda não o fez e ter uma conta Cloud IKOULA One.

Ansible está disponível para a maioria das distribuições GNU/Linux, MacOS mas também pode ser usado via Cygwin, por exemplo, sob Microsoft Windows.


Implementar uma instância num único comando com Possível

Terá primeiro de criar e preencher/adaptar o ficheiro de configuração ".cloudstack.ini" do 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

Depois só precisa de executar este comando, adaptando os valores dos parâmetros (nome da sua instância, nome da rede, etc.) e os próprios parâmetros (se tiver/quer utilizar um par de chaves SSH ou não, por exemplo):

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

onde ""<Nom de l’offre de calcul voulu >é a escolha 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)

Aqui está um exemplo e o regresso da sua execução:

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

Neste exemplo, implementamos uma instância Debian 9 na zona avançada (EU-FR-IKDC1-Z1-ADV), usando a oferta de computação "t1.micro" na nossa rede chamada "My-Network-Z1" com o nosso par de chaves SSH chamado "MY_SSHKEY".

Para ver todos os parâmetros utilizáveis e outros exemplos, pode utilizar o ansible-doc do 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: a saída do comando é deliberadamente truncada devido ao seu comprimento.

Implementação de uma instância com um livro de jogo possível

Da mesma forma que acima, deve primeiro criar e preencher/adaptar o ficheiro de configuração ".cloudstack.ini" do módulo "cs_instance" do 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

Depois só precisa de criar um ficheiro playbook (extensão yml / formato YAML), como abaixo, adaptando os valores dos parâmetros (nome da sua instância, nome da rede, etc.) e os próprios parâmetros (se tiver/quer utilizar um par de chaves SSH ou não, por exemplo) :

Exemplo de um livro de jogo para a implantação de uma instância numa zona avançada:

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

Exemplo de um playbook para a implantação de uma instância numa zona básica (onde simplesmente substituímos o parâmetro de rede pelo parâmetro de grupos de segurança e acrescentamos o retorno pós implantação do endereço ip público atribuído ao 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
...


Uma vez adaptados os parâmetros e os seus valores, eis um exemplo de como executar o playbook (adaptar o nome do ficheiro do seu playbook, se necessário):

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