Поиск по сайту:

Автоматизируйте OpenStack с помощью Ansible


Ansible предлагает уникальную гибкость при автоматизации вашей инфраструктуры.

В своей предыдущей статье я продемонстрировал, как я управляю OpenStack с помощью Terraform. Использование Terraform as Infrastructure as Code (IaC) является значительным преимуществом, но оно также требует поддержки персонала. Иногда все, что вам действительно нужно, — это возможность предоставлять инфраструктуру в виде синхронизированных ресурсов без намерения создавать долговременные структуры данных. Когда я проектирую гибкую среду, я предпочитаю декларативный язык Ansible.

Гибкость Ansible позволяет мне разрабатывать варианты использования, которые включают:

  1. Тестовая среда, рассчитанная по времени и которую можно удалить после использования.
  2. Среда обучения предусматривалась на определенное время, а затем уничтожалась.
  3. Переход от ручного управления к автоматизированной инфраструктуре при использовании Terraform затруднен, поскольку он отображает существующую инфраструктуру.

Установите Ansible и OpenStack SDK.

Сначала вам необходимо установить Ansible и его SDK. Для этого у вас должен быть установлен Docker или Podman.

Я использую pip-установку Ansible:

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

Команда ansible-navigator используется платформой автоматизации AWX или Red Hat Ansible для запуска сборников сценариев Ansible. В отличие от предыдущих специальных команд ansible-playbook или ansible, здесь создается контейнер и среда выполнения.

Вы должны создать свою среду выполнения с помощью OpenStack SDK. Для этого я настоятельно рекомендую статью Гиниша Мадаппарамбата о том, как создать среду выполнения.

После создания используйте среду выполнения Ansible для настройки образа:

$ ansible-navigator images

Выберите, какой образ использовать, и запустите плейбук:

$ ansible-navigator run main.yaml --stdout

Пример сборника сценариев

В моем образце пьесы используется та же структура, которую я продемонстрировал в своей статье о 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

Полученные результаты

После запуска плейбука вы получаете сети:

(Эй Джей Канлас, CC BY-SA 4.0)

Вы также получаете вкусы:

(Эй Джей Канлас, CC BY-SA 4.0)

И изображения:

(Эй Джей Канлас, CC BY-SA 4.0)

И демо-проект:

(Эй Джей Канлас, CC BY-SA 4.0)

Правильный инструмент

Не существует единственного правильного или неправильного ответа на вопрос, как автоматизировать. Способ реализации автоматизации зависит от потребностей вашей организации, инфраструктуры, конструкции системы и кадровых ресурсов. Выберите один из лучших инструментов с открытым исходным кодом, чтобы начать работу. Приложите усилия сейчас и сэкономьте себе много работы в будущем.

Статьи по данной тематике: