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.
259 lines
8.0 KiB
259 lines
8.0 KiB
5 years ago
|
---
|
||
|
|
||
|
- name: Set install mode
|
||
|
set_fact: framadate_install_mode='none'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Install needed tools
|
||
|
yum:
|
||
|
name:
|
||
|
- unzip
|
||
|
- MySQL-python
|
||
|
- acl
|
||
|
- composer
|
||
|
- tar
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Create user account for PHP
|
||
|
user:
|
||
|
name: "{{ framadate_php_user }}"
|
||
|
comment: "PHP FPM {{ framadate_php_user }}"
|
||
|
system: True
|
||
|
shell: /sbin/nologin
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Check if framadate is already installed
|
||
|
stat: path={{ framadate_root_dir }}/meta/ansible_version
|
||
|
register: framadate_version_file
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Check framadate version
|
||
|
command: cat {{ framadate_root_dir }}/meta/ansible_version
|
||
|
register: framadate_current_version
|
||
|
changed_when: False
|
||
|
when: framadate_version_file.stat.exists
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Set installation process to install
|
||
|
set_fact: framadate_install_mode='install'
|
||
|
when: not framadate_version_file.stat.exists
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Set installation process to upgrade
|
||
|
set_fact: framadate_install_mode='upgrade'
|
||
|
when:
|
||
|
- framadate_version_file.stat.exists
|
||
|
- framadate_current_version.stdout != framadate_version
|
||
|
- framadate_manage_upgrade
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Create archive dir
|
||
|
file: path={{ framadate_root_dir }}/archives/{{ framadate_current_version.stdout }} state=directory mode=700
|
||
|
when: framadate_install_mode == 'upgrade'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Archive current version
|
||
|
synchronize:
|
||
|
src: "{{ framadate_root_dir }}/web"
|
||
|
dest: "{{ framadate_root_dir }}/archives/{{ framadate_current_version.stdout }}/"
|
||
|
recursive: True
|
||
|
delete: True
|
||
|
delegate_to: "{{ inventory_hostname }}"
|
||
|
when: framadate_install_mode == 'upgrade'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Dump database
|
||
|
mysql_db:
|
||
|
state: dump
|
||
|
name: "{{ framadate_mysql_db }}"
|
||
|
target: "{{ framadate_root_dir }}/archives/{{ framadate_current_version.stdout }}/{{ framadate_mysql_db }}.sql"
|
||
|
login_host: "{{ framadate_mysql_server }}"
|
||
|
login_user: sqladmin
|
||
|
login_password: "{{ mysql_admin_pass }}"
|
||
|
quick: True
|
||
|
single_transaction: True
|
||
|
when: framadate_install_mode == 'upgrade'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Create directory structure
|
||
|
file: path={{ item }} state=directory
|
||
|
with_items:
|
||
|
- "{{ framadate_root_dir }}"
|
||
|
- "{{ framadate_root_dir }}/web"
|
||
|
- "{{ framadate_root_dir }}/web/tpl_c"
|
||
|
- "{{ framadate_root_dir }}/tmp"
|
||
|
- "{{ framadate_root_dir }}/sessions"
|
||
|
- "{{ framadate_root_dir }}/logs"
|
||
|
- "{{ framadate_root_dir }}/meta"
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Download Framadate
|
||
|
get_url:
|
||
|
url: "{{ framadate_zip_url }}"
|
||
|
dest: "{{ framadate_root_dir }}/tmp/"
|
||
|
checksum: "sha1:{{ framadate_zip_sha1 }}"
|
||
|
when: framadate_install_mode != 'none'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Extract framadate archive
|
||
|
unarchive:
|
||
|
src: "{{ framadate_root_dir }}/tmp/framadate-{{ framadate_version }}.zip"
|
||
|
dest: "{{ framadate_root_dir }}/tmp/"
|
||
|
remote_src: yes
|
||
|
when: framadate_install_mode != 'none'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Move the content of framadate to the correct top directory
|
||
|
synchronize:
|
||
|
src: "{{ framadate_root_dir }}/tmp/framadate-{{ framadate_version }}/"
|
||
|
dest: "{{ framadate_root_dir }}/web/"
|
||
|
recursive: True
|
||
|
delete: True
|
||
|
delegate_to: "{{ inventory_hostname }}"
|
||
|
when: framadate_install_mode != 'none'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Install libs using composer
|
||
|
composer: command=install working_dir={{ framadate_root_dir }}/web
|
||
|
environment:
|
||
|
php: /bin/php{{ framadate_php_version == '54' | ternary('',framadate_php_version) }}
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Download custom logo
|
||
|
get_url:
|
||
|
url: "{{ framadate_logo_url }}"
|
||
|
dest: "{{ framadate_root_dir }}/web/images"
|
||
|
when: framadate_logo_url is search('https?://')
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Generate a random pass for the database
|
||
|
shell: openssl rand -base64 45 > {{ framadate_root_dir }}/meta/ansible_dbpass
|
||
|
args:
|
||
|
creates: "{{ framadate_root_dir }}/meta/ansible_dbpass"
|
||
|
when: framadate_mysql_pass is not defined
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Read database password
|
||
|
command: cat {{ framadate_root_dir }}/meta/ansible_dbpass
|
||
|
register: framadate_rand_pass
|
||
|
when: framadate_mysql_pass is not defined
|
||
|
changed_when: False
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Set database pass
|
||
|
set_fact: framadate_mysql_pass={{ framadate_rand_pass.stdout }}
|
||
|
when: framadate_mysql_pass is not defined
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Create MySQL database
|
||
|
mysql_db:
|
||
|
name: "{{ framadate_mysql_db }}"
|
||
|
login_host: "{{ framadate_mysql_server }}"
|
||
|
login_user: sqladmin
|
||
|
login_password: "{{ mysql_admin_pass }}"
|
||
|
state: present
|
||
|
register: framadate_mysql_created
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Create MySQL User
|
||
|
mysql_user:
|
||
|
name: "{{ framadate_mysql_user }}"
|
||
|
password: "{{ framadate_mysql_pass }}"
|
||
|
priv: "{{ framadate_mysql_db }}.*:ALL"
|
||
|
host: "{{ (framadate_mysql_server == 'localhost') | ternary('localhost', item) }}"
|
||
|
login_host: "{{ framadate_mysql_server }}"
|
||
|
login_user: sqladmin
|
||
|
login_password: "{{ mysql_admin_pass }}"
|
||
|
state: present
|
||
|
with_items: "{{ ansible_all_ipv4_addresses }}"
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Copy SQL structure
|
||
|
copy: src=framadate.sql dest={{ framadate_root_dir }}/tmp/framadate.sql
|
||
|
when: framadate_install_mode != 'none'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Inject MySQL schema
|
||
|
mysql_db:
|
||
|
name: "{{ framadate_mysql_db }}"
|
||
|
state: import
|
||
|
target: "{{ framadate_root_dir }}/tmp/framadate.sql"
|
||
|
login_host: "{{ framadate_mysql_server }}"
|
||
|
login_user: sqladmin
|
||
|
login_password: "{{ mysql_admin_pass }}"
|
||
|
when: framadate_install_mode == 'install'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Remove temp files
|
||
|
file: path={{ item }} state=absent
|
||
|
with_items:
|
||
|
- "{{ framadate_root_dir }}/tmp/framadate-{{ framadate_version }}"
|
||
|
- "{{ framadate_root_dir }}/tmp/framadate-{{ framadate_version }}.zip"
|
||
|
- "{{ framadate_root_dir }}/tmp/framadate.sql"
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Deploy permission script
|
||
|
template: src=perms.sh.j2 dest={{ framadate_root_dir}}/perms.sh mode=755
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Deploy httpd configuration
|
||
|
template: src=httpd.conf.j2 dest=/etc/httpd/ansible_conf.d/10-framadate_{{ framadate_id }}.conf
|
||
|
notify: reload httpd
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Deploy PHP configuration
|
||
|
template: src=php.conf.j2 dest={{ httpd_php_versions[framadate_php_version].conf_path }}/php-fpm.d/framadate_{{ framadate_id }}.conf
|
||
|
notify: restart php-fpm
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Remove PHP configuration from other versions
|
||
|
file: path={{ httpd_php_versions[item].conf_path }}/php-fpm.d/framadate_{{ framadate_id }}.conf state=absent
|
||
|
with_items: "{{ httpd_php_versions.keys() | list | difference([ framadate_php_version ]) }}"
|
||
|
notify: restart php-fpm
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Remove PHP configuration (using a custom pool)
|
||
|
file: path={{ httpd_php_versions[framadate_php_version].conf_path }}/php-fpm.d/framadate_{{ framadate_id }}.conf state=absent
|
||
|
when: framadate_php_fpm_pool is defined
|
||
|
notify: restart php-fpm
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Deploy framadate configuration
|
||
|
template: src=config.php.j2 dest={{ framadate_root_dir }}/web/app/inc/config.php owner=root group={{ framadate_php_user }} mode=640
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Set correct SELinux context
|
||
|
sefcontext:
|
||
|
target: "{{ framadate_root_dir }}(/.*)?"
|
||
|
setype: httpd_sys_content_t
|
||
|
state: present
|
||
|
when: ansible_selinux.status == 'enabled'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Restrict permissions
|
||
|
command: "{{ framadate_root_dir }}/perms.sh"
|
||
|
changed_when: False
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Compress previous version
|
||
|
command: tar cJf {{ framadate_root_dir }}/archives/{{ framadate_current_version.stdout }}.txz ./
|
||
|
environment:
|
||
|
XZ_OPT: -T0
|
||
|
args:
|
||
|
chdir: "{{ framadate_root_dir }}/archives/{{ framadate_current_version.stdout }}"
|
||
|
warn: False
|
||
|
when: framadate_install_mode == 'upgrade'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Remove archive directory
|
||
|
file: path={{ framadate_root_dir }}/archives/{{ framadate_current_version.stdout }} state=absent
|
||
|
when: framadate_install_mode == 'upgrade'
|
||
|
tags: framadate
|
||
|
|
||
|
- name: Write version number
|
||
|
copy: content={{ framadate_version }} dest={{ framadate_root_dir }}/meta/ansible_version
|
||
|
when: framadate_install_mode != 'none'
|
||
|
tags: framadate
|
||
|
|
||
|
...
|