Update to 2024-05-02 11:01

This commit is contained in:
Daniel Berteaud 2024-05-02 11:01:29 +02:00
parent 649b1c50ee
commit 38d6895850
14 changed files with 207 additions and 0 deletions

View File

@ -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: []

View File

@ -0,0 +1,4 @@
---
- name: restart jmeter-server
service: name=jmeter-server state=restarted

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,5 @@
---
- name: Start and enable jmeter service
service: name=jmeter-server state=started enabled=true
tags: jmeter

View File

@ -0,0 +1,9 @@
---
- name: Create jmeter system user
user:
name: "{{ jmeter_user }}"
system: True
#shell: /sbin/nologin
home: "{{ jmeter_root_dir }}"
tags: jmeter

View File

@ -0,0 +1,5 @@
---
- name: write installed version
copy: content={{ jmeter_version }} dest={{ jmeter_root_dir }}/meta/ansible_version
tags: jmeter

View File

@ -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

View File

@ -0,0 +1,5 @@
---
jmeter_packages:
- java-17-openjdk-headless
- tar