main.yml 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. ---
  2. - include: preflight.yml
  3. - include: packages-{{ ansible_pkg_mgr }}.yml
  4. - name: Create Caddy user
  5. user:
  6. name: "{{ caddy_user }}"
  7. system: true
  8. createhome: true
  9. home: "{{ caddy_home }}"
  10. register: caddy_user_details
  11. - name: Build headers to use when making requests to github
  12. set_fact:
  13. caddy_github_headers: "{{ caddy_github_headers | combine({'Authorization': 'token ' + caddy_github_token}) }}"
  14. when: caddy_github_token | length > 0
  15. - name: Get all Caddy releases
  16. get_url:
  17. url: https://api.github.com/repos/mholt/caddy/git/refs/tags
  18. dest: "{{ caddy_home }}/releases.txt"
  19. force: true
  20. headers: '{{ caddy_github_headers }}'
  21. owner: "{{ caddy_user }}"
  22. group: "{{ caddy_user_details.group }}"
  23. retries: 3
  24. delay: 2
  25. when: caddy_update
  26. register: caddy_releases_cache
  27. - name: Set Caddy features
  28. copy:
  29. content: "{{ ','.join(caddy_packages) }}"
  30. dest: "{{ caddy_home }}/features.txt"
  31. mode: 0640
  32. owner: "{{ caddy_user }}"
  33. group: "{{ caddy_user_details.group }}"
  34. when: caddy_update
  35. register: caddy_features_cache
  36. - include: github-url.yml
  37. when: caddy_use_github
  38. - name: Download Caddy
  39. get_url:
  40. url: "{{ caddy_url }}"
  41. dest: "{{ caddy_home }}/{{ 'caddy.tar.gz' if caddy_use_github else 'caddy' }}"
  42. force: true
  43. timeout: 300
  44. mode: 0644
  45. owner: "{{ caddy_user }}"
  46. group: "{{ caddy_user_details.group }}"
  47. retries: 3
  48. delay: 2
  49. when: caddy_releases_cache.changed or caddy_features_cache.changed
  50. register: caddy_binary_cache
  51. tags: skip_ansible_lint
  52. - name: Download Caddy
  53. get_url:
  54. url: "{{ caddy_url }}"
  55. dest: "{{ caddy_home }}/{{ 'caddy.tar.gz' if caddy_use_github else 'caddy' }}"
  56. timeout: 300
  57. mode: 0644
  58. owner: "{{ caddy_user }}"
  59. group: "{{ caddy_user_details.group }}"
  60. retries: 3
  61. delay: 2
  62. register: caddy_download
  63. tags: skip_ansible_lint
  64. - include: github-extract.yml
  65. when: caddy_use_github
  66. - name: Copy Caddy Binary
  67. copy:
  68. src: "{{ caddy_home }}/caddy"
  69. dest: "{{ caddy_bin }}"
  70. mode: 0755
  71. remote_src: true
  72. notify:
  73. - Restart caddy
  74. - name: Create directories
  75. file:
  76. path: "{{ item }}"
  77. state: directory
  78. owner: "{{ caddy_user }}"
  79. mode: 0770
  80. with_items:
  81. - "{{ caddy_conf_dir }}"
  82. - "{{ caddy_certs_dir }}"
  83. - name: Create log directory
  84. file:
  85. path: "{{ caddy_log_dir }}"
  86. state: directory
  87. owner: "{{ caddy_user }}"
  88. mode: 0775
  89. - name: Create Caddyfile
  90. copy:
  91. content: "{{ caddy_config }}"
  92. dest: "{{ caddy_conf_dir }}/Caddyfile"
  93. owner: "{{ caddy_user }}"
  94. mode: 0640
  95. notify:
  96. - Reload caddy
  97. - name: Template systemd service
  98. template:
  99. src: caddy.service
  100. dest: /etc/systemd/system/caddy.service
  101. owner: root
  102. group: root
  103. mode: 0644
  104. notify:
  105. - Restart caddy
  106. - name: Set capability on the binary file to be able to bind to TCP port <1024
  107. capabilities:
  108. path: "{{ caddy_bin }}"
  109. capability: cap_net_bind_service+eip
  110. state: present
  111. when: caddy_setcap
  112. - name: Ensue caddy service is up-to-date before starting it
  113. meta: flush_handlers
  114. - name: Start Caddy service
  115. systemd:
  116. name: caddy
  117. state: started
  118. enabled: true