Browse Source

Add tarball install method

Depends-On: https://review.opendev.org/c/windmill/windmill/+/795909
Depends-On: https://review.opendev.org/c/windmill/windmill/+/795901
Change-Id: I44d663aea48912a8addbd9288687491fa490703e
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
changes/13/797213/28
Paul Belanger 11 months ago
parent
commit
473305da06
  1. 14
      .zuul.yaml
  2. 29
      defaults/main.yaml
  3. 12
      tasks/config.yaml
  4. 60
      tasks/install/tarball.yaml
  5. 36
      tasks/pre.yaml
  6. 45
      tasks/service.yaml
  7. 18
      templates/etc/systemd/system/zookeeper.service
  8. 3
      templates/etc/systemd/system/zookeeper.service.d/override.conf

14
.zuul.yaml

@ -1,13 +1,21 @@
---
- job:
name: ansible-role-zookeeper
name: ansible-role-zookeeper-base
run: tests/playbooks/run.yaml
roles:
- zuul: windmill/ansible-role-zookeeper
- job:
name: ansible-role-zookeeper-tarball
parent: ansible-role-zookeeper-base
nodeset: ubuntu-bionic
vars:
zookeeper_install_method: tarball
zookeeper_tarball_version: 3.5.9
- job:
name: ansible-role-zookeeper-ubuntu-bionic
parent: ansible-role-zookeeper
parent: ansible-role-zookeeper-base
nodeset: ubuntu-bionic
- project:
@ -15,9 +23,11 @@
- windmill-jobs-bionic
check:
jobs:
- ansible-role-zookeeper-tarball
- ansible-role-zookeeper-ubuntu-bionic
- tox-linters
gate:
jobs:
- ansible-role-zookeeper-tarball
- ansible-role-zookeeper-ubuntu-bionic
- tox-linters

29
defaults/main.yaml

@ -14,11 +14,18 @@
---
# tasks/main.yaml
zookeeper_task_manager:
- pre
- install
- config
- service
# tasks/config.yaml
zookeeper_user_name: zookeeper
zookeeper_user_group: zookeeper
zookeeper_user_home: /var/lib/zookeeper
zookeeper_user_home_mode: 0750
# zookeeper_user_shell:
zookeeper_file_myid_group: zookeeper
zookeeper_file_myid_mode: 0644
zookeeper_file_myid_owner: zookeeper
@ -32,7 +39,29 @@ zookeeper_package_state: present
zookeeper_install_method: package
zookeeper_tarball_creates: "{{ zookeeper_tarball_dest }}/apache-zookeeper-{{ zookeeper_tarball_version }}-bin"
zookeeper_tarball_dest: "/opt/tarballs"
zookeeper_tarball_remote_src: true
zookeeper_tarball_src: "https://archive.apache.org/dist/zookeeper/zookeeper-{{ zookeeper_tarball_version }}/apache-zookeeper-{{ zookeeper_tarball_version }}-bin.tar.gz"
zookeeper_tarball_symlink: /opt/zookeeper
zookeeper_tarball_version:
# tasks/service.yaml
zookeeper_file_zookeeper_service_dest: /etc/systemd/system/zookeeper.service
zookeeper_file_zookeeper_service_group: root
zookeeper_file_zookeeper_service_manage: true
zookeeper_file_zookeeper_service_mode: 0644
zookeeper_file_zookeeper_service_owner: root
zookeeper_file_zookeeper_service_src: etc/systemd/system/zookeeper.service
zookeeper_file_zookeeper_service_config_dest: /etc/systemd/system/zookeeper.service.d/override.conf
zookeeper_file_zookeeper_service_config_group: root
zookeeper_file_zookeeper_service_config_manage: true
zookeeper_file_zookeeper_service_config_mode: 0644
zookeeper_file_zookeeper_service_config_owner: root
zookeeper_file_zookeeper_service_config_src: etc/systemd/system/zookeeper.service.d/override.conf
zookeeper_service_zookeeper_daemon_reload: true
zookeeper_service_zookeeper_enabled: yes
zookeeper_service_zookeeper_manage: true
zookeeper_service_zookeeper_name: zookeeper

12
tasks/config.yaml

@ -32,6 +32,18 @@
zookeeper_file_zoo_conf_src: "{{ __zookeeper_file_zoo_conf_src }}"
when: zookeeper_file_zoo_conf_src is not defined
- name: Create required directories
become: true
file:
group: "{{ zookeeper_user_group }}"
owner: "{{ zookeeper_user_name }}"
path: "{{ item }}"
state: directory
with_items:
- /etc/zookeeper
- /etc/zookeeper/conf
- /var/log/zookeeper
- name: Install zookeeper myid
become: yes
template:

60
tasks/install/tarball.yaml

