Skip to content

Commit

Permalink
Support local caching of ZooKeeper archives
Browse files Browse the repository at this point in the history
This reduces the load on the Apache archive as well as speeding up
tests.
  • Loading branch information
atj committed Mar 21, 2024
1 parent 6c04bc3 commit 4da2976
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ jobs:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ matrix.python }}-ansible${{ matrix.ansible }}-${{ env.REQS_HASH }}

- name: Cache ZooKeeper archive directory
uses: actions/cache@v4
with:
path: ~/.cache/ansible/zookeeper
key: zookeeper

- name: Install test dependencies
run: pip3 install -r test-requirements.txt

Expand Down
2 changes: 2 additions & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ zookeeper_download_url: >-
https://archive.apache.org/dist/zookeeper/zookeeper-{{ zookeeper_version }}/apache-zookeeper-{{ zookeeper_version }}-bin.tar.gz
zookeeper_download_checksum: >-
sha512:2b5ae02d618a27ca8cd54924855d5344263b7d9dee760181f9d66bafa9230324d2ad31786895f0654c969dc38d4a3d0077f74cc376b58b5fa2fb94beb1ab445f
# zookeeper_local_download_directory: ~/.cache/ansible/zookeeper
# zookeeper_local_download_directory_mode: "0750"

zookeeper_package_dependencies:
- gzip
Expand Down
3 changes: 3 additions & 0 deletions molecule/default/inventory/group_vars/all.yml
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
zookeeper_server_inventory_hosts: "{{ groups['zookeeper_servers'] }}"

# for caching of zookeeper archives
zookeeper_local_download_directory: ~/.cache/ansible/zookeeper
34 changes: 32 additions & 2 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,41 @@
- _zookeeper_current_release_path.stat.islnk is defined
- not _zookeeper_current_release_path.stat.islnk

- name: Download ZooKeeper
- name: Download ZooKeeper archive locally and copy to hosts
when: zookeeper_local_download_directory | d()
block:
- name: Create local download directory
ansible.builtin.file:
path: "{{ zookeeper_local_download_directory }}"
mode: " {{ zookeeper_local_download_directory_mode | d('0755') }}"
state: directory
delegate_to: localhost

- name: Download ZooKeeper archive
ansible.builtin.get_url:
url: "{{ zookeeper_download_url }}"
dest: "{{ zookeeper_local_download_directory }}/{{ zookeeper_download_url | basename }}"
checksum: "{{ zookeeper_download_checksum | d(omit) }}"
mode: "0644"
delegate_to: localhost
ignore_errors: "{{ ansible_check_mode }}"

- name: Copy ZooKeeper archive to hosts
ansible.builtin.copy:
src: "{{ zookeeper_local_download_directory }}/{{ zookeeper_download_url | basename }}"
dest: "{{ zookeeper_download_directory }}"
mode: "0644"
register: _zookeeper_copy

- name: Download ZooKeeper archive on hosts
ansible.builtin.get_url:
url: "{{ zookeeper_download_url }}"
dest: "{{ zookeeper_download_directory }}/{{ zookeeper_download_url | basename }}"
checksum: "{{ zookeeper_download_checksum | d(omit) }}"
mode: "0644"
register: _zookeeper_download
ignore_errors: "{{ ansible_check_mode }}"
when: not zookeeper_local_download_directory | d()

- name: Unarchive ZooKeeper
ansible.builtin.unarchive:
Expand All @@ -79,7 +106,10 @@
remote_src: true
extra_opts:
- --strip-components=1
when: _zookeeper_download is changed or (zookeeper_force_unarchive | d()) # noqa no-handler
when: >-
(_zookeeper_copy | d()) is changed or
(_zookeeper_download | d()) is changed or
(zookeeper_force_unarchive | d())
- name: Install ZooKeeper symlink
ansible.builtin.file:
Expand Down

0 comments on commit 4da2976

Please sign in to comment.