저는 앤서블을 사용하고 있어요letsencrypt
SSL 인증서 생성을 위한 모듈입니다. 플레이북이 제대로 작동하고 인증서가 생성되어 적용됩니다.
이제 특정 조건이 충족되는 경우에만 이 작업을 실행하고 그렇지 않으면 이 작업을 건너뛰고 싶습니다.
건강 상태:
/etc/letsencrypt/certs
디렉토리가 비어 있는 경우 (처음 실행 시)
또는
- 인증서 유효기간이 30일 남았을 경우
또는
- 인증서가 만료된 경우
누구든지 이를 달성하기 위한 명령을 확인할 수 있습니까?
예:
- include_tasks: tasks/letsencrypt-issue-jetty.yml
when: >
답변1
앤서블을 보면 알 수 있다조건문.
- include_tasks: tasks/letsencrypt-issue-jetty.yml
when: certs_in_dir == 0 or days_remaining <= 30 or certificate_expired
따라서 일반적으로 귀하가 제공한 방법이 이미 작동하고 있습니다.
값이 포함된 변수를 생성하고 로드하려면 다음을 참조하세요.
그리고 입력
답변2
나는 목표를 달성하기 위해 다음 단계를 사용합니다. 작동하지만 수정 가능한 문제가 있으면 알려주시기 바랍니다.
- name: 'Check /etc/letsencrypt/certs is empty or not'
command: ls /etc/letsencrypt/certs
ignore_errors: True
register: FoundFiles
- name: "Get a cert from an https port"
get_certificate:
host: "{{ inventory_hostname }}"
port: 443
delegate_to: "{{ inventory_hostname }}"
run_once: true
ignore_errors: True
register: cert
- name: "Cert expiry status"
vars:
expire_status: "{{ (( cert.expired )) }}"
shell: echo "{{ expire_status }}"
ignore_errors: True
register: Expiry_Result
- name: "How many days until cert expires"
vars:
expire_days: "{{ (( cert.not_after | to_datetime('%Y%m%d%H%M%SZ')) - (ansible_date_time.iso8601 | to_datetime('%Y-%m-%dT%H:%M:%SZ')) ).days }}"
shell: echo "{{ expire_days }}"
ignore_errors: True
register: Num_of_ExpiryDays
- include_tasks: tasks/letsencrypt-issue-jetty.yml
when: FoundFiles.stdout == "" or Expiry_Result.stdout == 'True' or Num_of_ExpiryDays.stdout | int <= 14