mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-24 16:40:38 +00:00
139 lines
3.7 KiB
YAML
139 lines
3.7 KiB
YAML
- name: discover storage nodes
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: False
|
|
|
|
tasks:
|
|
|
|
- name: discover safekeepers
|
|
no_log: true
|
|
ec2_instance_info:
|
|
filters:
|
|
"tag:zenith_env": "staging"
|
|
"tag:zenith_service": "safekeeper"
|
|
register: ec2_safekeepers
|
|
|
|
- name: discover pageservers
|
|
no_log: true
|
|
ec2_instance_info:
|
|
filters:
|
|
"tag:zenith_env": "staging"
|
|
"tag:zenith_service": "pageserver"
|
|
register: ec2_pageservers
|
|
|
|
- name: add safekeepers to host group
|
|
no_log: true
|
|
add_host:
|
|
name: safekeeper-{{ ansible_loop.index }}
|
|
ansible_host: "{{ item.public_ip_address }}"
|
|
groups:
|
|
- storage
|
|
- safekeepers
|
|
with_items: "{{ ec2_safekeepers.instances }}"
|
|
loop_control:
|
|
extended: yes
|
|
|
|
- name: add pageservers to host group
|
|
no_log: true
|
|
add_host:
|
|
name: pageserver-{{ ansible_loop.index }}
|
|
ansible_host: "{{ item.public_ip_address }}"
|
|
groups:
|
|
- storage
|
|
- pageservers
|
|
with_items: "{{ ec2_pageservers.instances }}"
|
|
loop_control:
|
|
extended: yes
|
|
|
|
- name: Retrive versions
|
|
hosts: storage
|
|
gather_facts: False
|
|
remote_user: admin
|
|
|
|
tasks:
|
|
|
|
- name: Get current version of binaries
|
|
set_fact:
|
|
current_version: "{{lookup('file', '../zenith_install/.zenith_current_version') }}"
|
|
|
|
- name: Check that file with version exists on host
|
|
stat:
|
|
path: /usr/local/.zenith_current_version
|
|
register: version_file
|
|
|
|
- name: Try to get current version from the host
|
|
when: version_file.stat.exists
|
|
ansible.builtin.fetch:
|
|
src: /usr/local/.zenith_current_version
|
|
dest: .remote_version.{{ inventory_hostname }}
|
|
fail_on_missing: no
|
|
flat: yes
|
|
|
|
- name: Store remote version to variable
|
|
when: version_file.stat.exists
|
|
set_fact:
|
|
remote_version: "{{ lookup('file', '.remote_version.{{ inventory_hostname }}') }}"
|
|
|
|
- name: Store default value of remote version to variable in case when remote version file not found
|
|
when: not version_file.stat.exists
|
|
set_fact:
|
|
remote_version: "000"
|
|
|
|
- name: Extract Zenith binaries
|
|
hosts: storage
|
|
gather_facts: False
|
|
remote_user: admin
|
|
|
|
tasks:
|
|
|
|
- name: Inform about version conflict
|
|
when: current_version <= remote_version
|
|
debug: msg="Current version {{ current_version }} LE than remote {{ remote_version }}"
|
|
|
|
- name: Extract Zenith binaries to /usr/local
|
|
when: current_version > remote_version
|
|
ansible.builtin.unarchive:
|
|
src: ../zenith_install.tar.gz
|
|
dest: /usr/local
|
|
become: true
|
|
|
|
- name: Restart safekeepers
|
|
hosts: safekeepers
|
|
gather_facts: False
|
|
remote_user: admin
|
|
|
|
tasks:
|
|
|
|
- name: Inform about version conflict
|
|
when: current_version <= remote_version
|
|
debug: msg="Current version {{ current_version }} LE than remote {{ remote_version }}"
|
|
|
|
- name: Restart systemd service
|
|
when: current_version > remote_version
|
|
ansible.builtin.systemd:
|
|
daemon_reload: yes
|
|
name: safekeeper
|
|
enabled: yes
|
|
state: restarted
|
|
become: true
|
|
|
|
- name: Restart pageservers
|
|
hosts: pageservers
|
|
gather_facts: False
|
|
remote_user: admin
|
|
|
|
tasks:
|
|
|
|
- name: Inform about version conflict
|
|
when: current_version <= remote_version
|
|
debug: msg="Current version {{ current_version }} LE than remote {{ remote_version }}"
|
|
|
|
- name: Restart systemd service
|
|
when: current_version > remote_version
|
|
ansible.builtin.systemd:
|
|
daemon_reload: yes
|
|
name: pageserver
|
|
enabled: yes
|
|
state: restarted
|
|
become: true
|