venafi.ansible_role_venafi
:warning: Ten projekt otwartoźródłowy wspierany przez społeczność osiągnął KRES ŻYCIA i będzie otrzymywał jedynie aktualizacje związane z bezpieczeństwem oraz krytyczne poprawki błędów. Cała funkcjonalność tego projektu (i więcej) jest dostępna w Zbiorze Ansible dla Venafi, który jest w aktywnym rozwoju. Przejście na niego jest łatwe, wystarczy zainstalować zbiór venafi.machine_identity
za pomocą Ansible Galaxy i zastąpić role: venafi.ansible_role_venafi
z role: venafi.machine_identity.certificate
w swoich playbookach. Prosimy o przejście w dogodnym dla Ciebie czasie.
Rola Venafi dla Ansible
To rozwiązanie dodaje możliwości rejestracji certyfikatów do Red Hat Ansible poprzez bezproblemową integrację z Venafi Trust Protection Platform lub Venafi jako usługa w sposób, który zapewnia zgodność z polityką bezpieczeństwa w firmie oraz zapewnia przejrzystość w zakresie wydawania certyfikatów w skali przedsiębiorstwa.
:red_car: Przetestuj nasze przykłady integracji już dziś
Pokażemy Ci krok po kroku, jak dodawać certyfikaty do Twojej automatyzacji Infrastruktura jako kod z Ansible.
Uwaga Jeśli nie widzisz przykładu dla używanego przez Ciebie produktu, sprawdź później. Pracujemy nad dodaniem większej liczby przykładów integracji.
Wymagania
Przejrzyj wymagania Venafi, a następnie zainstaluj Ansible i VCert-Python (w wersji 0.10.0 lub wyższej) za pomocą pip
:
pip install ansible vcert --upgrade
Używanie z Ansible Galaxy
Aby uzyskać więcej informacji na temat Ansible Galaxy, odwiedź https://galaxy.ansible.com/docs/using/installing.html
Zainstaluj Rolę Venafi dla Ansible z Ansible Galaxy:
ansible-galaxy install venafi.ansible_role_venafi
Utwórz plik
credentials.yml
i wypełnij go danymi połączeniowymi: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 jako usługa:
cat <<EOF >>credentials.yml token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' zone: 'Business App\\Enterprise CIT' EOF
Rola Venafi dla Ansible obsługuje następujące ustawienia połączenia i dane uwierzytelniające:
Nazwa zmiennej Opis access_token
Token dostępu do Trust Protection Platform dla aplikacji API "ansible-by-venafi" password
[DEPREKOWANE] Hasło WebSDK Trust Protection Platform, jeśli to możliwe, użyj access_token
test_mode
Gdy "prawda", rola działa bez połączenia z Trust Protection Platform lub Venafi jako usługa token
Klucz API Venafi jako usługa trust_bundle
Plik tekstowy zawierający certyfikaty zaufania w formacie PEM (tekstowym), zazwyczaj wymagany dla Trust Protection Platform url
URL usługi Venafi (np. "https://tpp.venafi.example"), zazwyczaj dotyczy tylko Trust Protection Platform user
[DEPREKOWANE] Nazwa użytkownika WebSDK Trust Protection Platform, jeśli to możliwe, użyj access_token
zone
Folder polityki dla TPP lub nazwa aplikacji i alias szablonu wydania dla VaaS (np. "Business App\Enterprise CIT") Użyj
ansible-vault
, aby zaszyfrować plikcredentials.yml
przy użyciu hasła. To jest opcjonalne, ale zdecydowanie zalecane. Tak długo, jak znasz hasło, zawsze możesz odszyfrować plik, aby wprowadzić zmiany, a następnie ponownie go zaszyfrować. Aby uzyskać więcej informacji, przejdź do https://docs.ansible.com/ansible/latest/user_guide/vault.html.ansible-vault encrypt credentials.yml
Napisz prosty playbook, na przykład
sample.yml
.- hosts: localhost roles: - role: venafi.ansible_role_venafi certificate_cert_dir: "/tmp/etc/ssl/{{ certificate_common_name }}"
Uruchom playbook.
ansible-playbook sample.yml --ask-vault-pass
Uruchomienie playbooka wygeneruje certyfikat i umieści go w folderze w katalogu /tmp/etc/ssl/. Parametr
--ask-vault-pass
jest potrzebny, jeśli zaszyfrowałeś plikcredentials.yml
. Dodatkowe zmienne playbooka mogą być dodane, aby określić właściwości certyfikatu i pary kluczy, lokalizacje plików oraz nadpisać domyślne zachowania.Nazwa zmiennej Opis credentials_file
Nazwa pliku zawierającego dane uwierzytelniające i ustawienia połączenia Venafi
Domyślnie:credentials.yml
certificate_common_name
Nazwa ogólna do zażądania certyfikatu.
Domyślnie:"{{ ansible_fqdn }}"
certificate_alt_name
Lista Alternatywnych Nazw Własności do zażądania certyfikatu, oddzielona przecinkami. Każdą wartość prefiksuj typem SAN.
Przykład:"DNS:host.example.com,IP:10.20.30.40,email:[email protected]"
certificate_privatekey_type
Algorytm klucza, "RSA" lub "ECDSA"
Domyślnie:"RSA"
(z VCert)certificate_privatekey_size
Rozmiar klucza w bitach dla kluczy RSA
Domyślnie:"2048"
(z VCert)certificate_privatekey_curve
Krzywa eliptyczna dla kluczy ECDSA
Domyślnie:"P251"
(z VCert)certificate_privatekey_passphrase
Hasło do szyfrowania klucza prywatnego certificate_chain_option
Określa, czy certyfikat główny CA pojawia się jako "ostatni"
(domyślnie) czy"pierwszy"
w pliku łańcuchacertificate_cert_dir
Lokalne główne katalog, w którym będą przechowywane zasoby kryptograficzne
Domyślnie:"/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path
Lokalne katalog, w którym będą przechowywane pliki certyfikatów
Domyślnie:{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem
certificate_chain_path
Lokalne katalog, w którym będą przechowywane pliki łańcuchów certyfikatów
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path
Lokalne katalog, w którym będą przechowywane pliki kluczy prywatnych
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path
Lokalne katalog, w którym będą przechowywane pliki żądań podpisania certyfikatu
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
certificate_remote_execution
Określa, czy zasoby kryptograficzne będą generowane zdalnie, czy lokalnie, a następnie dostarczane do zdalnego hosta
Domyślnie:false
certificate_remote_cert_path
Katalog na zdalnym hoście, w którym będą przechowywane pliki certyfikatów
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path
Katalog na zdalnym hoście, w którym będą przechowywane pliki łańcuchów certyfikatów
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path
Katalog na zdalnym hoście, w którym będą przechowywane pliki kluczy prywatnych
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_copy_private_key_to_remote
Określa, czy plik klucza prywatnego powinien być kopiowany na zdalny host
Domyślnie:true
certificate_before_expired_hours
Liczba godzin przed wygaśnięciem certyfikatu, kiedy może być on odnowiony
Domyślnie:72
certificate_renew
Określa, czy certyfikat ma być odnawiany, jeśli jest w oknie "before_expired_hours" podczas uruchamiania playbooka
Domyślnie:true
certificate_force
Określa, czy żądać nowego certyfikatu za każdym razem, gdy uruchamiany jest playbook
Domyślnie:false
Domyślne wartości są zdefiniowane w pliku defaults/main.yml.
Przygotowanie środowiska demo Docker do uruchamiania Ansible
(Opcjonalnie) Przygotuj środowisko demo. Jeśli chcesz użyć własnego inwentarza, zaktualizuj plik tests/inventory.
Aby uruchomić nasze testowe/demo playbook, będziesz potrzebować roli provisionowania Docker. Pobierz ją do katalogu
tests/roles/provision_docker
:git clone https://github.com/chrismeyersfsu/provision_docker.git tests/roles/provision_docker
A następnie zbuduj obrazy Docker potrzebne do demo playbook:
docker build ./tests --tag local-ansible-test
Demo certyfikaty będą umieszczane w katalogu
/tmp/ansible/etc/ssl
na hoście Ansible. Stamtąd będą dystrybuowane do katalogu/etc/ssl/
zdalnych hostów.Wygeneruj plik danych uwierzytelniających dla Trust Protection Platform lub Venafi jako usługa, zgodnie z opisem w powyższej sekcji.
Uruchom playbook Ansible (usuń
docker_demo=true
, jeśli chcesz użyć własnego inwentarza). Zawartośćcredentials.yml
zostanie użyta do decyzji, czy używana jest Trust Protection Platform, czy Venafi jako usługa. Jeśli ustawisz parametrtoken
, playbook zakłada, że używasz Venafi jako usługa. Jeśli ustawisz parametryaccess_token
lubpassword
, playbook zakłada, że używasz Trust Protection Platform.ansible-playbook -i tests/inventory \ tests/venafi-playbook-example.yml \ --extra-vars "credentials_file=credentials.yml docker_demo=true" \ --ask-vault-pass
Zostaniesz poproszony o hasło do odszyfrowania
credentials.yml
, jak wcześniej. Możesz nadpisać plik źródłowy dla danych uwierzytelniających używając zmiennej credentials_file, którą można określić w wierszu poleceń za pomocą parametru--extra-vars
, jak pokazano.
Przykładowy 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"
# Gdzie wykonać moduł venafi_certificate. Jeśli ustawione na false, certyfikat zostanie
# utworzony na hoście mistrza Ansible, a następnie skopiowany na zdalny serwer.
certificate_remote_execution: false
# Zdalna lokalizacja, gdzie umieścić certyfikat.
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"
# Ustaw na false, jeśli nie chcesz kopiować klucza prywatnego do zdalnej lokalizacji.
certificate_copy_private_key_to_remote: true
Aby zobaczyć przykłady playbooków, zobacz plik venafi-playbook-example.yml. Aby zobaczyć przykłady ról, zajrzyj do pliku venafi-role-playbook-example.yml.
Aby uzyskać więcej informacji na temat używania ról, odwiedź https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html.
Licencja
Copyright © Venafi, Inc. Wszelkie prawa zastrzeżone.
To rozwiązanie jest licencjonowane na mocy Licencji Apache, Wersja 2.0. Zobacz plik LICENSE
, aby zapoznać się z pełnym tekstem licencji.
Proszę kierować pytania/komentarze na adres opensource@venafi.com.
Streamline machine identity (certificate and key) acquisition using Venafi vcert.
ansible-galaxy install venafi.ansible_role_venafi