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_venafiUtwórz plik
credentials.ymli 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" EOFVenafi jako usługa:
cat <<EOF >>credentials.yml token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' zone: 'Business App\\Enterprise CIT' EOFRola Venafi dla Ansible obsługuje następujące ustawienia połączenia i dane uwierzytelniające:
Nazwa zmiennej Opis access_tokenToken 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_tokentest_modeGdy "prawda", rola działa bez połączenia z Trust Protection Platform lub Venafi jako usługa tokenKlucz API Venafi jako usługa trust_bundlePlik tekstowy zawierający certyfikaty zaufania w formacie PEM (tekstowym), zazwyczaj wymagany dla Trust Protection Platform urlURL 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_tokenzoneFolder polityki dla TPP lub nazwa aplikacji i alias szablonu wydania dla VaaS (np. "Business App\Enterprise CIT") Użyj
ansible-vault, aby zaszyfrować plikcredentials.ymlprzy 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.ymlNapisz 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-passUruchomienie playbooka wygeneruje certyfikat i umieści go w folderze w katalogu /tmp/etc/ssl/. Parametr
--ask-vault-passjest 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_fileNazwa pliku zawierającego dane uwierzytelniające i ustawienia połączenia Venafi
Domyślnie:credentials.ymlcertificate_common_nameNazwa ogólna do zażądania certyfikatu.
Domyślnie:"{{ ansible_fqdn }}"certificate_alt_nameLista 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_typeAlgorytm klucza, "RSA" lub "ECDSA"
Domyślnie:"RSA"(z VCert)certificate_privatekey_sizeRozmiar klucza w bitach dla kluczy RSA
Domyślnie:"2048"(z VCert)certificate_privatekey_curveKrzywa eliptyczna dla kluczy ECDSA
Domyślnie:"P251"(z VCert)certificate_privatekey_passphraseHasło do szyfrowania klucza prywatnego certificate_chain_optionOkreśla, czy certyfikat główny CA pojawia się jako "ostatni"(domyślnie) czy"pierwszy"w pliku łańcuchacertificate_cert_dirLokalne główne katalog, w którym będą przechowywane zasoby kryptograficzne
Domyślnie:"/etc/ssl/{{ certificate_common_name }}"certificate_cert_pathLokalne katalog, w którym będą przechowywane pliki certyfikatów
Domyślnie:{{ certificate_cert_dir }}/{{ certificate_common_name }}.pemcertificate_chain_pathLokalne 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_pathLokalne katalog, w którym będą przechowywane pliki kluczy prywatnych
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"certificate_csr_pathLokalne katalog, w którym będą przechowywane pliki żądań podpisania certyfikatu
Domyślnie:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"certificate_remote_executionOkreśla, czy zasoby kryptograficzne będą generowane zdalnie, czy lokalnie, a następnie dostarczane do zdalnego hosta
Domyślnie:falsecertificate_remote_cert_pathKatalog 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_pathKatalog 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_pathKatalog 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_remoteOkreśla, czy plik klucza prywatnego powinien być kopiowany na zdalny host
Domyślnie:truecertificate_before_expired_hoursLiczba godzin przed wygaśnięciem certyfikatu, kiedy może być on odnowiony
Domyślnie:72certificate_renewOkreśla, czy certyfikat ma być odnawiany, jeśli jest w oknie "before_expired_hours" podczas uruchamiania playbooka
Domyślnie:truecertificate_forceOkreśla, czy żądać nowego certyfikatu za każdym razem, gdy uruchamiany jest playbook
Domyślnie:falseDomyś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_dockerA 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/sslna 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.ymlzostanie 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_tokenlubpassword, 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-passZostaniesz 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