Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Инфраструктура как код DevOps: Управление инфраструктурой

Ниже приведён пример автоматизации создания дроплетов (серверов) Digital Ocean, а также генерация файлов инвентаризации из шаблона при помощи Ansible.

Пример файла playbook.yml

- name: Create Digital Ocean droplets
  # Запросы на создание выполняются на локальной машине
  # и стучатся в API Digital ocean
  hosts: localhost
  connection: local
  # Не используем факты с рабочей машины, поэтому отключаем
  gather_facts: no
  tasks:
    - name: Register DO ssh key
      # Регистрируем список ключей
      register: do_ssh_key
      community.digitalocean.digital_ocean_sshkey_info:
        # Все обращения к DO через модуль выполняются с использованием токена
        # Другой вариант - задавать переменную окружения DO_API_TOKEN
        oauth_token: "{{ do_oauth_token }}"

    - name: Create a new droplets
      community.digitalocean.digital_ocean_droplet:
        state: active
        wait: yes
        unique_name: yes
        wait_timeout: 120
        name: "example-droplet"
        oauth_token: "{{ do_oauth_token }}"
        # https://slugs.do-api.dev/
        size: "s-1vcpu-1gb"
        region: "ams3"
        image: "docker-20-04"
        # Добавляем в дроплет ключи, это может быть один ключ или несколько.
        # Для добавления нужны их ID
        ssh_keys:
          - "{{ do_ssh_key.data.0.id }}"
      # Если нам нужно нужно создать отдельные дроплеты, то используем цикл
      # with_items: "{{ droplets_params | list }}"

    - name: Create example from loop template
      # Файл будет искаться в tempplates
      # Переменные внутри файла будут браться из объявленных,
      # либо можно объявить свои переменные через vars
      # vars:
      #   my_list:
      #     - name: abc
      #       description: example
      template:
        src: example.j2
        dest: example.txt

Пример файла requirements.yml

roles: []
# Коллекция для работы с DO
collections:
- community.digitalocean

Пример файла vault-password

vault-password

Пример файла .gitignore

# Файл с паролем должен быть в игноре и не попадать в репозиторий
# Закомментирован, чтобы показать пример
# vault-password

Пример файла example.txt

test test

Пример файла host_vars/localhost/vars.yml

config:
  param1: value1
  param2: value2
  param3: value2
my_list:
  - name: value1
    description: example description 1
  - name: value2
    description: example description 2
# Шифрованная переменная находится в файле, ссылаемся на нее
some_token: "{{ vault_some_token }}"

Пример файла host_vars/localhost/vault.yml

$ANSIBLE_VAULT;1.1;AES256
62326639633236353537626166386639376164346137383433333862356138343734333732373161
3033383764303031393337633131613363383737306133340a396466326130663533393036313762
33623532303134323261326239383336663961616364316335323432383830353637343961643035
6663643732626563310a326364396164303239663332646435353336386263303138366331366430
62663130666564396462666135306137396438346336303032336161363133353366

Пример файла templates/example.j2

{# выполнение цикла #}
{% for my_item in my_list %}
{{my_item.name}} {{my_item.description}}
{% endfor %}

Домашнее задание

hexlet program download devops-for-programmers as-a-code

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»