Skip to content

mitmx/timeweb-ansible-collection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mitmx.timeweb

Ansible-коллекция для интеграции с Timeweb Cloud через динамический inventory-плагин mitmx.timeweb.timeweb.


Описание

Коллекция предоставляет inventory-плагин, который получает список серверов из API Timeweb Cloud и динамически формирует инвентарь для Ansible.


Подробности коллекции

Поле Описание
Collection mitmx.timeweb
Inventory Plugin mitmx.timeweb.timeweb
Supported API Endpoint https://api.timeweb.cloud/api/v1/servers
Requirements Python requests, действующий API-токен Timeweb

Установка

Из приватного Git-репозитория (HTTPS):

# requirements.yml
collections:
  - name: https://github.com/mitmx/timeweb-ansible-collection.git
    type: git
    version: main

Установка:

ansible-galaxy collection install -r requirements.yml

Или напрямую:

ansible-galaxy collection install git+https://github.com/mitmx/timeweb-ansible-collection.git

Использование

Создайте inventory-файл, например timeweb.yml:

plugin: mitmx.timeweb.timeweb
api_token: "{{ lookup('env','TIMEWEB_TOKEN') }}"
validate_certs: true

# Необязательные параметры:
# compose:
#   ansible_user: "'root'"
# keyed_groups:
#   - key: region
#     prefix: region_
# groups:
#   running: "'status' in hostvars[inventory_hostname] and hostvars[inventory_hostname]['status'] == 'on'"

Проверка работы:

ansible-inventory -i timeweb.yml --list

Запуск плейбука с этим inventory:

ansible-playbook -i timeweb.yml site.yml

Получение API-токена

  1. Зайдите в свой аккаунт Timeweb Cloud → раздел API токены.
  2. Создайте токен с правами на чтение серверов.
  3. Установите его в переменную окружения:
export TIMEWEB_TOKEN="ваш_api_токен"

Параметры плагина

Параметр Обязателен Значение по умолчанию Описание
plugin Да Должен быть mitmx.timeweb.timeweb
api_token Да API-токен Timeweb Cloud
api_endpoint Нет https://api.timeweb.cloud Базовый URL API
validate_certs Нет true Проверять SSL-сертификаты
compose Нет {} Определение переменных через Jinja2
keyed_groups Нет [] Автосоздание групп по значениям переменных
groups Нет {} Создание групп по условиям

Пример вывода

Результат ansible-inventory --list:

{
  "_meta": {
    "hostvars": {
      "some-server-name-here": {
        "ansible_host": "1.2.3.4",
        "id": 1234567,
        "status": "off",
        "flavor": null,
        "region": "ru-1",
        "tags": [],
        "project": 123
      },
      "another-server-name-here": {
        "ansible_host": "1.2.3.5",
        "id": 1234568,
        "status": "on",
        "flavor": null,
        "region": "ru-3",
        "tags": [],
        "project": 123
      }
    }
  },
  "all": {
    "children": ["ungrouped"]
  }
}

About

Ansible-коллекция, позволяющая настроить dynamic inventory для timeweb

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages