No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

gpodder.yml 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. - name: Install gpodder dependencies
  2. apt:
  3. name: "{{ packages }}"
  4. state: present
  5. vars:
  6. packages:
  7. - libpq-dev
  8. - libjpeg-dev
  9. - zlib1g-dev
  10. - libwebp-dev
  11. - build-essential
  12. - python3-dev
  13. - virtualenv
  14. - libffi-dev
  15. tags:
  16. - dependencies
  17. - name: Add gpodder user
  18. user:
  19. name: gpodder
  20. home: /home/gpodder
  21. create_home: yes
  22. shell: /bin/bash
  23. password_lock: yes
  24. state: present
  25. system: yes
  26. - name: Add gpodder postgres user
  27. postgresql_user:
  28. login_host=localhost
  29. login_user={{ db_admin_username }}
  30. login_password="{{ db_admin_password }}"
  31. name={{ gpodder_db_username }}
  32. password="{{ gpodder_db_password }}"
  33. encrypted=yes
  34. state=present
  35. - name: Create gpodder database
  36. postgresql_db:
  37. login_host=localhost
  38. login_user={{ db_admin_username }}
  39. login_password="{{ db_admin_password }}"
  40. name={{ gpodder_db_database }}
  41. state=present
  42. owner={{ gpodder_db_username }}
  43. - name: Download gpodder {{ gpodder_version }} release
  44. get_url:
  45. url="{{ gpodder_release }}"
  46. dest=/home/gpodder/gpodder-{{ gpodder_version }}.zip
  47. - name: Stop old gpodder instance
  48. service: name=gpodder state=stopped
  49. ignore_errors: True
  50. - name: Stop old gpodder worker instance
  51. service: name=gpodder_worker state=stopped
  52. ignore_errors: True
  53. - name: Stop old gpodder beat instance
  54. service: name=gpodder_beat state=stopped
  55. ignore_errors: True
  56. - name: Remove old gpodder directory
  57. shell: rm -rf /home/gpodder/gpodder
  58. - name: Create gpodder directory
  59. file: state=directory path=/home/gpodder/gpodder
  60. - name: Extract gpodder sources
  61. unarchive:
  62. src: /home/gpodder/gpodder-{{ gpodder_version }}.zip
  63. dest: /home/gpodder/gpodder
  64. remote_src: yes
  65. - name: Move sources in correct place
  66. shell: mv mygpo-{{ gpodder_version }}/* . chdir=/home/gpodder/gpodder
  67. - name: Remove empty directory
  68. shell: rm -rf /home/gpodder/gpodder/mygpo-{{ gpodder_version }}
  69. - name: Create virtualenv
  70. shell: virtualenv venv chdir=/home/gpodder/gpodder
  71. - name: Install generic dependencies in virtualenv
  72. shell: bash -c 'source venv/bin/activate && pip install -r requirements.txt' chdir=/home/gpodder/gpodder
  73. - name: Install dependencies for production in virtualenv
  74. shell: bash -c 'source venv/bin/activate && pip install -r requirements-setup.txt' chdir=/home/gpodder/gpodder
  75. - name: Create gpodder logs directory
  76. file: state=directory path=/home/gpodder/logs owner=gpodder group=gpodder
  77. - name: Create gpodder media directory
  78. file:
  79. state: directory
  80. path: "/data/gpodder"
  81. owner: gpodder
  82. group: gpodder
  83. mode: 0750
  84. - name: Add gpodder wrapper script
  85. template:
  86. src=home_gpodder_env.j2
  87. dest=/home/gpodder/env.sh
  88. owner=gpodder
  89. group=gpodder
  90. mode=0750
  91. - name: Fix ownership of installed files
  92. shell: chown -R gpodder:gpodder /home/gpodder/gpodder
  93. - name: Run collecting script for static files
  94. become: true
  95. become_user: gpodder
  96. shell: ./env.sh python manage.py collectstatic --no-input chdir=/home/gpodder
  97. #- name: Run compiling script for messages
  98. # become: true
  99. # become_user: gpodder
  100. # shell: ./env.sh python manage.py compilemessages chdir=/home/gpodder
  101. - name: Run database migration script
  102. become: true
  103. become_user: gpodder
  104. shell: ./env.sh python manage.py migrate chdir=/home/gpodder
  105. - name: Add systemd service to start gpodder automatically
  106. template:
  107. src=etc_systemd_system_gpodder.j2
  108. dest=/etc/systemd/system/gpodder.service
  109. owner=root
  110. group=root
  111. - name: Add systemd service to start gpodder worker automatically
  112. template:
  113. src=etc_systemd_system_gpodder_worker.j2
  114. dest=/etc/systemd/system/gpodder_worker.service
  115. owner=root
  116. group=root
  117. - name: Add systemd service to start gpodder beat automatically
  118. template:
  119. src=etc_systemd_system_gpodder_beat.j2
  120. dest=/etc/systemd/system/gpodder_beat.service
  121. owner=root
  122. group=root
  123. - name: Register new gpodder service
  124. systemd: name=gpodder daemon_reload=yes enabled=yes
  125. - name: Register new gpodder worker service
  126. systemd: name=gpodder_worker daemon_reload=yes enabled=yes
  127. - name: Register new gpodder beat service
  128. systemd: name=gpodder_beat daemon_reload=yes enabled=yes
  129. - name: Start new gpodder instance
  130. service: name=gpodder state=started
  131. - name: Start new gpodder worker instance
  132. service: name=gpodder_worker state=started
  133. - name: Start new gpodder beat instance
  134. service: name=gpodder_beat state=started
  135. # TODO cron jobs
  136. # envdir envs/dev python manage.py update-toplist
  137. # envdir envs/dev python manage.py update-episode-toplist
  138. # envdir envs/dev python manage.py feed-downloader
  139. # envdir envs/dev python manage.py feed-downloader <feed-url> [...]
  140. # envdir envs/dev python manage.py feed-downloader --max <max-updates>
  141. # envdir envs/dev python manage.py feed-downloader --random --max <max-updates>
  142. # envdir envs/dev python manage.py feed-downloader --toplist --max <max-updates>
  143. # envdir envs/dev python manage.py feed-downloader --update-new --max <max-updates>
  144. - name: Configure gpodder logrotate
  145. copy:
  146. src=etc_logrotate_gpodder
  147. dest=/etc/logrotate.d/gpodder
  148. owner=root
  149. group=root
  150. mode=0644
  151. - name: Create the Apache gpodder sites config files
  152. template:
  153. src=etc_apache2_sites-available_gpodder.j2
  154. dest=/etc/apache2/sites-available/gpodder_{{ item.name }}.conf
  155. owner=root
  156. group=root
  157. with_items: "{{ virtual_domains }}"
  158. - name: Enable Apache sites (creates new sites-enabled symlinks)
  159. command: a2ensite gpodder_{{ item }}.conf creates=/etc/apache2/sites-enabled/gpodder_{{ item }}.conf
  160. notify: restart apache
  161. with_items: "{{ virtual_domains | json_query('[*].name') }}"