# Assume we only get here if elgg_install: True # Assume mysql is running - name: download current version from our copy shell: wget {{ iiab_download_url }}/elgg-{{ elgg_version }}.zip -c -P {{ downloads_dir }} 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: path=/etc/apache2/sites-enabled/elgg.conf src=/etc/apache2/sites-available/elgg.conf state=link when: elgg_enabled and is_debuntu - name: Disable elgg for debuntu file: path=/etc/apache2/sites-enabled/elgg.conf state=absent when: not elgg_enabled and is_debuntu - name: Disable elgg for Redhat - remove config file for elgg in Apache file: dest=/etc/{{ apache_config_dir }}/elgg.conf state=absent when: not elgg_enabled and is_redhat - name: add elgg to service list ini_file: dest='{{ service_filelist }}' section=elgg option='{{ item.option }}' value='{{ item.value }}' with_items: - option: name value: elgg-social-netwoking - 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