ansible-roles/roles/glpi/tasks/install.yml

152 lines
4.3 KiB
YAML

---
- name: Install needed tools
yum:
name:
- unzip
- tar
- bzip2
- acl
- mariadb
tags: glpi
- name: Download glpi
get_url:
url: "{{ glpi_archive_url }}"
dest: "{{ glpi_root_dir }}/tmp/"
checksum: "sha256:{{ glpi_archive_sha256 }}"
when: glpi_install_mode != "none"
tags: glpi
- name: Extract glpi archive
unarchive:
src: "{{ glpi_root_dir }}/tmp/glpi-{{ glpi_version }}.tgz"
dest: "{{ glpi_root_dir }}/tmp/"
remote_src: yes
when: glpi_install_mode != "none"
tags: glpi
- name: Move the content of glpi to the correct top directory
synchronize:
src: "{{ glpi_root_dir }}/tmp/glpi/"
dest: "{{ glpi_root_dir }}/web/"
recursive: True
delete: True
rsync_opts:
- '--exclude=/install/install.php'
- '--exclude=/files/'
- '--exclude=/config/glpicrypt.key'
delegate_to: "{{ inventory_hostname }}"
when: glpi_install_mode != "none"
tags: glpi
- name: Remove automatic GLPI signature
lineinfile:
path: "{{ glpi_root_dir }}/web/src/NotificationTemplate.php"
regexp: '^(.*)Automatically generated by GLPI(.*)$'
line: '\1\2'
backrefs: True
loop: [1,2,3,4,5] # Ensure every occurrences are removed
tags: glpi
- name: Remove unwanted files and directories
file: path={{ glpi_root_dir }}/web/{{ item }} state=absent
with_items:
- files
- install/install.php
tags: glpi
- name: Build a list of installed plugins
shell: find {{ glpi_root_dir }}/web/plugins -maxdepth 1 -mindepth 1 -type d -exec basename "{}" \;
register: glpi_installed_plugins
changed_when: False
tags: glpi
- name: Download plugins
get_url:
url: "{{ glpi_plugins[item].url }}"
dest: "{{ glpi_root_dir }}/tmp/"
checksum: "sha256:{{ glpi_plugins[item].sha256 }}"
when:
- item not in glpi_installed_plugins.stdout_lines
- glpi_plugins[item] is defined
with_items: "{{ glpi_plugins_to_install }}"
tags: glpi
- name: Extract plugins
unarchive:
src: "{{ glpi_root_dir }}/tmp/{{ glpi_plugins[item].url | urlsplit('path') | basename }}"
dest: "{{ glpi_root_dir }}/web/plugins/"
remote_src: yes
when:
- item not in glpi_installed_plugins.stdout_lines
- glpi_plugins[item] is defined
with_items: "{{ glpi_plugins_to_install }}"
tags: glpi
# Some plugins have the directory name not matching the plugin name
# Eg, glpi-dashboard-1.0.2 instead of dashboard. So it's removed as if it was an unmanaged plugin
# If the prop rename_from is defined for the plugin, rename the dir
- name: Rename plugin dir
command: mv {{ glpi_root_dir }}/web/plugins/{{ glpi_plugins[item].rename_from }} {{ glpi_root_dir }}/web/plugins/{{ item }}
args:
creates: "{{ glpi_root_dir }}/web/plugins/{{ item }}"
when: glpi_plugins[item].rename_from is defined
loop: "{{ glpi_plugins_to_install }}"
tags: glpi
- name: Build a list of installed plugins
shell: find {{ glpi_root_dir }}/web/plugins -maxdepth 1 -mindepth 1 -type d -exec basename "{}" \;
register: glpi_installed_plugins
changed_when: False
tags: glpi
- name: Remove unmanaged plugins
file: path={{ glpi_root_dir }}/web/plugins/{{ item }} state=absent
with_items: "{{ glpi_installed_plugins.stdout_lines }}"
when: item not in glpi_plugins_to_install
tags: glpi
- import_tasks: ../includes/webapps_create_mysql_db.yml
vars:
- db_name: "{{ glpi_mysql_db }}"
- db_user: "{{ glpi_mysql_user }}"
- db_server: "{{ glpi_mysql_server }}"
- db_pass: "{{ glpi_mysql_pass }}"
tags: glpi
- set_fact: glpi_db_created={{ db_created }}
tags: glpi
- name: Deploy cron task
cron:
name: glpi_{{ glpi_id }}
cron_file: glpi_{{ glpi_id }}
user: "{{ glpi_php_user }}"
job: "/bin/php{{ (glpi_php_version == '54') | ternary('',glpi_php_version) }} {{ glpi_root_dir }}/web/front/cron.php"
minute: "*/5"
tags: glpi
- name: Deploy backup scripts
template: src={{ item }}_backup.j2 dest=/etc/backup/{{ item }}.d/glpi_{{ glpi_id }} mode=750
loop:
- pre
- post
tags: glpi
- name: Download the logo
get_url:
url: "{{ glpi_logo }}"
dest: "{{ glpi_root_dir }}/web/pics/fd_logo.png"
force: True
when: glpi_logo is defined
tags: glpi
- name: Download the login page logo
get_url:
url: "{{ glpi_login_logo }}"
dest: "{{ glpi_root_dir }}/web/pics/login_logo_glpi.png"
force: True
when: glpi_login_logo is defined
tags: glpi