diff --git a/ansible/inventory/host_vars/deadalus.yml b/ansible/inventory/host_vars/deadalus.yml index 2e9703c..ff0c099 100644 --- a/ansible/inventory/host_vars/deadalus.yml +++ b/ansible/inventory/host_vars/deadalus.yml @@ -4,6 +4,13 @@ hostname: deadalus host_packages: [] host_enabled_services: [] +deadalus_vscode_extensions: + - ms-vscode-remote.remote-containers + - ms-vscode-remote.remote-ssh + - ms-azuretools.vscode-docker + - redhat.vscode-yaml + - redhat.ansible + workstation_gnome_managed_settings: - schema: org.gnome.shell key: favorite-apps diff --git a/ansible/roles/profile_workstation_gnome/tasks/main.yml b/ansible/roles/profile_workstation_gnome/tasks/main.yml index 6adae4d..062bef6 100644 --- a/ansible/roles/profile_workstation_gnome/tasks/main.yml +++ b/ansible/roles/profile_workstation_gnome/tasks/main.yml @@ -74,6 +74,61 @@ changed_when: true when: item.stdout | trim != item.item.value +- name: Check whether VS Code CLI is available on workstation host + tags: [packages, vscode] + ansible.builtin.command: + argv: + - code + - --version + become_user: "{{ username }}" + environment: + HOME: "{{ user_home }}" + register: workstation_vscode_cli + changed_when: false + failed_when: false + when: (deadalus_vscode_extensions | default([])) | length > 0 + +- name: Ensure VS Code CLI is available before managing extensions + tags: [packages, vscode] + ansible.builtin.fail: + msg: Ensure Visual Studio Code is installed before managing VS Code extensions on deadalus. + when: + - (deadalus_vscode_extensions | default([])) | length > 0 + - workstation_vscode_cli.rc != 0 + +- name: Read installed VS Code extensions on workstation host + tags: [packages, vscode] + ansible.builtin.command: + argv: + - code + - --list-extensions + become_user: "{{ username }}" + environment: + HOME: "{{ user_home }}" + register: workstation_vscode_extensions_current + changed_when: false + when: + - (deadalus_vscode_extensions | default([])) | length > 0 + - workstation_vscode_cli.rc == 0 + +- name: Install VS Code extensions on workstation host + tags: [packages, vscode] + ansible.builtin.command: + argv: + - code + - --install-extension + - "{{ item }}" + - --force + become_user: "{{ username }}" + environment: + HOME: "{{ user_home }}" + loop: "{{ deadalus_vscode_extensions | default([]) }}" + loop_control: + label: "{{ item }}" + when: + - workstation_vscode_cli.rc == 0 + - item not in (workstation_vscode_extensions_current.stdout_lines | default([])) + - name: Download workstation GNOME extension archives tags: [packages, gnome] ansible.builtin.get_url: