From 66f26bf76fe93781006cb2307b41eac36cba4fdc Mon Sep 17 00:00:00 2001 From: Andrea Dell'Amico Date: Thu, 8 Oct 2015 19:17:33 +0200 Subject: [PATCH] d4science-gcube/redmine.yml: split the production ad devel variables for redmine. Get all the modules distrib files that do not have a public download site. Install a logrotate script to handle the redmine logs. Fix some playbook problems. --- redmine/defaults/main.yml | 3 + redmine/tasks/redmine.yml | 80 +++++++++++--------------- redmine/tasks/unicorn.yml | 5 +- redmine/templates/redmine-logrotate.j2 | 6 ++ 4 files changed, 44 insertions(+), 50 deletions(-) create mode 100644 redmine/templates/redmine-logrotate.j2 diff --git a/redmine/defaults/main.yml b/redmine/defaults/main.yml index 42412556..ed5b5ab8 100644 --- a/redmine/defaults/main.yml +++ b/redmine/defaults/main.yml @@ -62,6 +62,9 @@ unicorn_worker_processes: 5 unicorn_timeout: 120 unicorn_log_dir: /var/log/unicorn unicorn_pid_file: /run/unicorn/unicorn.pid +unicorn_gems: + - unicorn + - coderay unicorn_apache_modules: - proxy_balancer - proxy diff --git a/redmine/tasks/redmine.yml b/redmine/tasks/redmine.yml index 86bcd22f..f90d4e2b 100644 --- a/redmine/tasks/redmine.yml +++ b/redmine/tasks/redmine.yml @@ -2,26 +2,22 @@ - name: Fail if the redmine data directory variable is not defined fail: redmine_glob_root_dir is required for this role when: redmine_glob_root_dir is not defined - tags: - - redmine + tags: redmine - name: ensure that the redmine data directories exist file: dest={{ item }} state=directory owner=root group=root with_items: - '{{ redmine_glob_root_dir }}' - '{{ redmine_glob_users_home_base }}' - tags: - - redmine + tags: redmine - name: Create the user that will run the redmine process user: name={{ redmine_user }} createhome=true home={{ redmine_user_home }} shell=/bin/bash - tags: - - redmine + tags: redmine - name: Ensure that the redmine user can write its $HOME/.subversion to store the svn site ssl certificate file: dest={{ redmine_user_home }}/.subversion state=directory owner={{ redmine_user }} group={{ redmine_group }} - tags: - - redmine + tags: redmine # We need to find a way to run svn and accept the certificate in non interactive mode as user www-data # su - www-data svn list https://svn.driver.research-infrastructures.eu/driver @@ -29,8 +25,7 @@ # don't know if it's useful - name: Explicitly accept the svn ssl certificate shell: /bin/true - tags: - - redmine + tags: redmine # - name: Check if we have the svn.driver.research-infrastructures.eu public SSL certificate already # shell: ls -l /etc/ssl/certs/svn.driver.research-infrastructures.eu.epm @@ -43,62 +38,56 @@ - name: Get the redmine tarball get_url: url=http://www.redmine.org/releases/redmine-{{ redmine_version }}.tar.gz dest={{ redmine_glob_root_dir }}/redmine-{{ redmine_version }}.tar.gz - tags: - - redmine + tags: redmine - name: Explode the redmine archive unarchive: src={{ redmine_glob_root_dir }}/redmine-{{ redmine_version }}.tar.gz dest={{ redmine_glob_root_dir }} copy=no owner=root group=root creates={{ redmine_glob_root_dir }}/redmine-{{ redmine_version }}/Rakefile register: redmine_install - tags: - - redmine + tags: redmine - name: Create the right path for the application. file: src={{ redmine_glob_root_dir }}/redmine-{{ redmine_version }} dest={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }} state=link - tags: - - redmine + tags: redmine - name: Install the database configuration template: src=redmine-database.yml.j2 dest={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/database.yml owner=root group={{ redmine_group }} mode=0440 - tags: - - redmine + notify: + - apache2 reload when needed + - Reload unicorn when needed + tags: redmine - name: Install the configuration file. Needed to send email copy: src=redmine-configuration.yml dest=/{{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/configuration.yml owner=root group={{ redmine_group }} mode=0440 notify: - apache2 reload - tags: - - redmine + - apache2 reload when needed + - Reload unicorn when needed + tags: redmine - name: Install the gems required by redmine shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; bundle install --without development test sqlite mysql - when: redmine_install.changed - tags: - - redmine + tags: redmine - name: Generate the secret token - shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; rake generate_secret_token - when: redmine_install.changed - tags: - - redmine + shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; rake generate_secret_token ; chmod 440 {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/initializers/secret_token.rb ; chgrp {{ redmine_group }} {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/initializers/secret_token.rb + args: + creates: '{{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/initializers/secret_token.rb' + tags: redmine - name: Initialize the DB shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; RAILS_ENV=production rake db:migrate when: redmine_install.changed - tags: - - redmine + tags: redmine - name: Install the defauld DB data shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; RAILS_ENV=production REDMINE_LANG=en rake redmine:load_default_data when: redmine_install.changed - tags: - - redmine + tags: redmine - name: Install the packages needed by plugins or to build plugins required gems apt: pkg={{ item }} state=installed with_items: - libxslt1-dev - tags: - - redmine + tags: redmine # The themes come from http://www.redminecrm.com/ - name: Install some optional themes @@ -109,36 +98,30 @@ notify: - apache2 reload when needed - Reload unicorn when needed - tags: - - redmine + tags: redmine - name: Cron jobs that manage recurring tasks template: src={{ item }}.cron.j2 dest=/etc/cron.d/{{ item }} owner=root group=root mode=0444 with_items: - redmine-recurring-tasks - redmine-ldap-sync - tags: - - redmine + tags: redmine - name: Add unicorn to the redmine Gemfile copy: dest={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/Gemfile.local content='gem "unicorn"\n' owner={{ redmine_user }} group={{ redmine_group }} when: ruby_use_unicorn - tags: - - redmine - - unicorn + tags: [ 'redmine', 'unicorn' ] - name: Upgrade rake to fix all the gems mess shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; bundle update rake - tags: - - redmine + tags: redmine - name: Fix the permission of some files file: dest={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/{{ item }} owner={{ redmine_user }} group={{ redmine_group }} with_items: - Gemfile - Gemfile.lock - tags: - - redmine + tags: redmine - name: Ensure that redmine can write into some directories file: dest={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/{{ item }} state=directory owner={{ redmine_user }} group={{ redmine_group }} @@ -149,6 +132,9 @@ - public/plugin_assets notify: change the redmine permissions recursively - tags: - - redmine + tags: redmine + +- name: Install a logrotate script to take care of the ever growing production.log file + template: src=redmine-logrotate.j2 dest=/etc/logrotate.d/redmine-{{ redmine_inst_name }} owner=root group=root mode=0444 + tags: [ 'redmine', 'logrotate' ] diff --git a/redmine/tasks/unicorn.yml b/redmine/tasks/unicorn.yml index 4f0c4837..4224e608 100644 --- a/redmine/tasks/unicorn.yml +++ b/redmine/tasks/unicorn.yml @@ -1,8 +1,7 @@ --- -- name: Install the unicorn ruby-on-rails service +- name: Install the unicorn ruby-on-rails service and its dependencies gem: name={{ item }} state=latest - with_items: - - unicorn + with_items: unicorn_gems when: ruby_use_unicorn tags: [ 'ruby', 'redmine', 'unicorn' ] diff --git a/redmine/templates/redmine-logrotate.j2 b/redmine/templates/redmine-logrotate.j2 new file mode 100644 index 00000000..b478d205 --- /dev/null +++ b/redmine/templates/redmine-logrotate.j2 @@ -0,0 +1,6 @@ +{{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/log/*.log { + missingok + notifempty + delaycompress + copytruncate +} \ No newline at end of file