Pesquisa de site

Automatize OpenStack usando Ansible


O Ansible oferece flexibilidade única ao automatizar sua infraestrutura.

Demonstrei como gerencio OpenStack usando Terraform em meu artigo anterior. Usar o Terraform como infraestrutura como código (IaC) é uma vantagem significativa, mas também exige que a equipe o apoie. Às vezes, tudo o que você realmente precisa é a capacidade de provisionar a infraestrutura como recursos cronometrados, sem a intenção de construir estruturas de dados duradouras. Quando projeto um ambiente flexível, prefiro a linguagem declarativa do Ansible.

A flexibilidade do Ansible me permite projetar casos de uso que incluem:

  1. Um ambiente de teste cronometrado e que pode ser excluído após o uso.
  2. Um ambiente de treinamento fornecido por um período específico de tempo e depois destruído.
  3. Passar de uma infraestrutura manual para uma automatizada quando o Terraform é difícil porque mapeia sua infraestrutura existente.

Instale o SDK Ansible e OpenStack

Primeiro, você precisa instalar o Ansible e seu SDK. Para isso, você deve ter o Docker ou Podman instalado.

Eu uso a instalação pip do Ansible:

$ python3 -m pip install ansible-navigator --user

O comando ansible-navigator é usado pelo AWX ou Red Hat Ansible Automation Platform para executar playbooks Ansible. Ao contrário dos comandos ad-hoc ansible-playbook ou ansible anteriores, isso cria um contêiner e um ambiente de execução.

Você deve construir seu ambiente de execução com um OpenStack SDK. Para isso recomendo fortemente o artigo de Gineesh Madapparambath sobre como criar um ambiente de execução.

Após a criação, use seu ambiente de execução Ansible para configurar sua imagem:

$ ansible-navigator images

Escolha qual imagem usar e execute um manual:

$ ansible-navigator run main.yaml --stdout

Exemplo de manual

Meu exemplo de manual usa a mesma estrutura que demonstrei em meu artigo Terraform:

$ cat >> main.yaml << EOF
---
- hosts: localhost
  vars:
    flavors:
      - name: "small"
        ram: 4096
        vcpus: 1
      - name: "medium"
        ram: 8096
        vcpus: 2
      - name: "large"
        ram: 16384
        vcpus: 4
      - name: "xlarge"
        ram: 32768
        vcpus: 8

  tasks:
  - name: create flavors
    openstack.cloud.compute_flavor:
      state: present
      name: "{{ item.name }}"
      ram: "{{ item.ram }}"
      vcpus: "{{ item.vcpus }}"
      disk: 0
    loop: 
      - flavors

  - name: create external network
    openstack.cloud.network:
      state: present
      name: "external-network"
      provider_network_type: "flat"
      provider_physical_network: "physnet1"
      external: true

  - name: create external subnet
    openstack.cloud.subnet:
      state: present
      name: "external-subnet"
      network_name: "external-network"
      cidr: "10.0.0.0/8"
      gateway_ip: "10.0.0.1"
      dns_nameservers:
        - "10.0.0.254"
        - "10.0.0.253"
      allocation_pool_start: "10.0.0.2"
      allocation_pool_end: "10.0.254.254"

  - name: create external router
    openstack.cloud.router:
      name: "external-router"
      state: present
      network: "external-network"

  - name: create Cirros image
    openstack.cloud.image:
      name: cirros
      container_format: bare
      disk_format: qcow2
      state: present
      filename: cirros-0.6.1-x86_64-disk.img

  - name: create Demo project
    openstack.cloud.project:
      state: present
      name: "Demo"
      enabled: True

  - name: create demo-user
    openstack.cloud.user:
      state: present
      name: "demo-user"
      password: "demo"
      default_project: "Demo"
EOF

Resultados

Depois de executar o manual, você obtém redes:

(AJ Canlas, CC BY-SA 4.0)

Você também ganha sabores:

(AJ Canlas, CC BY-SA 4.0)

E imagens:

(AJ Canlas, CC BY-SA 4.0)

E um projeto de demonstração:

(AJ Canlas, CC BY-SA 4.0)

A ferramenta certa

Não existe uma única resposta certa ou errada sobre como você automatiza. A maneira como você implementa sua automação depende das necessidades, da infraestrutura, do design do sistema e dos recursos de equipe da sua organização. Selecione uma das excelentes ferramentas de código aberto disponíveis para começar. Esforce-se agora e poupe muito trabalho no futuro.

Artigos relacionados: