robertdebock.vault_snapshot

Rol de Ansible vault_snapshot

Configura vault_snapshot en Vault.

GitHub GitLab Descargas Versión
github gitlab downloads Versión

Ejemplo de Playbook

Este ejemplo se toma de molecule/default/converge.yml y se prueba en cada envío, solicitud de extracción y lanzamiento.

---
- name: Converge
  hosts: all
  become: true
  gather_facts: true

  pre_tasks:
    - name: Leer el token desde la máquina remota
      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: hourly
          interval_seconds: 3600
          retain: 24
          path_prefix: /opt/vault/snapshots/
          storage_type: local
          local_max_space: 1073741824
        - name: hourly-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: hourly-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

La máquina necesita estar preparada. En CI, esto se hace utilizando molecule/default/prepare.yml:

---
- name: Preparar
  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: Limpiar controladores
      ansible.builtin.meta: flush_handlers

    - name: Iniciar Vault
      ansible.builtin.service:
        name: vault
        state: started

    - name: Inicializar 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: Almacenar la salida de vault_init_raw como YAML
      ansible.builtin.set_fact:
        vault_init: "{{ vault_init_raw.stdout | from_yaml }}"

    - name: Almacenar root_token
      ansible.builtin.copy:
        content: "{{ vault_init.root_token }}"
        dest: /root/.vault-token
        owner: root
        group: root
        mode: "0640"

    - name: Desbloquear 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

También puede ver una explicación completa y un ejemplo sobre cómo usar estos roles.

Variables del Rol

Los valores predeterminados para las variables están establecidos en defaults/main.yml:

---
# archivo predeterminado para vault_snapshot

# Establecer la dirección de la instancia de vault. Similar a `VAULT_ADDR`.
vault_snapshot_address: "https://localhost:8200"

# Establecer un token para conectarse a Vault. Similar a `VAULT_TOKEN`.
vault_snapshot_token: ""

# Una lista de instantáneas para configurar. Consulte `molecule/default/converge.yml` para un ejemplo completo.
vault_snapshot_schedules: []

# ¿Debería deshabilitarse la verificación del certificado SSL?
vault_snapshot_ssl_verify: true

Requisitos

Estado de los roles utilizados

Los siguientes roles se utilizan para preparar un sistema. Puede preparar su sistema de otra manera.

Requisito GitHub GitLab
robertdebock.bootstrap Estado de Construcción GitHub Estado de Construcción GitLab
robertdebock.core_dependencies Estado de Construcción GitHub Estado de Construcción GitLab
robertdebock.hashicorp Estado de Construcción GitHub Estado de Construcción GitLab
robertdebock.vault Estado de Construcción GitHub Estado de Construcción GitLab
robertdebock.vault_configuration Estado de Construcción GitHub Estado de Construcción GitLab

Contexto

Este rol es parte de muchos roles compatibles. Consulte la documentación de estos roles para obtener más información.

Aquí hay un resumen de roles relacionados: dependencias

Compatibilidad

Este rol se ha probado en estas imágenes de contenedor:

contenedor etiquetas
Amazon Candidate
Debian all
EL 9
Fedora 39
Ubuntu all

La versión mínima de Ansible requerida es 2.12, las pruebas se han realizado en:

  • La versión anterior.
  • La versión actual.
  • La versión de desarrollo.

Si encuentra problemas, infórmelos en GitHub.

Licencia

Apache-2.0.

Información del autor

robertdebock

Considere patrocinarme.

Acerca del proyecto

Configure vault_snapshot on Vault.

Instalar
ansible-galaxy install robertdebock.vault_snapshot
Licencia
apache-2.0
Descargas
78
Propietario
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.