# Assume we only get here if elgg_install: True # Assume mysql is running - name: Download current version from our site shell: wget {{ iiab_download_url }}/elgg-{{ elgg_version }}.zip -c -P {{ downloads_dir }} args: creates: "{{ downloads_dir }}/elgg-{{ elgg_version }}.zip" when: internet_available - name: Determine if software is already expanded stat: path: "/opt/elgg-{{ elgg_version }}/index.php" register: elgg # use unzip and shell until unarchive works again # unarchive: dest=/opt/ # src={{ downloads_dir }}/elgg-{{ elgg_version }}.zip - name: Expand it to our location unless already done shell: "/usr/bin/unzip -o {{ downloads_dir }}/elgg-{{ elgg_version }}.zip -d /opt" when: elgg.stat.exists is defined and not elgg.stat.exists - name: Create a link to the versioned elgg-* folder file: src: "./elgg-{{ elgg_version }}" dest: /opt/elgg owner: "{{ apache_user }}" group: "{{ apache_user }}" state: link force: true # use template to fix up settings in engine/settings.php with our variables substituted # into engine/settings.example.php # note this will overwrite any manual settings - name: Substitute our parameters in engine/settings.example.php template: src: "settings.php.j2" dest: "/opt/{{ elgg_xx }}/elgg-config/settings.php" owner: "{{ apache_user }}" group: "{{ apache_user }}" # The name of this file changed from 1.9 to 1.10. - name: Copy default .htaccess to the root directory of Elgg tree copy: src: "/opt/{{ elgg_xx }}/vendor/elgg/elgg/install/config/htaccess.dist" dest: "/opt/{{ elgg_xx }}/.htaccess" mode: 0644 owner: "{{ apache_user }}" group: "{{ apache_user }}" #regexp='^#RewriteBase' - name: Modify .htaccess to have RewriteBase as our directory lineinfile: backup: no dest: "/opt/{{ elgg_xx }}/.htaccess" state: present insertafter: '^#RewriteBase' line: "RewriteBase {{ elgg_url }}/" - name: Change permissions on engine directory so Apache can write file: path: /opt/elgg/engine/ owner: "{{ apache_user }}" mode: 0755 state: directory - name: Create an upload directory that Apache can write in or Elgg file: path: "{{ elgg_upload_path }}" state: directory owner: "{{ apache_user }}" - name: Change ownership file: path: "/opt/elgg-{{ elgg_version }}" owner: "{{ apache_user }}" group: "{{ apache_user }}" recurse: yes state: directory - name: Create a MySQL database for Elgg - can be run more than once mysql_db: name: "{{ dbname }}" register: create_elgg_database - name: Create a user to access the Elgg database - can be run more than once mysql_user: name: "{{ dbuser }}" host: "{{ item }}" password: "{{ dbpassword }}" priv: "{{ dbname }}.*:ALL" with_items: - 127.0.0.1 - ::1 - localhost - name: Create file to load database template: src: "elggdb.sql.j2" dest: "/tmp/elggdb.sql" # elggdb.sql obtained with mysqldump --skip-add-drop-table elggdb > elggdb.sql # tar up a mysqldump of freshly installed database and use it in the install to avoid the startup # form, which worries me a lot. (/var/lib/mysql/elggdb) - name: Load Elgg database dump mysql_db: name: "{{ dbname }}" state: import target: /tmp/elggdb.sql when: create_elgg_database.changed - name: Remove database dump after load file: name: /tmp/elggdb.sql state: absent - name: Install config file for Elgg in Apache template: src: elgg.conf dest: "/etc/{{ apache_config_dir }}/elgg.conf" - name: Enable Elgg for debuntu (will already be enabled above for redhat) file: src: /etc/apache2/sites-available/elgg.conf dest: /etc/apache2/sites-enabled/elgg.conf state: link when: elgg_enabled and is_debuntu - name: Disable Elgg - remove config file for Elgg in Apache (debuntu) file: path: /etc/apache2/sites-enabled/elgg.conf state: absent when: not elgg_enabled and is_debuntu - name: Disable Elgg - remove config file for Elgg in Apache (redhat) file: dest: "/etc/{{ apache_config_dir }}/elgg.conf" state: absent when: not elgg_enabled and is_redhat - name: Add 'elgg' to list of services at /etc/iiab/iiab.ini ini_file: dest: "{{ service_filelist }}" section: elgg option: "{{ item.option }}" value: "{{ item.value }}" with_items: - option: name value: Elgg - option: description value: '"Elgg is an award-winning social networking engine, delivering the building blocks that enable businesses, schools, universities and associations to create their own fully-featured social networks and applications."' - option: path value: /opt/elgg - option: enabled value: "{{ elgg_enabled }}" - name: Restart Apache, so it picks up the new aliases service: name: "{{ apache_service }}" state: restarted