From 38d689585018951a51f69020cc1ce03a6771b2c8 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Thu, 2 May 2024 11:01:29 +0200 Subject: [PATCH] Update to 2024-05-02 11:01 --- roles/jmeter-server/defaults/main.yml | 12 ++++++ roles/jmeter-server/handlers/main.yml | 4 ++ roles/jmeter-server/tasks/archive_pre.yml | 17 ++++++++ roles/jmeter-server/tasks/cleanup.yml | 9 ++++ roles/jmeter-server/tasks/directories.yml | 15 +++++++ roles/jmeter-server/tasks/facts.yml | 22 ++++++++++ roles/jmeter-server/tasks/install.yml | 42 +++++++++++++++++++ roles/jmeter-server/tasks/iptables.yml | 8 ++++ roles/jmeter-server/tasks/main.yml | 34 +++++++++++++++ roles/jmeter-server/tasks/services.yml | 5 +++ roles/jmeter-server/tasks/user.yml | 9 ++++ roles/jmeter-server/tasks/write_version.yml | 5 +++ .../templates/jmeter-server.service.j2 | 20 +++++++++ roles/jmeter-server/vars/RedHat-9.yml | 5 +++ 14 files changed, 207 insertions(+) create mode 100644 roles/jmeter-server/defaults/main.yml create mode 100644 roles/jmeter-server/handlers/main.yml create mode 100644 roles/jmeter-server/tasks/archive_pre.yml create mode 100644 roles/jmeter-server/tasks/cleanup.yml create mode 100644 roles/jmeter-server/tasks/directories.yml create mode 100644 roles/jmeter-server/tasks/facts.yml create mode 100644 roles/jmeter-server/tasks/install.yml create mode 100644 roles/jmeter-server/tasks/iptables.yml create mode 100644 roles/jmeter-server/tasks/main.yml create mode 100644 roles/jmeter-server/tasks/services.yml create mode 100644 roles/jmeter-server/tasks/user.yml create mode 100644 roles/jmeter-server/tasks/write_version.yml create mode 100644 roles/jmeter-server/templates/jmeter-server.service.j2 create mode 100644 roles/jmeter-server/vars/RedHat-9.yml diff --git a/roles/jmeter-server/defaults/main.yml b/roles/jmeter-server/defaults/main.yml new file mode 100644 index 0000000..285c396 --- /dev/null +++ b/roles/jmeter-server/defaults/main.yml @@ -0,0 +1,12 @@ +--- + +jmeter_version: 5.6.3 +jmeter_archive_url: https://dlcdn.apache.org/jmeter/binaries/apache-jmeter-{{ jmeter_version }}.tgz +jmeter_archive_sha512: 5978a1a35edb5a7d428e270564ff49d2b1b257a65e17a759d259a9283fc17093e522fe46f474a043864aea6910683486340706d745fcdf3db1505fd71e689083 +jmeter_manage_upgrade: true + +jmeter_root_dir: /opt/jmeter +jmeter_user: jmeter + +jmeter_port: 9296 +jmeter_src_ip: [] diff --git a/roles/jmeter-server/handlers/main.yml b/roles/jmeter-server/handlers/main.yml new file mode 100644 index 0000000..97a99ce --- /dev/null +++ b/roles/jmeter-server/handlers/main.yml @@ -0,0 +1,4 @@ +--- + +- name: restart jmeter-server + service: name=jmeter-server state=restarted diff --git a/roles/jmeter-server/tasks/archive_pre.yml b/roles/jmeter-server/tasks/archive_pre.yml new file mode 100644 index 0000000..e6ccfab --- /dev/null +++ b/roles/jmeter-server/tasks/archive_pre.yml @@ -0,0 +1,17 @@ +--- + +- name: Create the archive dir + file: path={{ jmeter_root_dir }}/archives/{{ jmeter_current_version }} state=directory + tags: jmeter + +- name: Archive previous version + synchronize: + src: "{{ jmeter_root_dir }}/{{ item }}" + dest: "{{ jmeter_root_dir }}/archives/{{ jmeter_current_version }}/" + recursive: true + delete: true + compress: false + loop: + - app + delegate_to: "{{ inventory_hostname }}" + tags: jmeter diff --git a/roles/jmeter-server/tasks/cleanup.yml b/roles/jmeter-server/tasks/cleanup.yml new file mode 100644 index 0000000..95ca85d --- /dev/null +++ b/roles/jmeter-server/tasks/cleanup.yml @@ -0,0 +1,9 @@ +--- + +- name: Cleanup tmp and obsolete files + file: path={{ item }} state=absent + loop: + - "{{ jmeter_root_dir }}/tmp/apache-jmeter-{{ jmeter_version }}.tgz" + - "{{ jmeter_root_dir }}/tmp/apache-jmeter-{{ jmeter_version }}" + - "{{ jmeter_root_dir }}/archives/{{ jmeter_current_version }}" + tags: jmeter diff --git a/roles/jmeter-server/tasks/directories.yml b/roles/jmeter-server/tasks/directories.yml new file mode 100644 index 0000000..cbb9d22 --- /dev/null +++ b/roles/jmeter-server/tasks/directories.yml @@ -0,0 +1,15 @@ +--- + +- name: Create directories + file: path={{ jmeter_root_dir }}/{{ item.dir }} state=directory owner={{ item.owner | default(omit) }} group={{ item.group | default(omit) }} mode={{ item.mode | default(omit) }} + loop: + - dir: / + owner: "{{ jmeter_user }}" + - dir: tmp + owner: "{{ jmeter_user }}" + mode: 700 + - dir: app + - dir: meta + - dir: archives + mode: 700 + tags: jmeter diff --git a/roles/jmeter-server/tasks/facts.yml b/roles/jmeter-server/tasks/facts.yml new file mode 100644 index 0000000..c54d89d --- /dev/null +++ b/roles/jmeter-server/tasks/facts.yml @@ -0,0 +1,22 @@ +--- + +# Load distribution specific variables +- include_vars: "{{ item }}" + with_first_found: + - "{{ role_path }}/vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" + - "{{ role_path }}/vars/{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml" + - "{{ role_path }}/vars/{{ ansible_distribution }}.yml" + - "{{ role_path }}/vars/{{ ansible_os_family }}.yml" + tags: jmeter + +# Detect installed version (if any) +- block: + - import_tasks: ../includes/webapps_set_install_mode.yml + vars: + - root_dir: "{{ jmeter_root_dir }}" + - version: "{{ jmeter_version }}" + - set_fact: jmeter_install_mode={{ (install_mode == 'upgrade' and not jmeter_manage_upgrade) | ternary('none',install_mode) }} + - set_fact: jmeter_current_version={{ current_version | default('') }} + tags: jmeter + + diff --git a/roles/jmeter-server/tasks/install.yml b/roles/jmeter-server/tasks/install.yml new file mode 100644 index 0000000..724a786 --- /dev/null +++ b/roles/jmeter-server/tasks/install.yml @@ -0,0 +1,42 @@ +--- + +- name: Install dependencies + package: name={{ jmeter_packages }} + tags: jmeter + +- when: jmeter_install_mode != 'none' + block: + - name: Download jmeter + get_url: + url: "{{ jmeter_archive_url }}" + dest: "{{ jmeter_root_dir }}/tmp/" + checksum: sha512:{{ jmeter_archive_sha512 }} + + - name: Extract the archive + unarchive: + src: "{{ jmeter_root_dir }}/tmp/apache-jmeter-{{ jmeter_version }}.tgz" + dest: "{{ jmeter_root_dir }}/tmp/" + remote_src: true + + - name: Install the app + synchronize: + src: "{{ jmeter_root_dir }}/tmp/apache-jmeter-{{ jmeter_version }}/" + dest: "{{ jmeter_root_dir }}/app" + delete: true + compress: false + delegate_to: "{{ inventory_hostname }}" + notify: restart jmeter-server + + tags: jmeter + +- name: Install systemd unit + template: src=jmeter-server.service.j2 dest=/etc/systemd/system/jmeter-server.service + notify: restart jmeter-server + register: jmeter_unit + tags: jmeter + +- name: reload systemd + systemd: daemon_reload=true + when: jmeter_unit.changed + tags: jmeter + diff --git a/roles/jmeter-server/tasks/iptables.yml b/roles/jmeter-server/tasks/iptables.yml new file mode 100644 index 0000000..022ac2a --- /dev/null +++ b/roles/jmeter-server/tasks/iptables.yml @@ -0,0 +1,8 @@ +--- + +- name: Handle jmeter ports + iptables_raw: + name: jmeter_ports + state: "{{ (jmeter_src_ip | length > 0) | ternary('present','absent') }}" + rules: "-A INPUT -m state --state NEW -p tcp --dport {{ jmeter_port }} -s {{ jmeter_src_ip | join(',') }} -j ACCEPT" + tags: firewall,jmeter diff --git a/roles/jmeter-server/tasks/main.yml b/roles/jmeter-server/tasks/main.yml new file mode 100644 index 0000000..f413a92 --- /dev/null +++ b/roles/jmeter-server/tasks/main.yml @@ -0,0 +1,34 @@ +--- + +- include_tasks: user.yml + tags: always + +- include_tasks: directories.yml + tags: always + +- include_tasks: facts.yml + tags: always + +- include_tasks: archive_pre.yml + when: jmeter_install_mode | default('none') == 'upgrade' + tags: always + +- include_tasks: install.yml + tags: always + +- include_tasks: services.yml + tags: always + +- include_tasks: iptables.yml + when: iptables_manage | default(true) + tags: always + +- include_tasks: write_version.yml + tags: always + +- include_tasks: archive_post.yml + when: jmeter_install_mode | default('none') == 'upgrade' + tags: always + +- include_tasks: cleanup.yml + tags: always diff --git a/roles/jmeter-server/tasks/services.yml b/roles/jmeter-server/tasks/services.yml new file mode 100644 index 0000000..c46c431 --- /dev/null +++ b/roles/jmeter-server/tasks/services.yml @@ -0,0 +1,5 @@ +--- + +- name: Start and enable jmeter service + service: name=jmeter-server state=started enabled=true + tags: jmeter diff --git a/roles/jmeter-server/tasks/user.yml b/roles/jmeter-server/tasks/user.yml new file mode 100644 index 0000000..d6856d1 --- /dev/null +++ b/roles/jmeter-server/tasks/user.yml @@ -0,0 +1,9 @@ +--- + +- name: Create jmeter system user + user: + name: "{{ jmeter_user }}" + system: True + #shell: /sbin/nologin + home: "{{ jmeter_root_dir }}" + tags: jmeter diff --git a/roles/jmeter-server/tasks/write_version.yml b/roles/jmeter-server/tasks/write_version.yml new file mode 100644 index 0000000..08baa75 --- /dev/null +++ b/roles/jmeter-server/tasks/write_version.yml @@ -0,0 +1,5 @@ +--- + +- name: write installed version + copy: content={{ jmeter_version }} dest={{ jmeter_root_dir }}/meta/ansible_version + tags: jmeter diff --git a/roles/jmeter-server/templates/jmeter-server.service.j2 b/roles/jmeter-server/templates/jmeter-server.service.j2 new file mode 100644 index 0000000..7566f01 --- /dev/null +++ b/roles/jmeter-server/templates/jmeter-server.service.j2 @@ -0,0 +1,20 @@ +[Unit] +Description=Jmeter server + +[Service] +Type=simple +User={{ jmeter_user }} +Group={{ jmeter_user }} +Environment=JAVA_HOME=/usr/lib/jvm/jre-17 +ExecStart={{ jmeter_root_dir }}/app/bin/jmeter-server -Dserver.rmi.localport={{ jmeter_port }} -Dserver.rmi.ssl.disable=true -Dserver_port={{ jmeter_port }} +PrivateTmp=yes +PrivateDevices=yes +ProtectSystem=full +ProtectHome=yes +NoNewPrivileges=yes +SyslogIdentifier=jmeter-server +Restart=on-failure +SuccessExitStatus=143 + +[Install] +WantedBy=multi-user.target diff --git a/roles/jmeter-server/vars/RedHat-9.yml b/roles/jmeter-server/vars/RedHat-9.yml new file mode 100644 index 0000000..45ffeb4 --- /dev/null +++ b/roles/jmeter-server/vars/RedHat-9.yml @@ -0,0 +1,5 @@ +--- + +jmeter_packages: + - java-17-openjdk-headless + - tar