main.yml 3.1 KB

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