From 7e9b5fa65e2f0819075999d6eb3a0adc124e8b31 Mon Sep 17 00:00:00 2001 From: Benjamin Labrecque Date: Tue, 7 Jul 2026 11:00:06 +0200 Subject: [PATCH] feature: parametrize install ioc with dev/prod --- ansible/hosts.yml | 4 +- ansible/plays/ioc-install-and-restart.yml | 71 +++++++++++++++++++++++ ansible/plays/ioc-install.yml | 26 --------- ansible/plays/restart-master-ioc.yml | 31 +--------- cli/src/service.py | 2 +- 5 files changed, 77 insertions(+), 57 deletions(-) create mode 100644 ansible/plays/ioc-install-and-restart.yml delete mode 100644 ansible/plays/ioc-install.yml diff --git a/ansible/hosts.yml b/ansible/hosts.yml index 5958bfa..3097a88 100644 --- a/ansible/hosts.yml +++ b/ansible/hosts.yml @@ -1,4 +1,4 @@ all: hosts: - sls-lc - sls-vserv-bd-hla01-dev \ No newline at end of file + sls-lc: + sls-vserv-bd-hla01-dev: \ No newline at end of file diff --git a/ansible/plays/ioc-install-and-restart.yml b/ansible/plays/ioc-install-and-restart.yml new file mode 100644 index 0000000..15929ba --- /dev/null +++ b/ansible/plays/ioc-install-and-restart.yml @@ -0,0 +1,71 @@ +- name: Install an IOC and restart it + # TODO: dev/prod + hosts: sls-lc + gather_facts: false + + vars: + workspace_dir: "/tmp/hla_framework_bd" + + tasks: + - name: Clone this repository + ansible.builtin.git: + repo: "git@gitea.psi.ch:sls/hla_framework_bd.git" + dest: "{{ workspace_dir }}" + version: main + accept_hostkey: true + force: true + + - name: "[{{ service_dir_name }}] Establish environment naming conventions" + ansible.builtin.set_fact: + # Extract MASTER from 000-master + service_name_upper: "{{ service_dir_name[4:] | upper }}" + # Set suffix to "-DEV" if dev, otherwise empty "" + env_suffix_upper: "{{ '-DEV' if agebd_env == 'dev' else '' }}" + # Set suffix to "-dev" if dev, otherwise empty "" + env_suffix_lower: "{{ '-dev' if agebd_env == 'dev' else '' }}" + + - name: "[{{ service_dir_name }}] Define file paths" + ansible.builtin.set_fact: + ioc_base_dir: "{{ workspace_dir }}/services/{{ service_dir_name }}/current/ioc" + orig_subs_name: "AGEBD-CPCL-{{ service_name_upper }}_main.subs" + target_subs_name: "AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }}_main.subs" + orig_params_name: "AGEBD-CPCL-{{ service_name_upper }}_parameters.yaml" + target_params_name: "AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }}_parameters.yaml" + + # Rename the subs file if we are in DEV + - name: "[{{ service_dir_name }}] Rename substitution file for environment" + ansible.builtin.command: + cmd: "mv {{ ioc_base_dir }}/{{ orig_subs_name }} {{ ioc_base_dir }}/{{ target_subs_name }}" + removes: "{{ ioc_base_dir }}/{{ orig_subs_name }}" # Only runs if the original file exists + + # Rename the paramters file if we are in DEV + - name: "[{{ service_dir_name }}] Rename parameters file for environment" + ansible.builtin.command: + cmd: "mv {{ ioc_base_dir }}/{{ orig_params_name }} {{ ioc_base_dir }}/{{ target_params_name }}" + removes: "{{ ioc_base_dir }}/{{ orig_params_name }}" # Only runs if the original file exists + + # Replace {{ agebd_env }} inside the newly renamed subs file + - name: "[{{ service_dir_name }}] Substitute environment token inside subs file" + ansible.builtin.replace: + path: "{{ ioc_base_dir }}/{{ target_subs_name }}" + regexp: '\{\{\s*agebd_env\s*\}\}' + replace: "{{ env_suffix_upper }}" + + # Replace {{ agebd_env }} inside the newly renamed params file + - name: "[{{ service_dir_name }}] Substitute environment token inside params file" + ansible.builtin.replace: + path: "{{ ioc_base_dir }}/{{ target_params_name }}" + regexp: '\{\{\s*agebd_env\s*\}\}' + replace: "{{ env_suffix_lower }}" + + - name: "[{{ service_dir_name }}] Run ioc install" + ansible.builtin.shell: + cmd: "ioc install -V --facility sls --ioc AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }} --clean" + chdir: "{{ ioc_base_dir }}" + changed_when: true + + - name: "[{{ service_dir_name }}] Restart IOC" + ansible.builtin.shell: + cmd: "ioc restart AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }}" + chdir: "{{ ioc_base_dir }}" + changed_when: true \ No newline at end of file diff --git a/ansible/plays/ioc-install.yml b/ansible/plays/ioc-install.yml deleted file mode 100644 index 0e3db3b..0000000 --- a/ansible/plays/ioc-install.yml +++ /dev/null @@ -1,26 +0,0 @@ -- name: Install an IOC - # TODO: dev/prod - hosts: sls-lc - gather_facts: false - - # TODO: checkout repo, cd to services//ioc, 'ioc install -V --ioc AGEBD-CPCL- –clean' - vars: - - workspace_dir: "/tmp/hla_framework_bd" - - service_id: "{{ service_id }}" - - service_name_lower: "{{ service_name_lower }}" - - service_name_upper: "{{ service_name_upper }}" - - tasks: - - name: Clone this repository - ansible.builtin.git: - repo: "git@gitea.psi.ch:sls/hla_framework_bd.git" - dest: "{{ workspace_dir }}" - version: main - accept_hostkey: true - - - name: Run ioc install - ansible.builtin.shell: - # TODO: prod/dev - cmd: "ioc install -V --facility sls --ioc AGEBD-CPCL-{{ service_name_upper }}-DEV --clean" - chdir: "{{ workspace_dir }}/services/{{ service_id }}-{{ service_name_lower }}/ioc" - changed_when: true \ No newline at end of file diff --git a/ansible/plays/restart-master-ioc.yml b/ansible/plays/restart-master-ioc.yml index d05eebb..73eea01 100644 --- a/ansible/plays/restart-master-ioc.yml +++ b/ansible/plays/restart-master-ioc.yml @@ -1,31 +1,6 @@ - name: Restart Master IOC - # TODO: dev/prod - hosts: localhost - gather_facts: false - vars: - - workspace_dir: "/tmp/hla_framework_bd" + service_dir_name: 000-master + import_playbook: ioc-install-and-restart.yml - tasks: - - name: Clone this repository - ansible.builtin.git: - repo: "git@gitea.psi.ch:sls/hla_framework_bd.git" - dest: "{{ workspace_dir }}" - version: main - accept_hostkey: true - - - name: Reinstall MASTER IOC - ansible.builtin.shell: - # TODO: prod/dev - cmd: "ioc install -V --facility sls --ioc AGEBD-CPCL-MASTER-DEV --clean" - chdir: "{{ workspace_dir }}/services/000-master/ioc" - changed_when: true - - - name: Restart MASTER IOC - ansible.builtin.shell: - # TODO: prod/dev - cmd: "ioc restart AGEBD-CPCL-MASTER-DEV" - chdir: "{{ workspace_dir }}/services/000-master/ioc" - changed_when: true - - # TODO: restart systemd master service? \ No newline at end of file + # TODO: restart systemd master service? \ No newline at end of file diff --git a/cli/src/service.py b/cli/src/service.py index 93ca8e0..20f85db 100644 --- a/cli/src/service.py +++ b/cli/src/service.py @@ -15,7 +15,7 @@ def add( ): init_logging() ServiceCreator( - ioc_host="ex-host", # TODO + ioc_host="ex-host", # TODO: "sls-vserv-bd-01{{ agebd_env }}" ioc_port=9999, # TODO user="user", # TODO ).add_service(name=name)