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 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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: Remove old gpodder directory
  51. shell: rm -rf /home/gpodder/gpodder
  52. - name: Create gpodder directory
  53. file: state=directory path=/home/gpodder/gpodder
  54. - name: Extract gpodder sources
  55. unarchive:
  56. src: /home/gpodder/gpodder-{{ gpodder_version }}.zip
  57. dest: /home/gpodder/gpodder
  58. remote_src: yes
  59. - name: Move sources in correct place
  60. shell: mv mygpo-{{ gpodder_version }}/* . chdir=/home/gpodder/gpodder
  61. - name: Remove empty directory
  62. shell: rm -rf /home/gpodder/gpodder/mygpo-{{ gpodder_version }}
  63. - name: Create virtualenv
  64. shell: virtualenv venv chdir=/home/gpodder/gpodder
  65. - name: Install generic dependencies in virtualenv
  66. shell: bash -c 'source venv/bin/activate && pip install -r requirements.txt' chdir=/home/gpodder/gpodder
  67. - name: Install dependencies for production in virtualenv
  68. shell: bash -c 'source venv/bin/activate && pip install -r requirements-setup.txt' chdir=/home/gpodder/gpodder
  69. - name: Create gpodder media directory
  70. file:
  71. state: directory
  72. path: "/data/gpodder"
  73. owner: gpodder
  74. group: gpodder
  75. mode: 0750
  76. # TODO put env somewhere so we can use it for systemd unit, migration and cron
  77. - name: Run database migration script
  78. shell: bash -c 'source venv/bin/activate && DATABASE_URL=postgres://{{ gpodder_db_username }}:{{ gpodder_db_password }}@localhost:5432/{{ gpodder_db_database }}?sslmode=disable SECRET_KEY={{ gpodder_secret }} python manage.py migrate' chdir=/home/gpodder/gpodder
  79. - name: Add systemd service to start gpodder automatically
  80. template:
  81. src=etc_systemd_system_gpodder.j2
  82. dest=/etc/systemd/system/gpodder.service
  83. owner=root
  84. group=root
  85. - name: Register new gpodder service
  86. systemd: name=gpodder daemon_reload=yes enabled=yes
  87. - name: Start new gpodder instance
  88. service: name=gpodder state=started
  89. # TODO cron jobs
  90. # envdir envs/dev python manage.py update-toplist
  91. # envdir envs/dev python manage.py update-episode-toplist
  92. # envdir envs/dev python manage.py feed-downloader
  93. # envdir envs/dev python manage.py feed-downloader <feed-url> [...]
  94. # envdir envs/dev python manage.py feed-downloader --max <max-updates>
  95. # envdir envs/dev python manage.py feed-downloader --random --max <max-updates>
  96. # envdir envs/dev python manage.py feed-downloader --toplist --max <max-updates>
  97. # envdir envs/dev python manage.py feed-downloader --update-new --max <max-updates>
  98. - name: Create the Apache gpodder sites config files
  99. template:
  100. src=etc_apache2_sites-available_gpodder.j2
  101. dest=/etc/apache2/sites-available/gpodder_{{ item.name }}.conf
  102. owner=root
  103. group=root
  104. with_items: "{{ virtual_domains }}"
  105. - name: Enable Apache sites (creates new sites-enabled symlinks)
  106. command: a2ensite gpodder_{{ item }}.conf creates=/etc/apache2/sites-enabled/gpodder_{{ item }}.conf
  107. notify: restart apache
  108. with_items: "{{ virtual_domains | json_query('[*].name') }}"