|
|
|
@@ -0,0 +1,150 @@
|
|
|
|
|
---
|
|
|
|
|
- name: Install and configure redis
|
|
|
|
|
include_role:
|
|
|
|
|
name: geerlingguy.redis
|
|
|
|
|
vars:
|
|
|
|
|
redis_bind_interface: 0.0.0.0
|
|
|
|
|
when: not ansible_check_mode
|
|
|
|
|
|
|
|
|
|
- name: Install required rpm packages
|
|
|
|
|
ansible.builtin.dnf:
|
|
|
|
|
name:
|
|
|
|
|
- python3.11
|
|
|
|
|
- git
|
|
|
|
|
- tmux
|
|
|
|
|
state: present
|
|
|
|
|
|
|
|
|
|
- name: Download epics_contexts.yml
|
|
|
|
|
ansible.builtin.uri:
|
|
|
|
|
url: https://git.psi.ch/gfa_rpms/gfa-global-profile/-/raw/master/src/etc/epics_contexts.yml
|
|
|
|
|
dest: /etc
|
|
|
|
|
|
|
|
|
|
- name: Download gfa_12_epics.sh
|
|
|
|
|
ansible.builtin.uri:
|
|
|
|
|
url: https://git.psi.ch/gfa_rpms/gfa-global-profile/-/raw/master/src/etc/profile.d/gfa_12_epics.sh
|
|
|
|
|
dest: /etc/profile.d
|
|
|
|
|
|
|
|
|
|
- name: Create a folder for BEC deployment
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "{{ bec_path }}"
|
|
|
|
|
state: directory
|
|
|
|
|
|
|
|
|
|
- name: Clone BEC repository
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.git:
|
|
|
|
|
repo: https://gitlab.psi.ch/bec/bec.git
|
|
|
|
|
dest: "{{ bec_path }}/bec"
|
|
|
|
|
version: "{{ bec_version }}"
|
|
|
|
|
force: true
|
|
|
|
|
|
|
|
|
|
- name: Clone Ophyd Devices repository
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.git:
|
|
|
|
|
repo: https://gitlab.psi.ch/bec/ophyd_devices.git
|
|
|
|
|
dest: "{{ bec_path }}/ophyd_devices"
|
|
|
|
|
version: "{{ ophyd_devices_version }}"
|
|
|
|
|
force: true
|
|
|
|
|
|
|
|
|
|
- name: Clone BEC Widgets repository
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.git:
|
|
|
|
|
repo: https://gitlab.psi.ch/bec/bec_widgets.git
|
|
|
|
|
dest: "{{ bec_path }}/bec_widgets"
|
|
|
|
|
version: "{{ bec_widgets_version }}"
|
|
|
|
|
force: true
|
|
|
|
|
|
|
|
|
|
- name: Clone BEC plugins
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.git:
|
|
|
|
|
repo: https://oauth2:{{ lookup('env', 'BEC_PLUGIN_TOKEN') }}@gitlab.psi.ch/bec/{{ item.key }}.git
|
|
|
|
|
dest: "{{ bec_path }}/{{ item.key }}"
|
|
|
|
|
version: "{{ item.value or 'main' }}"
|
|
|
|
|
force: true
|
|
|
|
|
loop: "{{ bec_plugins | dict2items }}"
|
|
|
|
|
when: not ansible_check_mode
|
|
|
|
|
|
|
|
|
|
- name: Clear token from git remote url in BEC plugins
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.command:
|
|
|
|
|
cmd: git remote set-url origin https://gitlab.psi.ch/bec/{{ item.key }}.git
|
|
|
|
|
chdir: "{{ bec_path }}/{{ item.key }}"
|
|
|
|
|
loop: "{{ bec_plugins | dict2items }}"
|
|
|
|
|
when: not ansible_check_mode
|
|
|
|
|
|
|
|
|
|
- name: Check if venv exists
|
|
|
|
|
ansible.builtin.stat:
|
|
|
|
|
path: "{{ bec_venv_path }}"
|
|
|
|
|
register: bec_venv_path_stat
|
|
|
|
|
|
|
|
|
|
- name: Stop bec_server
|
|
|
|
|
when: bec_venv_path_stat.stat.exists and bec_venv_path_stat.stat.isdir
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.shell:
|
|
|
|
|
cmd: |
|
|
|
|
|
source {{ bec_venv_path }}/bin/activate
|
|
|
|
|
bec-server stop
|
|
|
|
|
|
|
|
|
|
- name: Delete old venv (if it exists)
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "{{ bec_venv_path }}"
|
|
|
|
|
state: absent
|
|
|
|
|
diff: false
|
|
|
|
|
|
|
|
|
|
- name: Install bec_lib
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.pip:
|
|
|
|
|
name: "{{ bec_path }}/bec/bec_lib"
|
|
|
|
|
editable: true
|
|
|
|
|
virtualenv_command: python3.11 -m venv
|
|
|
|
|
virtualenv: "{{ bec_venv_path }}"
|
|
|
|
|
notify:
|
|
|
|
|
- (Re-)start BEC server
|
|
|
|
|
|
|
|
|
|
- name: Install ophyd_devices
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.pip:
|
|
|
|
|
name: "{{ bec_path }}/ophyd_devices"
|
|
|
|
|
editable: true
|
|
|
|
|
virtualenv_command: python3.11 -m venv
|
|
|
|
|
virtualenv: "{{ bec_venv_path }}"
|
|
|
|
|
notify:
|
|
|
|
|
- (Re-)start BEC server
|
|
|
|
|
|
|
|
|
|
- name: Install bec_widgets
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.pip:
|
|
|
|
|
name: "{{ bec_path }}/bec_widgets[pyside6]"
|
|
|
|
|
editable: true
|
|
|
|
|
virtualenv_command: python3.11 -m venv
|
|
|
|
|
virtualenv: "{{ bec_venv_path }}"
|
|
|
|
|
|
|
|
|
|
- name: Install bec_server
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.pip:
|
|
|
|
|
name: "{{ bec_path }}/bec/bec_server"
|
|
|
|
|
editable: true
|
|
|
|
|
virtualenv_command: python3.11 -m venv
|
|
|
|
|
virtualenv: "{{ bec_venv_path }}"
|
|
|
|
|
notify:
|
|
|
|
|
- (Re-)start BEC server
|
|
|
|
|
|
|
|
|
|
- name: Install BEC plugins
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.pip:
|
|
|
|
|
name: "{{ bec_path }}/{{ item.key }}"
|
|
|
|
|
editable: true
|
|
|
|
|
virtualenv_command: python3.11 -m venv
|
|
|
|
|
virtualenv: "{{ bec_venv_path }}"
|
|
|
|
|
loop: "{{ bec_plugins | dict2items }}"
|
|
|
|
|
notify:
|
|
|
|
|
- (Re-)start BEC server
|
|
|
|
|
|
|
|
|
|
- name: Copy BEC service config
|
|
|
|
|
become_user: "{{ bec_user }}"
|
|
|
|
|
ansible.builtin.template:
|
|
|
|
|
src: bec_config.yaml.j2
|
|
|
|
|
dest: "{{ bec_path }}/bec_config.yaml"
|
|
|
|
|
notify:
|
|
|
|
|
- (Re-)start BEC server
|