robertdebock.vault_snapshot

Rola Ansible vault_snapshot

Skonfiguruj vault_snapshot w Vault.

GitHub GitLab Pobrania Wersja
github gitlab downloads Wersja

Przykładowy Playbook

Ten przykład pochodzi z molecule/default/converge.yml i jest testowany przy każdym przesłaniu, prośbie o ściągnięcie, oraz wydaniu.

---
- name: Połączenie
  hosts: all
  become: true
  gather_facts: true

  pre_tasks:
    - name: Odczytaj token z maszyny zdalnej
      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: co godzinę
          interval_seconds: 3600
          retain: 24
          path_prefix: /opt/vault/snapshots/
          storage_type: lokalny
          local_max_space: 1073741824
        - name: co godzinę-aws
          interval_seconds: 3600
          retain: 24
          path_prefix: /co-godzinę
          storage_type: aws-s3
          aws_s3_bucket: moja-koszyk
          aws_s3_region: eu-central-1
          aws_access_key_id: jakiś_klucz
          aws_secret_access_key: jakieś_tajny
          aws_s3_enable_kms: false
        - name: co godzinę-azure
          interval_seconds: 3600
          retain: 24
          path_prefix: /co-godzinę/
          storage_type: azure-blob
          azure_container_name: moja-blob
          azure_account_name: jakiś_konto
          azure_account_key: jakiś_klucz

Maszyna musi być przygotowana. W CI odbywa się to za pośrednictwem molecule/default/prepare.yml:

---
- name: Przygotowanie
  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: Opróżnij handler
      ansible.builtin.meta: flush_handlers

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

    - name: Zainicjalizuj 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: Zapisz wyjście vault_init_raw jako YAML
      ansible.builtin.set_fact:
        vault_init: "{{ vault_init_raw.stdout | from_yaml }}"

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

    - name: Otwórz 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

Zobacz także pełne wyjaśnienie i przykład jak używać tych ról.

Zmienne roli

Domyślne wartości dla zmiennych są ustawione w defaults/main.yml:

---
# domyślny plik dla vault_snapshot

# Ustaw adres instancji vault. Podobnie jak `VAULT_ADDR`.
vault_snapshot_address: "https://localhost:8200"

# Ustaw token do połączenia z Vault. Podobnie jak `VAULT_TOKEN`.
vault_snapshot_token: ""

# Lista snapshotów do skonfigurowania. Zobacz `molecule/default/converge.yml` dla pełnego przykładu.
vault_snapshot_schedules: []

# Czy weryfikacja certyfikatu SSL powinna być wyłączona?
vault_snapshot_ssl_verify: true

Wymagania

Stan używanych ról

Poniższe role są używane do przygotowania systemu. Możesz przygotować swój system w inny sposób.

Wymaganie GitHub GitLab
robertdebock.bootstrap Status Budowy GitHub Status Budowy GitLab
robertdebock.core_dependencies Status Budowy GitHub Status Budowy GitLab
robertdebock.hashicorp Status Budowy GitHub Status Budowy GitLab
robertdebock.vault Status Budowy GitHub Status Budowy GitLab
robertdebock.vault_configuration Status Budowy GitHub Status Budowy GitLab

Kontekst

Ta rola jest częścią wielu kompatybilnych ról. Zobacz dokumentację tych ról w celu uzyskania dalszych informacji.

Oto przegląd powiązanych ról: dependencies

Kompatybilność

Ta rola została przetestowana na tych obrazach kontenerów:

kontener tagi
Amazon Kandydat
Debian wszystkie
EL 9
Fedora 39
Ubuntu wszystkie

Minimalna wymagana wersja Ansible to 2.12, testy zostały przeprowadzone na:

  • Poprzedniej wersji.
  • Bieżącej wersji.
  • Wersji deweloperskiej.

Jeśli znajdziesz problemy, zgłoś je na GitHubie.

Licencja

Apache-2.0.

Informacje o autorze

robertdebock

Zważ, aby wspierać mnie.

O projekcie

Configure vault_snapshot on Vault.

Zainstaluj
ansible-galaxy install robertdebock.vault_snapshot
Licencja
apache-2.0
Pobrania
78
Właściciel
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.