venafi.ansible_role_venafi
:warning: Dieses gemeinschaftlich unterstützte Open-Source-Projekt hat sein ENDE erreicht und erhält nur noch sicherheitsrelevante Updates und kritische Fehlerbehebungen. Alle Funktionalitäten dieses Projekts (und mehr) sind in der Ansible Collection für Venafi verfügbar, die aktiv weiterentwickelt wird. Der Wechsel ist einfach. Installieren Sie die Sammlung venafi.machine_identity
über Ansible Galaxy und ersetzen Sie role: venafi.ansible_role_venafi
durch role: venafi.machine_identity.certificate
in Ihren Playbooks. Bitte wechseln Sie so bald wie möglich.
Venafi Rolle für Ansible
Diese Lösung fügt Red Hat Ansible die Möglichkeit zur Zertifikatsregistrierung hinzu, indem sie nahtlos mit der Venafi Trust Protection Platform oder Venafi as a Service integriert wird. Dies gewährleistet die Einhaltung der Unternehmenssicherheitsrichtlinien und bietet Transparenz bei der Ausstellung von Zertifikaten im gesamten Unternehmen.
:red_car: Testen Sie heute unsere Integrationsbeispiele
Lassen Sie sich schrittweise zeigen, wie Sie Zertifikate zu Ihrer Infrastructure as Code-Automatisierung mit Ansible hinzufügen.
HINWEIS Wenn Sie kein Beispiel für ein Produkt sehen, das Sie verwenden, schauen Sie später wieder vorbei. Wir arbeiten hart daran, weitere Integrationsbeispiele hinzuzufügen.
Anforderungen
Überprüfen Sie die Venafi Voraussetzungen, installieren Sie dann Ansible und VCert-Python (v0.10.0 oder höher) mit pip
:
pip install ansible vcert --upgrade
Verwendung mit Ansible Galaxy
Für weitere Informationen zu Ansible Galaxy besuchen Sie https://galaxy.ansible.com/docs/using/installing.html
Installieren Sie die Venafi Rolle für Ansible aus Ansible Galaxy:
ansible-galaxy install venafi.ansible_role_venafi
Erstellen Sie die
credentials.yml
und fügen Sie die Verbindungsparameter hinzu:Trust Protection Platform:
cat <<EOF >>credentials.yml access_token: 'p0WTt3sDPbzm2BDIkoJROQ==' url: 'https://tpp.venafi.example' zone: "DevOps\\Ansible" trust_bundle: "/path/to/bundle.pem" EOF
Venafi as a Service:
cat <<EOF >>credentials.yml token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' zone: 'Business App\\Enterprise CIT' EOF
Die Venafi Rolle für Ansible unterstützt die folgenden Verbindungs- und Zugangseinstellungen:
Variablenname Beschreibung access_token
Zugangstoken der Trust Protection Platform für die "ansible-by-venafi" API-Anwendung password
[VERALTET] Passwort für die Trust Protection Platform WebSDK, verwenden Sie nach Möglichkeit access_token
test_mode
Wenn "true", arbeitet die Rolle, ohne sich mit der Trust Protection Platform oder Venafi as a Service zu verbinden token
API-Schlüssel für Venafi as a Service trust_bundle
Textdatei mit Vertrauensanker-Zertifikaten im PEM-Format (Text), in der Regel erforderlich für die Trust Protection Platform url
URL des Venafi-Dienstes (z. B. "https://tpp.venafi.example"), in der Regel nur anwendbar auf die Trust Protection Platform user
[VERALTET] Benutzername für die Trust Protection Platform WebSDK, verwenden Sie nach Möglichkeit access_token
zone
Richtlinienordner für TPP oder Anwendungsname und Alias für die Ausstellungsvorlage für VaaS (z. B. "Business App\Enterprise CIT") Verwenden Sie
ansible-vault
, um die Dateicredentials.yml
mit einem Passwort zu verschlüsseln. Dies ist optional, wird jedoch dringend empfohlen. Solange Sie das Passwort wissen, können Sie die Datei jederzeit entschlüsseln, um Änderungen vorzunehmen, und sie dann erneut verschlüsseln. Besuchen Sie https://docs.ansible.com/ansible/latest/user_guide/vault.html für weitere Informationen.ansible-vault encrypt credentials.yml
Schreiben Sie ein einfaches Playbook, z. B.
sample.yml
.- hosts: localhost roles: - role: venafi.ansible_role_venafi certificate_cert_dir: "/tmp/etc/ssl/{{ certificate_common_name }}"
Führen Sie das Playbook aus.
ansible-playbook sample.yml --ask-vault-pass
Das Ausführen des Playbooks erzeugt ein Zertifikat und platziert es im Verzeichnis /tmp/etc/ssl/. Der Parameter
--ask-vault-pass
ist erforderlich, wenn Sie die Dateicredentials.yml
verschlüsselt haben. Zusätzliche Playbook-Variablen können hinzugefügt werden, um Eigenschaften des Zertifikats und des Schlüsselpaares, Dateispeicherorte und um Standardverhalten zu überschreiben.Variablenname Beschreibung credentials_file
Name der Datei, die die Venafi-Zugangsdaten und Verbindungseinstellungen enthält
Standard:credentials.yml
certificate_common_name
Allgemeiner Name für das angeforderte Zertifikat.
Standard:"{{ ansible_fqdn }}"
certificate_alt_name
Kommagetrennte Liste von Subject Alternative Names, die für das Zertifikat angefordert werden sollen. Jeden Wert mit dem SAN-Typ voranstellen.
Beispiel:"DNS:host.example.com,IP:10.20.30.40,email:[email protected]"
certificate_privatekey_type
Schlüsselalgorithmus, "RSA" oder "ECDSA"
Standard:"RSA"
(von VCert)certificate_privatekey_size
Schlüssellänge in Bit für RSA-Schlüssel
Standard:"2048"
(von VCert)certificate_privatekey_curve
Elliptische Kurve für ECDSA-Schlüssel
Standard:"P251"
(von VCert)certificate_privatekey_passphrase
Passwort zur Verschlüsselung des privaten Schlüssels certificate_chain_option
Gibt an, ob das Wurzel-CA-Zertifikat "last"
(Standard) oder"first"
in der Kette erscheintcertificate_cert_dir
Lokales übergeordnetes Verzeichnis, in dem die kryptografischen Assets gespeichert werden
Standard:"/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path
Lokales Verzeichnis, in dem Zertifikatsdateien gespeichert werden
Standard:{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_chain_path
Lokales Verzeichnis, in dem Zertifikatketten-Dateien gespeichert werden
Standard:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path
Lokales Verzeichnis, in dem private Schlüsseldaten gespeichert werden
Standard:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path
Lokales Verzeichnis, in dem Zertifikatanforderungsdateien gespeichert werden
Standard:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
certificate_remote_execution
Gibt an, ob kryptografische Assets remote oder lokal generiert und dann auf den Remote-Host provisioniert werden
Standard:false
certificate_remote_cert_path
Verzeichnis auf dem Remote-Host, in dem Zertifikatsdateien gespeichert werden
Standard:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path
Verzeichnis auf dem Remote-Host, in dem Zertifikatketten-Dateien gespeichert werden
Standard:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path
Verzeichnis auf dem Remote-Host, in dem private Schlüsseldaten gespeichert werden
Standard:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_copy_private_key_to_remote
Gibt an, ob die private Schlüsseldaten auf den Remote-Host kopiert werden sollen
Standard:true
certificate_before_expired_hours
Anzahl der Stunden vor dem Verfall des Zertifikats, bevor es erneuert werden kann
Standard:72
certificate_renew
Gibt an, ob das Zertifikat erneuert werden soll, wenn es sich im „before_expired_hours“-Fenster befindet, wenn das Playbook ausgeführt wird
Standard:true
certificate_force
Gibt an, ob bei jedem Ausführen des Playbooks ein neues Zertifikat angefordert werden soll
Standard:false
Standardwerte sind in der Datei defaults/main.yml definiert.
Vorbereitung einer Docker-Demo-Umgebung für das Ausführen von Ansible
(Optional) Bereiten Sie die Demoumgebung vor. Wenn Sie Ihr eigenes Inventar verwenden möchten, aktualisieren Sie die Datei tests/inventory.
Um unser Test-/Demo-Playbook auszuführen, benötigen Sie die Docker-Provisionierungsrolle. Laden Sie sie in das Verzeichnis
tests/roles/provision_docker
herunter:git clone https://github.com/chrismeyersfsu/provision_docker.git tests/roles/provision_docker
Bauen Sie dann die benötigten Docker-Images für das Demoplaybook:
docker build ./tests --tag local-ansible-test
Demo-Zertifikate werden im Verzeichnis
/tmp/ansible/etc/ssl
auf dem Ansible-Host gespeichert. Von dort aus werden sie in das Verzeichnis/etc/ssl/
der Remote-Hosts verteilt.Generieren Sie eine Zugangsdaten-Datei für entweder Trust Protection Platform oder Venafi as a Service, wie im obigen Abschnitt beschrieben.
Führen Sie das Ansible-Playbook aus (entfernen Sie
docker_demo=true
, wenn Sie Ihr eigenes Inventar verwenden möchten). Der Inhalt voncredentials.yml
wird verwendet, um zu entscheiden, ob die Trust Protection Platform oder Venafi as a Service verwendet wird. Wenn Sie den Parametertoken
setzen, geht das Playbook davon aus, dass Sie Venafi as a Service verwenden. Wenn Sie die Parameteraccess_token
oderpassword
setzen, geht das Playbook davon aus, dass Sie die Trust Protection Platform verwenden.ansible-playbook -i tests/inventory \ tests/venafi-playbook-example.yml \ --extra-vars "credentials_file=credentials.yml docker_demo=true" \ --ask-vault-pass
Sie werden aufgefordert, das Passwort zum Entschlüsseln von
credentials.yml
einzugeben, wie zuvor. Die Quelldatei für die Zugangsdaten kann durch die credentials_file-Variable überschrieben werden, und dies kann über die Befehlszeile unter Verwendung des Parameters--extra-vars
wie gezeigt angegeben werden.
Beispiel-Playbook
- hosts: servers
roles:
- role: "ansible-role-venafi"
certificate_common_name: "{{ ansible_fqdn }}.venafi.example.com"
certificate_cert_dir: "/tmp/ansible/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_chain_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
# Wo das venafi_certificate Modul ausgeführt werden soll. Wenn auf false gesetzt, wird das Zertifikat
# auf dem Ansible-Master-Host erstellt und dann auf den Remote-Server kopiert.
certificate_remote_execution: false
# Remote-Standort, wo das Zertifikat platziert werden soll.
certificate_remote_cert_dir: "/etc/ssl"
certificate_remote_cert_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.key"
# Auf false setzen, wenn Sie den privaten Schlüssel nicht an den Remote-Standort kopieren möchten.
certificate_copy_private_key_to_remote: true
Für Playbook-Beispiele schauen Sie sich die Datei venafi-playbook-example.yml an. Für Rollenbeispiele schauen Sie sich die Datei venafi-role-playbook-example.yml an.
Für weitere Informationen zur Verwendung von Rollen besuchen Sie https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html
Lizenz
Copyright © Venafi, Inc. Alle Rechte vorbehalten.
Diese Lösung ist lizenziert unter der Apache License, Version 2.0. Siehe LICENSE
für den vollständigen Lizenztext.
Bitte richten Sie Fragen/Kommentare an opensource@venafi.com.
Streamline machine identity (certificate and key) acquisition using Venafi vcert.
ansible-galaxy install venafi.ansible_role_venafi