robertdebock.vault_snapshot
Rol de Ansible vault_snapshot
Configura vault_snapshot en Vault.
| GitHub | GitLab | Descargas | 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
- paquetes pip listados en requirements.txt.
 
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 | ||
| robertdebock.core_dependencies | ||
| robertdebock.hashicorp | ||
| robertdebock.vault | ||
| robertdebock.vault_configuration | 
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:

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
Información del autor
Considere patrocinarme.
ansible-galaxy install robertdebock.vault_snapshot