robertdebock.vault_snapshot

Rôle Ansible vault_snapshot

Configurer vault_snapshot sur Vault.

GitHub GitLab Téléchargements Version
github gitlab downloads Version

Exemple de Playbook

Cet exemple est tiré de molecule/default/converge.yml et est testé à chaque push, demande de tirage et publication.

---
- nom: Converger
  hôtes: tous
  devenir: vrai
  rassembler_faits: vrai

  pré_tâches:
    - nom: Lire le token à partir de la machine distante
      ansible.builtin.slurp:
        src: /root/.vault-token
      enregistrer: token_raw

  rôles:
    - rôle: robertdebock.vault_snapshot
      vault_snapshot_token: "{{ token_raw['content'] | b64decode }}"
      vault_snapshot_ssl_verify: faux
      vault_snapshot_schedules:
        - nom: horaire
          interval_seconds: 3600
          retain: 24
          path_prefix: /opt/vault/snapshots/
          storage_type: local
          local_max_space: 1073741824
        - nom: horaire-aws
          interval_seconds: 3600
          retain: 24
          path_prefix: /hourly
          storage_type: aws-s3
          aws_s3_bucket: mon-bucket
          aws_s3_region: eu-central-1
          aws_access_key_id: some_key
          aws_secret_access_key: some_secret
          aws_s3_enable_kms: faux
        - nom: horaire-azure
          interval_seconds: 3600
          retain: 24
          path_prefix: /hourly/
          storage_type: azure-blob
          azure_container_name: mon-blob
          azure_account_name: some_account
          azure_account_key: some_key

La machine doit être préparée. Dans CI, cela se fait en utilisant molecule/default/prepare.yml:

---
- nom: Préparer
  hôtes: tous
  devenir: vrai
  rassembler_faits: faux

  rôles:
    - rôle: robertdebock.bootstrap
    - rôle: robertdebock.core_dependencies
    - rôle: robertdebock.hashicorp
    - rôle: robertdebock.vault
      vault_type: ent
      vault_hardening_disable_swap: faux
    - rôle: 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: vrai
      vault_configuration_storage_raft:
        path: "/opt/vault/data"
        node_id: "{{ ansible_hostname }}"

  tâches:
    - nom: Flusher les gestionnaires
      ansible.builtin.meta: flush_handlers

    - nom: Démarrer Vault
      ansible.builtin.service:
        name: vault
        state: commencé

    - nom: Initialiser Vault
      ansible.builtin.command:
        cmd: vault operator init -format=yaml
      enregistrer: vault_init_raw
      environnement:
        VAULT_ADDR: "https://localhost:8200"
        VAULT_SKIP_VERIFY: "true"
      changed_when: vrai

    - nom: Stocker la sortie de vault_init_raw au format YAML
      ansible.builtin.set_fact:
        vault_init: "{{ vault_init_raw.stdout | from_yaml }}"

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

    - nom: Déverrouiller Vault
      ansible.builtin.command:
        cmd: vault operator unseal {{ item }}
      loop: "{{ vault_init.unseal_keys_b64 }}"
      environnement:
        VAULT_ADDR: "https://localhost:8200"
        VAULT_SKIP_VERIFY: "true"
      changed_when: vrai

Voir aussi une explication complète et un exemple sur comment utiliser ces rôles.

Variables de rôle

Les valeurs par défaut pour les variables sont définies dans defaults/main.yml:

---
# fichier de valeurs par défaut pour vault_snapshot

# Définir l'adresse de l'instance de vault. Semblable à `VAULT_ADDR`.
vault_snapshot_address: "https://localhost:8200"

# Définir un token pour se connecter à Vault. Semblable à `VAULT_TOKEN`.
vault_snapshot_token: ""

# Une liste de snapshots à configurer. Veuillez consulter `molecule/default/converge.yml` pour un exemple complet.
vault_snapshot_schedules: []

# La vérification du certificat SSL doit-elle être désactivée ?
vault_snapshot_ssl_verify: vrai

Exigences

État des rôles utilisés

Les rôles suivants sont utilisés pour préparer un système. Vous pouvez préparer votre système différemment.

Exigence 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

Contexte

Ce rôle fait partie de nombreux rôles compatibles. Consultez la documentation de ces rôles pour plus d'informations.

Voici un aperçu des rôles associés : dépendances

Compatibilité

Ce rôle a été testé sur ces images de conteneurs:

conteneur tags
Amazon Candidate
Debian tous
EL 9
Fedora 39
Ubuntu tous

La version minimale d'Ansible requise est 2.12, des tests ont été réalisés sur :

  • La version précédente.
  • La version actuelle.
  • La version de développement.

Si vous rencontrez des problèmes, veuillez les signaler sur GitHub.

Licence

Apache-2.0.

Informations sur l'auteur

robertdebock

Veuillez envisager de me soutenir.

À propos du projet

Configure vault_snapshot on Vault.

Installer
ansible-galaxy install robertdebock.vault_snapshot
Licence
apache-2.0
Téléchargements
78
Propriétaire
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.