--- - block: - name: Fail if the redmine data directory variable is not defined fail: msg="redmine_glob_root_dir is required for this role" when: redmine_glob_root_dir is not defined - 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 }}' - name: Create the user that will run the redmine process user: name={{ redmine_user }} createhome=true home={{ redmine_user_home }} shell=/usr/bin/nologin system=yes - 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 }} - 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 - 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 - 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 - 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 notify: - apache2 reload when needed - Reload unicorn when needed - name: Install the configuration file. Needed to send email template: src=redmine-configuration.yml.j2 dest=/{{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/configuration.yml owner=root group={{ redmine_group }} mode=0440 notify: - apache2 reload when needed - Reload unicorn when needed - name: Install the additional environment file template: src=redmine_additional_environment.rb.j2 dest=/{{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/config/additional_environment.rb owner=root group={{ redmine_group }} mode=0440 notify: - apache2 reload when needed - Reload unicorn when needed - name: Install the gems required by redmine shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; bundle install --without development test sqlite mysql && touch {{ redmine_glob_root_dir }}/.{{ redmine_inst_dir }}_gems_installed args: creates: '{{ redmine_glob_root_dir }}/.{{ redmine_inst_dir }}_gems_installed' - name: Generate the secret token 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' - name: Initialize the DB shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; RAILS_ENV=production rake db:migrate && touch {{ redmine_glob_root_dir }}/.{{ redmine_inst_dir }}.db_initialized args: creates: '{{ redmine_glob_root_dir }}/.{{ redmine_inst_dir }}.db_initialized' tags: [ 'redmine', 'redmine_db_init' ] - 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 && touch {{ redmine_glob_root_dir }}/.{{ redmine_inst_dir }}.db_data_loaded args: creates: '{{ redmine_glob_root_dir }}/.{{ redmine_inst_dir }}.db_data_loaded' tags: [ 'redmine', 'redmine_db_init' ] - name: Install the packages needed by plugins or to build plugins required gems apt: pkg={{ item }} state=present with_items: - libxslt1-dev # The themes come from http://www.redminecrm.com/ - name: Install some optional themes unarchive: src={{ item }}-theme.zip dest={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/public/themes creates={{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}/public/themes/{{ item }} with_items: - a1 - circle notify: - apache2 reload when needed - Reload unicorn when needed - 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' ] - name: Upgrade rake to fix all the gems mess shell: cd {{ redmine_glob_root_dir }}/{{ redmine_inst_dir }}; bundle update rake - 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 - 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 }} recurse=yes with_items: - files - log - tmp - public/plugin_assets - 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' ] - name: Install a script that syncs the email to redmine reading from a imap account template: src=redmine-imap-sync.j2 dest=/usr/local/bin/redmine-imap-sync owner=root group={{ redmine_user }} mode=0750 when: redmine_imap_sync | bool tags: [ 'redmine', 'redmine_imap' ] - name: Install a cron job that configures the task that reads emails via imap cron: cron_file: redmine-email-sync disabled: no job: '/usr/local/bin/redmine-imap-sync' user: '{{ redmine_user }}' minute: '*/10' name: 'Redmine update tasks by email' state: present when: redmine_imap_sync | bool tags: [ 'redmine', 'redmine_imap' ] tags: redmine