https://github.com/mitmx/timeweb-ansible-collection
Коллекция, позволяющая настроить ansible dynamic inventory для timeweb
https://github.com/mitmx/timeweb-ansible-collection
Last synced: 1 day ago
JSON representation
Коллекция, позволяющая настроить ansible dynamic inventory для timeweb
- Host: GitHub
- URL: https://github.com/mitmx/timeweb-ansible-collection
- Owner: mitmx
- License: unlicense
- Created: 2026-03-12T22:22:39.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-12T22:57:10.000Z (3 months ago)
- Last Synced: 2026-03-13T05:04:42.155Z (3 months ago)
- Language: Python
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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):
```yaml
# requirements.yml
collections:
- name: https://github.com/mitmx/timeweb-ansible-collection.git
type: git
version: main
```
Установка:
```bash
ansible-galaxy collection install -r requirements.yml
```
Или напрямую:
```bash
ansible-galaxy collection install git+https://github.com/mitmx/timeweb-ansible-collection.git
```
---
## Использование
Создайте inventory-файл, например `timeweb.yml`:
```yaml
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'"
```
Проверка работы:
```bash
ansible-inventory -i timeweb.yml --list
```
Запуск плейбука с этим inventory:
```bash
ansible-playbook -i timeweb.yml site.yml
```
---
## Получение API-токена
1. Зайдите в свой аккаунт Timeweb Cloud → раздел **API токены**.
2. Создайте токен с правами на чтение серверов.
3. Установите его в переменную окружения:
```bash
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`:
```json
{
"_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"]
}
}
```