vault_snapshot

Ansible роль vault_snapshot

Настройка vault_snapshot на Vault.

GitHub GitLab Загрузки Версия
github gitlab downloads Version

Пример Playbook

Этот пример взят из molecule/default/converge.yml и тестируется при каждом пуше, запросе на вытягивание и релизе.

---
- name: Свести
  hosts: all
  become: true
  gather_facts: true

  pre_tasks:
    - name: Прочитать токен с удаленной машины
      ansible.builtin.slurp:
        src: /root/.vault-token
      register: token_raw

  roles:
    - role: robertdebock.vault_snapshot
      vault_snapshot_token: "{{ token_raw['content'] | b64decode }}"
      vault_snapshot_ssl_verify: false
      vault_snapshot_schedules:
        - name: каждый час
          interval_seconds: 3600
          retain: 24
          path_prefix: /opt/vault/snapshots/
          storage_type: local
          local_max_space: 1073741824
        - name: каждый час-aws
          interval_seconds: 3600
          retain: 24
          path_prefix: /hourly
          storage_type: aws-s3
          aws_s3_bucket: my-bucket
          aws_s3_region: eu-central-1
          aws_access_key_id: some_key
          aws_secret_access_key: some_secret
          aws_s3_enable_kms: false
        - name: каждый час-azure
          interval_seconds: 3600
          retain: 24
          path_prefix: /hourly/
          storage_type: azure-blob
          azure_container_name: my-blob
          azure_account_name: some_account
          azure_account_key: some_key

Машину нужно подготовить. В CI это делается с помощью molecule/default/prepare.yml:

---
- name: Подготовить
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.core_dependencies
    - role: robertdebock.hashicorp
    - role: robertdebock.vault
      vault_type: ent
      vault_hardening_disable_swap: false
    - role: robertdebock.vault_configuration
      vault_configuration_license: "{{ lookup('ansible.builtin.env', 'VAULT_LICENSE') }}"
      vault_configuration_listener_tcp:
        address: "127.0.0.1:8200"
        cluster_address: "127.0.0.1:8201"
        tls_disable: true
      vault_configuration_storage_raft:
        path: "/opt/vault/data"
        node_id: "{{ ansible_hostname }}"

  tasks:
    - name: Сбросить обработчики
      ansible.builtin.meta: flush_handlers

    - name: Запустить Vault
      ansible.builtin.service:
        name: vault
        state: started

    - name: Инициализировать Vault
      ansible.builtin.command:
        cmd: vault operator init -format=yaml
      register: vault_init_raw
      environment:
        VAULT_ADDR: "https://localhost:8200"
        VAULT_SKIP_VERIFY: "true"
      changed_when: true

    - name: Сохранить выходные данные vault_init_raw в формате YAML
      ansible.builtin.set_fact:
        vault_init: "{{ vault_init_raw.stdout | from_yaml }}"

    - name: Сохранить root_token
      ansible.builtin.copy:
        content: "{{ vault_init.root_token }}"
        dest: /root/.vault-token
        owner: root
        group: root
        mode: "0640"

    - name: Разблокировать Vault
      ansible.builtin.command:
        cmd: vault operator unseal {{ item }}
      loop: "{{ vault_init.unseal_keys_b64 }}"
      environment:
        VAULT_ADDR: "https://localhost:8200"
        VAULT_SKIP_VERIFY: "true"
      changed_when: true

Также смотрите полное объяснение и пример о том, как использовать эти роли.

Переменные роли

Значения по умолчанию для переменных установлены в defaults/main.yml:

---
# файл по умолчанию для vault_snapshot

# Установить адрес экземпляра vault. Похож на `VAULT_ADDR`.
vault_snapshot_address: "https://localhost:8200"

# Установить токен для подключения к Vault. Похож на `VAULT_TOKEN`.
vault_snapshot_token: ""

# Список снимков для настройки. Пожалуйста, посмотрите в `molecule/default/converge.yml` для полного примера.
vault_snapshot_schedules: []

# Должна ли быть отключена проверка SSL сертификата?
vault_snapshot_ssl_verify: true

Требования

Состояние используемых ролей

Следующие роли используются для подготовки системы. Вы можете подготовить вашу систему другим способом.

Требования GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.core_dependencies Build Status GitHub Build Status GitLab
robertdebock.hashicorp Build Status GitHub Build Status GitLab
robertdebock.vault Build Status GitHub Build Status GitLab
robertdebock.vault_configuration Build Status GitHub Build Status GitLab

Контекст

Эта роль является частью многих совместимых ролей. Ознакомьтесь с документацией этих ролей для получения дополнительной информации.

Вот обзор связанных ролей: dependencies

Совместимость

Эта роль была протестирована на следующих образах контейнеров:

контейнер теги
Amazon Candidate
Debian все
EL 9
Fedora 39
Ubuntu все

Минимальная версия Ansible, необходимая для работы, - 2.12, тесты проводились на:

  • предыдущей версии.
  • текущей версии.
  • версии для разработки.

Если вы нашли проблемы, пожалуйста, зарегистрируйте их на GitHub.

Лицензия

Apache-2.0.

Информация об авторе

robertdebock

Пожалуйста, рассмотрите возможность финансирования меня.

О проекте

Configure vault_snapshot on Vault.

Установить
ansible-galaxy install robertdebock/ansible-role-vault_snapshot
Лицензия
apache-2.0
Загрузки
67
Владелец
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.