Как перечислить все сертификаты Openssl через ansible-playbook

#ansible #openssl #ansible-inventory #openssl-engine

Вопрос:

Хотите знать, как написать ansible-playbook, чтобы перечислить все сертификаты Openssl на локальном хосте и срок их действия

Комментарии:

1. Первым шагом было бы выяснить, как перечисление сертификатов выполняется вручную (без ansible)

2. Вопрос очень расплывчатый и неопределенный. Однако вы можете воспользоваться преимуществами модуля Ansible x509_certificate_module .

Ответ №1:

Поскольку у меня будет аналогичный вариант использования и, возможно, еще несколько в будущем, я настроил короткий тест в среде RHEL 7.9.

Поскольку я стою за прокси-сервером, мне пришлось указать его в Bash для CLI, а также для модулей Ansible.

 export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
 

Он x509_certificate_module поступает из коллекций сообщества , поэтому перед его установкой необходимо выполнить установку.

 ansible-galaxy collection install community.crypto # --ignore-certs 
Process install dependency map
Starting collection install process
Installing 'community.crypto:1.9.3' to '/home/${USER}/.ansible/collections/ansible_collections/community/crypto'
 

А также добавьте путь к коллекции в библиотеку.

 vi ansible.cfg
...
[defaults]
library = /usr/share/ansible/plugins/modules:~/.ansible/plugins/modules:~/.ansible/collections/ansible_collections/
...
 

На удаленном хосте необходимо установить модуль криптографии Python.

 - name: Make sure dependencies are resolved
  pip:
    name: cryptography
    extra_args: '--index-url https://"{{ ansible_user }}":"{{ API_KEY }}"@repository.example.com/artifactory/api/pypi/pypi-remote/simple --upgrade'
  tags: check_certs
 

Я использую внутреннюю службу частного репозитория даже для пакетов Python, поэтому мне не нужно указывать прокси для pip_module , но index-url здесь вместо in /etc/pip.conf .

   environment:
    HTTP_PROXY: "localhost:3128"
    HTTPS_PROXY: "localhost:3128"
 

Чем просто можно собрать и перечислить информацию о сертификате.

 - name: Get certificate information
  community.crypto.x509_certificate_info:
    path: /etc/pki/ca-trust/source/anchors/DC_com_DC_example_CA_cert.pem
  register: cert_info
  tags: check_certs

- name: Show certificate information
  debug:
    msg: "{{ cert_info.not_after }}"
  tags: check_certs
 

… Из-за некоторых проблем с совместимостью я обнаружил, что, по-видимому, лучше всего использовать набор символов переносного имени файла POSIX только для имен файлов сертификатов.

Дальнейшее чтение, части реализации и улучшения я оставлю вам.

Документация: