diff --git a/defaults/main.yml b/defaults/main.yml index 5bb4248..934ea84 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -6,16 +6,18 @@ orientdb_archive_commpression: tar.gz orientdb_dir: 'orientdb-community' orientdb_tar_filename: '{{ orientdb_dir }}-{{ orientdb_version }}' orientdb_tar_file: '{{ orientdb_tar_filename }}.{{ orientdb_archive_commpression }}' +orientdb_jdk_version: 8 # Pre 3.2.5 # orientdb_binary_distribution_url: 'https://s3.us-east-2.amazonaws.com/orientdb3/releases/{{ orientdb_version }}/{{ orientdb_tar_file }}' orientdb_binary_distribution_url: 'https://repo1.maven.org/maven2/com/orientechnologies/{{ orientdb_dir }}/{{ orientdb_version }}/{{ orientdb_tar_file }}' orientdb_user: orientdb orientdb_log_dir: /var/log/orientdb orientdb_log_level: INFO -orientdb_home_prefix: /home +orientdb_home_prefix: /srv +orientdb_data_dir: /srv/orientdb_databases orientdb_base_dir: '{{ orientdb_home_prefix }}/{{ orientdb_user }}' orientdb_install_dir: '{{ orientdb_base_dir }}/{{ orientdb_dir }}' -orientdb_data_dir: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/databases' +orientdb_link_to_data_dir: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/databases' orientdb_pid_dir: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/pid' orientdb_configuration_files: - orientdb-server-log.properties diff --git a/meta/main.yml b/meta/main.yml index 7d6af4d..3c4007c 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,13 +1,12 @@ galaxy_info: author: Andrea Dell'Amico - description: Systems Architect + description: Role that installs OrientDB company: ISTI-CNR - - issue_tracker_url: https://redmine-s2i2s.isti.cnr.it/projects/provisioning - + namespace: adellam + role_name: orientdb license: EUPL 1.2+ - min_ansible_version: 2.8 + min_ansible_version: "2.15" # To view available platforms and versions (or releases), visit: # https://galaxy.ansible.com/api/v1/platforms/ @@ -15,11 +14,9 @@ galaxy_info: platforms: - name: Ubuntu versions: - - Trusty - bionic - - name: EL - versions: - - 7 + - focal + - jammy galaxy_tags: - orientdb diff --git a/tasks/main.yml b/tasks/main.yml index 855cd65..0512257 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,94 +1,125 @@ --- -- block: +- name: OrientDB installation + tags: ['orientdb'] + when: orientdb_install + block: - name: Create the orientdb user - user: name={{ orientdb_user }} home={{ orientdb_base_dir }} createhome=yes shell=/bin/bash - + ansible.builtin.user: + name: "{{ orientdb_user }}" + home: "{{ orientdb_base_dir }}" + createhome: false + shell: /bin/bash + - name: Create the orientdb directories + ansible.builtin.file: + dest: "{{ item }}" + owner: "{{ orientdb_user }}" + group: "{{ orientdb_user }}" + mode: "0750" + loop: + - "{{ orientdb_base_dir }}" + - "{{ orientdb_data_dir }}" - name: Get the orientdb distribution - get_url: url={{ orientdb_binary_distribution_url }} dest={{ orientdb_base_dir }}/{{ orientdb_tar_file }} validate_certs=no - + ansible.builtin.get_url: + url: "{{ orientdb_binary_distribution_url }}" + dest: "{{ orientdb_base_dir }}/{{ orientdb_tar_file }}" + validate_certs: false + owner: root + group: root + mode: "0444" - name: Unpack the orientdb distribution - unarchive: + ansible.builtin.unarchive: src: '{{ orientdb_base_dir }}/{{ orientdb_tar_file }}' dest: '{{ orientdb_base_dir }}' - copy: no + copy: false owner: root group: root args: creates: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }}-{{ orientdb_version }}' - - - name: Create the needed directory inside the orientdb user home - become: True + - name: Create some directories inside the orientdb user home + become: true become_user: '{{ orientdb_user }}' - file: dest={{ item }} state=directory mode=0750 + ansible.builtin.file: + dest: "{{ item }}" + state: directory + mode: "0750" loop: - - '{{ orientdb_data_dir }}' - '{{ orientdb_pid_dir }}' - '{{ orientdb_automatic_backup_directory }}' - + - name: Link to the databases directory + become: true + become_user: '{{ orientdb_user }}' + ansible.builtin.file: + src: "{{ orientdb_data_dir }}" + dest: "{{ orientdb_link_to_data_dir }}" + state: link - name: Remove the demodb database - file: + ansible.builtin.file: dest: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }}-{{ orientdb_version }}/databases/demodb' state: absent - - name: Link to the latest version - become: True + become: true become_user: '{{ orientdb_user }}' - file: + ansible.builtin.file: src: '{{ orientdb_tar_filename }}' dest: '{{ orientdb_install_dir }}' state: link - - name: Create a link to the data directory - file: + ansible.builtin.file: src: '{{ orientdb_data_dir }}' dest: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }}-{{ orientdb_version }}/databases' state: link owner: '{{ orientdb_user }}' group: '{{ orientdb_user }}' - force: True - + force: true - name: Create a orientdb log directory out of the distribution directory - file: + ansible.builtin.file: dest: '{{ orientdb_log_dir }}' state: directory owner: '{{ orientdb_user }}' group: '{{ orientdb_user }}' mode: '0755' - - name: Link the log directory inside the orientdb user home - become: True + become: true become_user: '{{ orientdb_user }}' - file: dest={{ orientdb_home_prefix }}/{{ orientdb_user }}/logs src={{ orientdb_log_dir }} state=link - + ansible.builtin.file: + src: "{{ orientdb_log_dir }}" + dest: "{{ orientdb_home_prefix }}/{{ orientdb_user }}/logs" + state: link - name: Remove the old hook jars - shell: rm -f {{ orientdb_install_dir }}/lib/{{ item }} - with_items: '{{ orientdb_hooks_to_be_removed | default([]) }}' - tags: [ 'orientdb', 'orientdb_hooks' ] - + ansible.builtin.shell: rm -f {{ orientdb_install_dir }}/lib/{{ item }} + loop: '{{ orientdb_hooks_to_be_removed | default([]) }}' + tags: ['orientdb', 'orientdb_hooks'] - name: Fetch and install the hook jars - get_url: url='{{ item }}' dest={{ orientdb_install_dir }}/lib - with_items: '{{ orientdb_hooks_jars | default([]) }}' + ansible.builtin.get_url: + url: "{{ item }}" + dest: "{{ orientdb_install_dir }}/lib" + owner: root + group: root + mode: "0644" + loop: '{{ orientdb_hooks_jars | default([]) }}' notify: Restart orientdb - tags: [ 'orientdb', 'orientdb_hooks' ] - + tags: ['orientdb', 'orientdb_hooks'] - name: Install the orientdb default settings - template: src=orientdb.default.j2 dest=/etc/default/orientdb owner=root group=root mode=0444 + ansible.builtin.template: + src: orientdb.default.j2 + dest: /etc/default/orientdb + owner: root + group: root + mode: "0444" notify: Restart orientdb - - name: Fix the pid file path inside the start and shutdown scripts - lineinfile: + ansible.builtin.lineinfile: dest: '{{ orientdb_install_dir }}/bin/{{ item }}' regexp: "^ORIENTDB_PID=.*$" line: "ORIENTDB_PID={{ orientdb_pid_dir }}/orientdb.pid" insertafter: "^PRG=.*$" - firstmatch: yes + firstmatch: true loop: - server.sh - shutdown.sh - tags: [ 'orientdb', 'orientdb_pid' ] - + tags: ['orientdb', 'orientdb_pid'] - name: Install the orientdb configuration files - template: + ansible.builtin.template: src: '{{ item }}.j2' dest: '{{ orientdb_install_dir }}/config/{{ item }}' owner: '{{ orientdb_user }}' @@ -96,8 +127,7 @@ mode: '0640' loop: '{{ orientdb_configuration_files }}' notify: Restart orientdb - tags: [ 'orientdb', 'orientdb_config' ] - + tags: ['orientdb', 'orientdb_config'] - name: Set the permissions of some configuration files ansible.builtin.file: dest: '{{ orientdb_install_dir }}/config/{{ item }}' @@ -109,104 +139,133 @@ - security.json - orientdb-etl-log.properties notify: Restart orientdb - tags: [ 'orientdb', 'orientdb_config' ] - + tags: ['orientdb', 'orientdb_config'] - name: Install the nagios nrpe configuration - template: src=orientdb-nrpe.cfg.j2 dest={{ nrpe_include_dir }}/orientdb-nrpe.cfg owner=root group=root mode=0444 + ansible.builtin.template: + src: orientdb-nrpe.cfg.j2 + dest: "{{ nrpe_include_dir }}/orientdb-nrpe.cfg" + owner: root + group: root + mode: "0444" notify: Reload NRPE server when: - nrpe_include_dir is defined - nagios_enabled is defined and nagios_enabled - tags: [ 'orientdb', 'orientdb_nagios' ] - + tags: ['orientdb', 'orientdb_nagios'] - name: Install the orientdb SYSV startup script - template: src=orientdb.init.j2 dest=/etc/init.d/orientdb owner=root group=root mode=0755 - tags: [ 'orientdb', 'orientdb_init' ] + ansible.builtin.template: + src: orientdb.init.j2 + dest: /etc/init.d/orientdb + owner: root + group: root + mode: "0755" + tags: ['orientdb', 'orientdb_init'] when: ansible_service_mgr != 'systemd' - - name: Install the orientdb systemd unit - template: src=orientdb.service.j2 dest=/etc/systemd/system/orientdb.service owner=root group=root mode=0644 - tags: [ 'orientdb', 'orientdb_init' ] + ansible.builtin.template: + src: orientdb.service.j2 + dest: /etc/systemd/system/orientdb.service + owner: root + group: root + mode: "0644" + tags: ['orientdb', 'orientdb_init'] when: ansible_service_mgr == 'systemd' register: reload_systemd - - name: Reload the systemd service - systemd: - daemon_reload: yes + ansible.builtin.systemd: + daemon_reload: true when: reload_systemd is changed - - name: Ensure that the service is enabled and running - service: name=orientdb state=started enabled=yes + ansible.builtin.service: + name: orientdb + state: started + enabled: true when: orientdb_enabled - - name: Ensure that the service is stopped and disabled - service: name=orientdb state=stopped enabled=no + ansible.builtin.service: + name: orientdb + state: stopped + enabled: false when: not orientdb_enabled - - tags: [ 'orientdb' ] +- name: Clean up the backups + tags: ['orientdb', 'orientdb_backup'] when: orientdb_install - -- block: + block: - name: Install a script that removes the old orientdb backups - template: src=backup-cleaner.sh.j2 dest=/usr/local/bin/orientdb-backup-cleaner owner=root group=root mode=555 - + ansible.builtin.template: + src: backup-cleaner.sh.j2 + dest: /usr/local/bin/orientdb-backup-cleaner + owner: root + group: root + mode: "0555" - name: Add a cron job that removes the old backups - cron: - cron_file: 'orientdb-backup-cleaner' - disabled: no - job: "/usr/local/bin/orientdb-backup-cleaner >/dev/null 2>&1" - special_time: daily - user: '{{ orientdb_user }}' - name: "Remove old orientdb backups" - state: present - - tags: [ 'orientdb', 'orientdb_backup' ] - when: orientdb_install - - -- block: - - name: Create the acme hooks directory if it does not yet exist - file: dest={{ letsencrypt_acme_services_scripts_dir }} state=directory owner=root group=root - - - name: Install a letsencrypt hook to update the orientdb certificate - template: src=orientdb-letsencrypt-acme.sh.j2 dest={{ letsencrypt_acme_services_scripts_dir }}/orientdb owner=root group=root mode=4555 - - tags: [ 'orientdb', 'letsencrypt', 'orientdb_letsencrypt' ] + ansible.builtin.cron: + cron_file: orientdb-backup-cleaner + disabled: false + job: "/usr/local/bin/orientdb-backup-cleaner >/dev/null 2>&1" + special_time: daily + user: "{{ orientdb_user }}" + name: "Remove old orientdb backups" + state: present +- name: Manage the Letsencrypt certificates + tags: ['orientdb', 'letsencrypt', 'orientdb_letsencrypt'] when: - orientdb_install - orientdb_letsencrypt_ssl_enabled + - letsencrypt_acme_install is defined and letsencrypt_acme_install + block: + - name: Create the acme hooks directory if it does not yet exist + ansible.builtin.file: + dest: "{{ letsencrypt_acme_services_scripts_dir }}" + state: directory + owner: root + group: root + mode: "0755" + - name: Install a letsencrypt hook to update the orientdb certificate + ansible.builtin.template: + src: orientdb-letsencrypt-acme.sh.j2 + dest: "{{ letsencrypt_acme_services_scripts_dir }}/orientdb" + owner: root + group: root + mode: "4555" -- block: - - name: Ensure that the service is disabled and stopped - service: name=orientdb state=stopped enabled=no - - - name: Remove the orientdb SysV startup file - file: dest=/etc/init.d/orientdb state=absent - when: ansible_service_mgr != 'systemd' - - - name: Remove the orientdb systemd unit - file: dest=/usr/lib/systemd/system/orientdb.service state=absent - when: ansible_service_mgr == 'systemd' - - - name: Remove the link to the orientdb distribution - file: dest={{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }} state=absent - - - name: Remove the default options file - file: dest=/etc/default/orientdb state=absent - - - name: Remove the backup cleaner script - file: dest=/usr/local/bin/orientdb-backup-cleaner state=absent - - - name: Remove the backup cleaner cron job - cron: - cron_file: 'orientdb-backup-cleaner' - disabled: no - job: "/usr/local/bin/orientdb-backup-cleaner >/dev/null 2>&1" - special_time: daily - user: '{{ orientdb_user }}' - name: "Remove old orientdb backups" - state: absent - - tags: [ 'orientdb' ] +- name: Remove OrientDB + tags: ['orientdb'] when: not orientdb_install - + block: + - name: Ensure that the service is disabled and stopped + ansible.builtin.service: + name: orientdb + state: stopped + enabled: false + - name: Remove the orientdb SysV startup file + ansible.builtin.file: + dest: /etc/init.d/orientdb + state: absent + when: ansible_service_mgr != 'systemd' + - name: Remove the orientdb systemd unit + ansible.builtin.file: + dest: /usr/lib/systemd/system/orientdb.service + state: absent + when: ansible_service_mgr == 'systemd' + - name: Remove the link to the orientdb distribution + ansible.builtin.file: + dest: "{{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }}" + state: absent + - name: Remove the default options file + ansible.builtin.file: + dest: /etc/default/orientdb + state: absent + - name: Remove the backup cleaner script + ansible.builtin.file: + dest: /usr/local/bin/orientdb-backup-cleaner + state: absent + - name: Remove the backup cleaner cron job + ansible.builtin.cron: + cron_file: orientdb-backup-cleaner + disabled: false + job: "/usr/local/bin/orientdb-backup-cleaner >/dev/null 2>&1" + special_time: daily + user: '{{ orientdb_user }}' + name: "Remove old orientdb backups" + state: absent diff --git a/vars/main.yml b/vars/main.yml index 3808477..fc09f81 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,2 +1,2 @@ --- -# vars file for ansible-role-template \ No newline at end of file +jdk_default: "{{ orientdb_jdk_version }}"