forked from cps-deployments/psi.bec
No symlink deployment
This commit is contained in:
+55
-34
@@ -29,6 +29,35 @@
|
||||
- name: EPICS setup
|
||||
include_tasks: epics_setup.yaml
|
||||
|
||||
- name: Get info about deployment path
|
||||
ansible.builtin.stat:
|
||||
path: "{{ deployment_path }}"
|
||||
register: deployment_path_info
|
||||
|
||||
- name: Remove the old-style symlink if it exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ deployment_path }}"
|
||||
state: absent
|
||||
when: deployment_path_info.stat.islnk is defined and deployment_path_info.stat.islnk
|
||||
|
||||
- name: Create a folder for old deployments
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.file:
|
||||
path: "{{ old_deployments_path }}"
|
||||
state: directory
|
||||
|
||||
- name: Stop bec-server if it exists and running
|
||||
ansible.builtin.systemd:
|
||||
name: bec-server.service
|
||||
state: stopped
|
||||
register: systemd_stop_result
|
||||
failed_when: "systemd_stop_result is failed and 'Could not find the requested service' not in systemd_stop_result.msg"
|
||||
|
||||
- name: Move the previous deployment into an old deployments timestamped folder
|
||||
ansible.builtin.command:
|
||||
cmd: mv {{ deployment_path }} {{ old_deployments_path }}/{{ ansible_date_time['iso8601_basic_short'] }}
|
||||
when: deployment_path_info.stat.exists and deployment_path_info.stat.isdir
|
||||
|
||||
- name: Create a folder for BEC server logs
|
||||
ansible.builtin.file:
|
||||
owner: "{{ service_user }}"
|
||||
@@ -38,7 +67,7 @@
|
||||
- name: Create a folder for BEC deployment
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.file:
|
||||
path: "{{ timestamped_deployment_path }}"
|
||||
path: "{{ deployment_path }}"
|
||||
state: directory
|
||||
|
||||
- name: Create a folder for secrets
|
||||
@@ -90,28 +119,28 @@
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/bec-project/bec.git
|
||||
dest: "{{ timestamped_deployment_path }}/bec"
|
||||
dest: "{{ deployment_path }}/bec"
|
||||
version: "{{ bec_version }}"
|
||||
|
||||
- name: Clone Ophyd Devices repository
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/bec-project/ophyd_devices.git
|
||||
dest: "{{ timestamped_deployment_path }}/ophyd_devices"
|
||||
dest: "{{ deployment_path }}/ophyd_devices"
|
||||
version: "{{ ophyd_devices_version }}"
|
||||
|
||||
- name: Clone BEC Widgets repository
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/bec-project/bec_widgets.git
|
||||
dest: "{{ timestamped_deployment_path }}/bec_widgets"
|
||||
dest: "{{ deployment_path }}/bec_widgets"
|
||||
version: "{{ bec_widgets_version }}"
|
||||
|
||||
- name: Create user branches in git repositories
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.command:
|
||||
cmd: git switch -c {{ user_git_branch_name }}
|
||||
chdir: "{{ timestamped_deployment_path }}/{{ item }}"
|
||||
chdir: "{{ deployment_path }}/{{ item }}"
|
||||
loop:
|
||||
- bec
|
||||
- ophyd_devices
|
||||
@@ -124,7 +153,7 @@
|
||||
name: user.name
|
||||
value: "{{ git_username }}"
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item }}"
|
||||
repo: "{{ deployment_path }}/{{ item }}"
|
||||
loop:
|
||||
- bec
|
||||
- ophyd_devices
|
||||
@@ -137,7 +166,7 @@
|
||||
name: user.email
|
||||
value: "{{ git_username }}@psi.ch"
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item }}"
|
||||
repo: "{{ deployment_path }}/{{ item }}"
|
||||
loop:
|
||||
- bec
|
||||
- ophyd_devices
|
||||
@@ -150,7 +179,7 @@
|
||||
name: pull.rebase
|
||||
value: true
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item }}"
|
||||
repo: "{{ deployment_path }}/{{ item }}"
|
||||
loop:
|
||||
- bec
|
||||
- ophyd_devices
|
||||
@@ -163,7 +192,7 @@
|
||||
name: core.sharedRepository
|
||||
value: group
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item }}"
|
||||
repo: "{{ deployment_path }}/{{ item }}"
|
||||
loop:
|
||||
- bec
|
||||
- ophyd_devices
|
||||
@@ -174,7 +203,7 @@
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.git:
|
||||
repo: https://git:{{ bec_bl_push_pat }}@gitea.psi.ch/bec/{{ item.key }}.git
|
||||
dest: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
dest: "{{ deployment_path }}/{{ item.key }}"
|
||||
version: "{{ item.value or 'main' }}"
|
||||
loop: "{{ bec_plugins | dict2items }}"
|
||||
when: not ansible_check_mode
|
||||
@@ -183,7 +212,7 @@
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.command:
|
||||
cmd: git switch -c {{ user_git_branch_name }}
|
||||
chdir: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
chdir: "{{ deployment_path }}/{{ item.key }}"
|
||||
loop: "{{ bec_plugins | dict2items }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
@@ -193,7 +222,7 @@
|
||||
name: user.name
|
||||
value: "{{ git_username }}"
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
repo: "{{ deployment_path }}/{{ item.key }}"
|
||||
loop: "{{ bec_plugins | dict2items }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
@@ -203,7 +232,7 @@
|
||||
name: user.email
|
||||
value: "{{ git_username }}@psi.ch"
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
repo: "{{ deployment_path }}/{{ item.key }}"
|
||||
loop: "{{ bec_plugins | dict2items }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
@@ -213,7 +242,7 @@
|
||||
name: pull.rebase
|
||||
value: true
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
repo: "{{ deployment_path }}/{{ item.key }}"
|
||||
loop: "{{ bec_plugins | dict2items }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
@@ -223,14 +252,14 @@
|
||||
name: core.sharedRepository
|
||||
value: group
|
||||
scope: local
|
||||
repo: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
repo: "{{ deployment_path }}/{{ item.key }}"
|
||||
loop: "{{ bec_plugins | dict2items }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Install bec_lib
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.pip:
|
||||
name: "{{ timestamped_deployment_path }}/bec/bec_lib"
|
||||
name: "{{ deployment_path }}/bec/bec_lib"
|
||||
editable: true
|
||||
virtualenv_command: "{{ python_version }} -m venv"
|
||||
virtualenv: "{{ bec_venv_path }}"
|
||||
@@ -240,7 +269,7 @@
|
||||
- name: Install bec_ipython_client
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.pip:
|
||||
name: "{{ timestamped_deployment_path }}/bec/bec_ipython_client"
|
||||
name: "{{ deployment_path }}/bec/bec_ipython_client"
|
||||
editable: true
|
||||
virtualenv_command: "{{ python_version }} -m venv"
|
||||
virtualenv: "{{ bec_venv_path }}"
|
||||
@@ -248,7 +277,7 @@
|
||||
- name: Install ophyd_devices
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.pip:
|
||||
name: "{{ timestamped_deployment_path }}/ophyd_devices"
|
||||
name: "{{ deployment_path }}/ophyd_devices"
|
||||
editable: true
|
||||
virtualenv_command: "{{ python_version }} -m venv"
|
||||
virtualenv: "{{ bec_venv_path }}"
|
||||
@@ -258,7 +287,7 @@
|
||||
- name: Install bec_widgets
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.pip:
|
||||
name: "{{ timestamped_deployment_path }}/bec_widgets[pyside6]"
|
||||
name: "{{ deployment_path }}/bec_widgets[pyside6]"
|
||||
editable: true
|
||||
virtualenv_command: "{{ python_version }} -m venv"
|
||||
virtualenv: "{{ bec_venv_path }}"
|
||||
@@ -266,7 +295,7 @@
|
||||
- name: Install bec_server
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.pip:
|
||||
name: "{{ timestamped_deployment_path }}/bec/bec_server"
|
||||
name: "{{ deployment_path }}/bec/bec_server"
|
||||
editable: true
|
||||
virtualenv_command: "{{ python_version }} -m venv"
|
||||
virtualenv: "{{ bec_venv_path }}"
|
||||
@@ -276,7 +305,7 @@
|
||||
- name: Install BEC plugins
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.pip:
|
||||
name: "{{ timestamped_deployment_path }}/{{ item.key }}"
|
||||
name: "{{ deployment_path }}/{{ item.key }}"
|
||||
editable: true
|
||||
virtualenv_command: "{{ python_version }} -m venv"
|
||||
virtualenv: "{{ bec_venv_path }}"
|
||||
@@ -287,14 +316,14 @@
|
||||
- name: Create BEC deployment config directory
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.file:
|
||||
path: "{{ timestamped_deployment_path }}/deployment_configs"
|
||||
path: "{{ deployment_path }}/deployment_configs"
|
||||
state: directory
|
||||
|
||||
- name: Copy BEC service config
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.template:
|
||||
src: bec_config_server.yaml.j2
|
||||
dest: "{{ timestamped_deployment_path }}/deployment_configs/server.yaml"
|
||||
dest: "{{ deployment_path }}/deployment_configs/server.yaml"
|
||||
notify:
|
||||
- (Re-)start BEC server
|
||||
|
||||
@@ -302,7 +331,7 @@
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.template:
|
||||
src: bec_config_client.yaml.j2
|
||||
dest: "{{ timestamped_deployment_path }}/deployment_configs/client.yaml"
|
||||
dest: "{{ deployment_path }}/deployment_configs/client.yaml"
|
||||
|
||||
- name: Copy BEC service files
|
||||
ansible.builtin.template:
|
||||
@@ -319,26 +348,18 @@
|
||||
notify:
|
||||
- (Re-)start BEC server
|
||||
|
||||
- name: Create a link to the current deployment
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.file:
|
||||
src: "{{ timestamped_deployment_path }}"
|
||||
dest: "{{ deployment_path_prefix }}/{{ deployment_name }}"
|
||||
state: link
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Copy BEC set account binary
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.copy:
|
||||
src: bec_set_account
|
||||
dest: "{{ timestamped_deployment_path }}/bin/"
|
||||
dest: "{{ deployment_path }}/bin/"
|
||||
mode: u+x,g+x
|
||||
|
||||
- name: Copy BEC set account script
|
||||
become_user: "{{ deployment_user }}"
|
||||
ansible.builtin.template:
|
||||
src: bec-set-account.j2
|
||||
dest: "{{ timestamped_deployment_path }}/bec-set-account"
|
||||
dest: "{{ deployment_path }}/bec-set-account"
|
||||
mode: u+x,g+rx
|
||||
|
||||
- name: Add bec startup script
|
||||
|
||||
@@ -5,7 +5,7 @@ Description=bec-server service
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
User={{ service_user }}
|
||||
WorkingDirectory={{ timestamped_deployment_path }}
|
||||
WorkingDirectory={{ deployment_path }}
|
||||
ExecStart=/bin/bash /usr/local/sbin/bec-server.sh
|
||||
Restart=on-failure
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
source {{ bec_venv_path }}/bin/activate
|
||||
exec bec-server start --config {{ timestamped_deployment_path }}/deployment_configs/server.yaml --interface tmux
|
||||
exec bec-server start --config {{ deployment_path }}/deployment_configs/server.yaml --interface tmux
|
||||
|
||||
@@ -15,4 +15,4 @@ if [ $# -ne 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec {{ timestamped_deployment_path }}/bin/bec_set_account -redis-host {{ ansible_hostname }} -pgroup "$1"
|
||||
exec {{ deployment_path }}/bin/bec_set_account -redis-host {{ ansible_hostname }} -pgroup "$1"
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
source {{ bec_venv_path }}/bin/activate
|
||||
exec bec --config {{ timestamped_deployment_path }}/deployment_configs/client.yaml "$@"
|
||||
exec bec --config {{ deployment_path }}/deployment_configs/client.yaml "$@"
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
---
|
||||
python_version: python3.12
|
||||
deployment_path: "{{ deployment_path_prefix }}/{{ deployment_name }}_deployments"
|
||||
timestamped_deployment_path: "{{ deployment_path }}/{{ ansible_date_time['iso8601_basic_short'] }}"
|
||||
bec_venv_path: "{{ timestamped_deployment_path }}/bec_venv"
|
||||
deployment_path: "{{ deployment_path_prefix }}/{{ deployment_name }}"
|
||||
old_deployments_path: "{{ deployment_path_prefix }}/old_{{ deployment_name }}_deployments"
|
||||
bec_venv_path: "{{ deployment_path }}/bec_venv"
|
||||
user_git_branch_name: "{{ git_username }}_{{ deployment_name }}_{{ ansible_date_time['iso8601_basic_short'] }}"
|
||||
bec_atlas_token: "{{ lookup('file', 'bec_atlas_token') }}"
|
||||
bec_bl_push_pat: "{{ lookup('file', 'bec_bl_push_pat') }}"
|
||||
|
||||
Reference in New Issue
Block a user