@ -0,0 +1,60 @@
# Copyright 2021 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
---
- name: Ensure java is present
become: true
package:
name: default-jre-headless
state: present
- name: Create required directory
become: true
file:
path: "{{ zookeeper_tarball_dest }}"
state: directory
- name: Ensure zookeeper is present
become: true
unarchive:
creates: "{{ zookeeper_tarball_creates }}"
dest: "{{ zookeeper_tarball_dest }}"
remote_src: "{{ zookeeper_tarball_remote_src }}"
src: "{{ zookeeper_tarball_src }}"
- name: Stat zookeeper_tarball_symlink
stat:
path: "{{ zookeeper_tarball_symlink | dirname }}"
register: r
no_log: true
when: zookeeper_tarball_symlink is defined
- name: Create zookeeper_tarball_symlink directory
become: true
file:
state: directory
path: "{{ zookeeper_tarball_symlink | dirname }}"
when:
- zookeeper_tarball_symlink is defined
- not r.stat.exists
- name: Symlink zookeeper tarball
become: true
file:
dest: "{{ zookeeper_tarball_symlink }}"
src: "{{ zookeeper_tarball_creates }}"
state: link
when:
- zookeeper_tarball_creates is defined
- zookeeper_tarball_symlink is defined
- zookeeper_tarball_creates != zookeeper_tarball_symlink

36
tasks/pre.yaml

@ -0,0 +1,36 @@
# Copyright 2021 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
---
- name: Create zookeeper user / group
block:
- name: Create group account
become: true
group:
name: "{{ zookeeper_user_group }}"
- name: Create user account
become: true
user:
createhome: true
group: "{{ zookeeper_user_group }}"
home: "{{ zookeeper_user_home }}"
name: "{{ zookeeper_user_name }}"
shell: "{{ zookeeper_user_shell|default(omit) }}"
- name: Set permissions on home directory
become: true
file:
path: "{{ zookeeper_user_home }}"
mode: "{{ zookeeper_user_home_mode }}"
when: zookeeper_install_method != 'package'

45
tasks/service.yaml

@ -12,6 +12,40 @@
# License for the specific language governing permissions and limitations
# under the License.
---
- name: Install systemd files
block:
- name: Install zookeeper service script into place
become: true
template:
dest: "{{ zookeeper_file_zookeeper_service_dest }}"
group: "{{ zookeeper_file_zookeeper_service_group }}"
mode: "{{ zookeeper_file_zookeeper_service_mode }}"
owner: "{{ zookeeper_file_zookeeper_service_owner }}"
src: "{{ zookeeper_file_zookeeper_service_src }}"
register: zookeeper_file_zookeeper_service
when: zookeeper_file_zookeeper_service_manage
- name: Create zookeeper service config directory
become: true
file:
group: "{{ zookeeper_file_zookeeper_service_config_group }}"
owner: "{{ zookeeper_file_zookeeper_service_config_owner }}"
path: "{{ zookeeper_file_zookeeper_service_dest }}.d"
state: directory
when: zookeeper_file_zookeeper_service_config_manage
- name: Install zookeeper service config into place
become: true
template:
dest: "{{ zookeeper_file_zookeeper_service_config_dest }}"
group: "{{ zookeeper_file_zookeeper_service_config_group }}"
mode: "{{ zookeeper_file_zookeeper_service_config_mode }}"
owner: "{{ zookeeper_file_zookeeper_service_config_owner }}"
src: "{{ zookeeper_file_zookeeper_service_config_src }}"
register: zookeeper_file_zookeeper_service_config
when: zookeeper_file_zookeeper_service_config_manage
when: zookeeper_install_method != 'package'
- name: Enable zookeeper service
become: yes
service:
@ -20,3 +54,14 @@
state: "{{ zookeeper_service_zookeeper_state }}"
register: zookeeper_service_zookeeper
when: zookeeper_service_zookeeper_manage
- name: Set zookeeper service state
become: true
systemd:
daemon_reload: "{{ zookeeper_service_zookeeper_daemon_reload }}"
name: "{{ zookeeper_service_zookeeper_name }}"
state: "{{ zookeeper_service_zookeeper_state }}"
register: zookeeper_service_zookeeper_state_info
when:
- zookeeper_service_zookeeper_manage
- zookeeper_service_zookeeper_state in ['reloaded', 'restarted', 'started', 'stopped']

18
templates/etc/systemd/system/zookeeper.service

@ -0,0 +1,18 @@
[Unit]
Description=ZooKeeper Service
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=forking
User=zookeeper
Group=zookeeper
Environment=ZOO_LOG_DIR=/var/log/zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh --config /etc/zookeeper/conf start
ExecStop=/opt/zookeeper/bin/zkServer.sh --config /etc/zookeeper/conf stop
ExecReload=/opt/zookeeper/bin/zkServer.sh --config /etc/zookeeper/conf restart
WorkingDirectory=/opt/zookeeper
[Install]
WantedBy=default.target

3
templates/etc/systemd/system/zookeeper.service.d/override.conf

@ -0,0 +1,3 @@
# This file is generated by Ansible
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
#
Loading…
Cancel
Save