Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

91 lignes
2.9KB

  1. ---
  2. - name: letsencrypt account private key
  3. command: openssl genrsa
  4. -out "{{certificate_letsencrypt_account_key_file}}"
  5. 4096
  6. args:
  7. creates: "{{ certificate_letsencrypt_account_key_file }}"
  8. - include_tasks: key.yml
  9. - include_tasks: csr.yml
  10. - name: check if the certificate will expire soon
  11. command: openssl x509 -checkend {{ 60*60*24*30 }} -noout -in {{certificate_file}}
  12. register: _certificate_checkend
  13. changed_when: _certificate_checkend.rc == 1
  14. failed_when: _certificate_checkend.rc > 1
  15. - name: delete certificate when certificate is about to expire
  16. file:
  17. path: "{{ certificate_file }}"
  18. state: absent
  19. when: _certificate_checkend.rc == 1
  20. - name: letsencrypt request
  21. letsencrypt:
  22. account_key: "{{certificate_letsencrypt_account_key_file}}"
  23. csr: "{{certificate_signing_request_file}}"
  24. dest: "{{certificate_file}}"
  25. challenge: http-01
  26. acme_directory: https://acme-v01.api.letsencrypt.org/directory
  27. agreement: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
  28. register: _letsencrypt_request
  29. # - debug:
  30. # msg:
  31. # _letsencrypt_request: "{{_letsencrypt_request}}"
  32. - block:
  33. - name: acme http directory
  34. file:
  35. path: /var/www/default/.well-known/acme-challenge
  36. state: directory
  37. - name: copy acme challenge resource
  38. copy:
  39. dest: /var/www/default/{{ item.resource }}
  40. content: "{{ item.resource_value }}"
  41. with_items: "{{ _letsencrypt_request | json_query('challenge_data.*.\"http-01\"') }}"
  42. - letsencrypt:
  43. account_key: "{{certificate_letsencrypt_account_key_file}}"
  44. csr: "{{certificate_signing_request_file}}"
  45. dest: "{{certificate_file}}"
  46. challenge: http-01
  47. acme_directory: https://acme-v01.api.letsencrypt.org/directory
  48. agreement: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
  49. data: "{{ _letsencrypt_request }}"
  50. register: _letsencrypt
  51. # - debug:
  52. # msg:
  53. # _letsencrypt: "{{_letsencrypt}}"
  54. when: _letsencrypt_request.changed
  55. - name: download letsencrypt certificate
  56. get_url:
  57. url: https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt
  58. dest: "{{certificate_chain_file}}"
  59. checksum: sha512:0fa893f751f0880c7d89c398cae9708f5ff04d466832fb6160a824395032259ac52e02a44da531d0f8bf7e310298b0067b1e8257f816d3223034f391ecba491d
  60. - name: fetch certificate
  61. fetch:
  62. src: "{{ certificate_file }}"
  63. dest: host_files/{{inventory_hostname}}/certificate/{{certificate_name}}.cert.pem
  64. flat: yes
  65. fail_on_missing: yes
  66. - name: fetch certificate chain
  67. fetch:
  68. src: "{{ certificate_chain_file }}"
  69. dest: host_files/{{inventory_hostname}}/certificate/{{certificate_name}}.chain.pem
  70. flat: yes
  71. fail_on_missing: yes
  72. - name: create full certificate chain
  73. template:
  74. src: fullchain.pam.j2
  75. dest: "{{ certificate_fullchain_file }}"