0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Ниже приведён пример автоматизации создания дроплетов (серверов) Digital Ocean, а также генерация файлов инвентаризации из шаблона при помощи Ansible.</strong></p>
1
<p><strong>Ниже приведён пример автоматизации создания дроплетов (серверов) Digital Ocean, а также генерация файлов инвентаризации из шаблона при помощи Ansible.</strong></p>
2
<h2>Пример файла playbook.yml</h2>
2
<h2>Пример файла playbook.yml</h2>
3
- 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<h2>Пример файла requirements.yml</h2>
3
- 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<h2>Пример файла requirements.yml</h2>
4
roles: [] # Коллекция для работы с DO collections: - community.digitalocean<h2>Пример файла vault-password</h2>
4
roles: [] # Коллекция для работы с DO collections: - community.digitalocean<h2>Пример файла vault-password</h2>
5
<h2>Пример файла .gitignore</h2>
5
<h2>Пример файла .gitignore</h2>
6
# Файл с паролем должен быть в игноре и не попадать в репозиторий # Закомментирован, чтобы показать пример # vault-password<h2>Пример файла example.txt</h2>
6
# Файл с паролем должен быть в игноре и не попадать в репозиторий # Закомментирован, чтобы показать пример # vault-password<h2>Пример файла example.txt</h2>
7
<h2>Пример файла host_vars/localhost/vars.yml</h2>
7
<h2>Пример файла host_vars/localhost/vars.yml</h2>
8
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 }}"<h2>Пример файла host_vars/localhost/vault.yml</h2>
8
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 }}"<h2>Пример файла host_vars/localhost/vault.yml</h2>
9
$ANSIBLE_VAULT;1.1;AES256 62326639633236353537626166386639376164346137383433333862356138343734333732373161 3033383764303031393337633131613363383737306133340a396466326130663533393036313762 33623532303134323261326239383336663961616364316335323432383830353637343961643035 6663643732626563310a326364396164303239663332646435353336386263303138366331366430 62663130666564396462666135306137396438346336303032336161363133353366<h2>Пример файла templates/example.j2</h2>
9
$ANSIBLE_VAULT;1.1;AES256 62326639633236353537626166386639376164346137383433333862356138343734333732373161 3033383764303031393337633131613363383737306133340a396466326130663533393036313762 33623532303134323261326239383336663961616364316335323432383830353637343961643035 6663643732626563310a326364396164303239663332646435353336386263303138366331366430 62663130666564396462666135306137396438346336303032336161363133353366<h2>Пример файла templates/example.j2</h2>
10
{# выполнение цикла #} {% for my_item in my_list %} {{my_item.name}} {{my_item.description}} {% endfor %}
10
{# выполнение цикла #} {% for my_item in my_list %} {{my_item.name}} {{my_item.description}} {% endfor %}