diff --git a/playbooks/solr-vars.yaml b/playbooks/solr-vars.yaml
new file mode 100644
index 0000000..e0ecdf1
--- /dev/null
+++ b/playbooks/solr-vars.yaml
@@ -0,0 +1,6 @@
+---
+download_dir: /tmp
+solr_dir: /opt/solr
+solr_version: 8.6.0
+solr_checksum: sha512:6b0d618069e37215f305d9a61a3e65be2b9cfc32a3689ea6a25be2f220b1ecc96a644ecc31c81e335a2dfa0bc8b7d0f2881ca192c36fd435cdd832fd309a9ddb
+
diff --git a/playbooks/solr.yaml b/playbooks/solr.yaml
new file mode 100644
index 0000000..7405fd6
--- /dev/null
+++ b/playbooks/solr.yaml
@@ -0,0 +1,49 @@
+---
+- name: Ubuntu server with Solr
+  hosts: ubu
+  become: true
+
+  vars_files:
+    - solr-vars.yaml
+
+  pre_tasks:
+    - name: Update apt cache if needed.
+      ansible.builtin.apt:
+        update_cache: true
+        cache_valid_time: 3600
+
+  tasks:
+    - name: Install Java.
+      ansible.builtin.apt:
+        name: openjdk-11-jdk
+        state: present
+
+    - name: Get Solr.
+      ansible.builtin.get_url:
+        url: "https://archive.apache.org/dist/lucene/solr/{{ solr_version }}/solr-{{ solr_version }}.tgz"
+        dest: "{{ download_dir }}/solr-{{ solr_version }}.tgz"
+        checksum: "{{ solr_checksum }}"
+
+    - name: Expand Solr archive.
+      ansible.builtin.unarchive:
+        src: "{{ download_dir }}/solr-{{ solr_version }}.tgz"
+        dest: "{{ download_dir }}"
+        remote_src: true
+        creates: "{{ download_dir }}/solr-{{ solr_version }}/README.txt"
+
+    - name: Run Solr installation script.
+      ansible.builtin.command: >
+        {{ download_dir }}/solr-{{ solr_version }}/bin/install_solr_service.sh
+        {{ download_dir }}/solr-{{ solr_version }}.tgz
+        -i /opt
+        -d /var/solr
+        -u solr
+        -s solr
+        -p 8983
+        creates={{ solr_dir }}/bin/solr
+
+    - name: Ensure Solr is started and enabled on boot.
+      ansible.builtin.service:
+        name: solr
+        state: started
+        enabled: true