All checks were successful
CI / skip-ci-check (pull_request) Successful in 1m18s
CI / lint-and-test (pull_request) Successful in 1m21s
CI / ansible-validation (pull_request) Successful in 2m43s
CI / secret-scanning (pull_request) Successful in 1m19s
CI / dependency-scan (pull_request) Successful in 1m23s
CI / sast-scan (pull_request) Successful in 2m28s
CI / license-check (pull_request) Successful in 1m20s
CI / vault-check (pull_request) Successful in 2m21s
CI / playbook-test (pull_request) Successful in 2m19s
CI / container-scan (pull_request) Successful in 1m48s
CI / sonar-analysis (pull_request) Successful in 1m26s
CI / workflow-summary (pull_request) Successful in 1m17s
106 lines
3.5 KiB
YAML
106 lines
3.5 KiB
YAML
---
|
|
- name: Install basic development packages
|
|
ansible.builtin.apt:
|
|
name: "{{ development_packages }}"
|
|
state: present
|
|
become: true
|
|
|
|
- name: Check if NodeSource Node.js is installed
|
|
ansible.builtin.command: node --version
|
|
register: node_version_check
|
|
failed_when: false
|
|
changed_when: false
|
|
|
|
- name: Check NodeSource repository file presence
|
|
ansible.builtin.stat:
|
|
path: /etc/apt/sources.list.d/nodesource.list
|
|
register: nodesource_list_stat
|
|
when: node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
|
|
- name: Read NodeSource repository file
|
|
ansible.builtin.slurp:
|
|
src: /etc/apt/sources.list.d/nodesource.list
|
|
register: nodesource_list_slurp
|
|
when:
|
|
- node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
- nodesource_list_stat.stat.exists | default(false)
|
|
|
|
- name: Set NodeSource repository state
|
|
ansible.builtin.set_fact:
|
|
nodesource_repo_state: >-
|
|
{{
|
|
'not_exists'
|
|
if not (nodesource_list_stat.stat.exists | default(false))
|
|
else (
|
|
'correct_config'
|
|
if (
|
|
(nodesource_list_slurp.content | b64decode)
|
|
is search('^deb \\[signed-by=/etc/apt/keyrings/nodesource\\.gpg\\] https://deb\\.nodesource\\.com/node_22\\.x nodistro main', multiline=True)
|
|
)
|
|
else 'wrong_config'
|
|
)
|
|
}}
|
|
when: node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
|
|
- name: Check NodeSource GPG key presence
|
|
ansible.builtin.stat:
|
|
path: /etc/apt/keyrings/nodesource.gpg
|
|
register: nodesource_key_stat
|
|
when: node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
|
|
- name: Remove incorrect NodeSource repository
|
|
ansible.builtin.file:
|
|
path: /etc/apt/sources.list.d/nodesource.list
|
|
state: absent
|
|
become: true
|
|
when:
|
|
- node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
- nodesource_repo_state == "wrong_config"
|
|
|
|
- name: Create keyrings directory
|
|
ansible.builtin.file:
|
|
path: /etc/apt/keyrings
|
|
state: directory
|
|
mode: '0755'
|
|
become: true
|
|
when:
|
|
- node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
- not (nodesource_key_stat.stat.exists | default(false))
|
|
|
|
- name: Add NodeSource GPG key only if needed
|
|
ansible.builtin.get_url:
|
|
url: https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key
|
|
dest: /etc/apt/keyrings/nodesource.gpg
|
|
mode: '0644'
|
|
force: true
|
|
become: true
|
|
when:
|
|
- node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
- not (nodesource_key_stat.stat.exists | default(false))
|
|
|
|
- name: Add NodeSource repository only if needed
|
|
ansible.builtin.apt_repository:
|
|
repo: "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main"
|
|
state: present
|
|
update_cache: false
|
|
become: true
|
|
when:
|
|
- node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
- nodesource_repo_state in ["not_exists", "wrong_config"]
|
|
|
|
- name: Install Node.js 22 from NodeSource
|
|
ansible.builtin.apt:
|
|
name: nodejs
|
|
state: present
|
|
become: true
|
|
when: node_version_check.rc != 0 or not node_version_check.stdout.startswith('v22')
|
|
|
|
- name: Verify Node.js installation
|
|
ansible.builtin.command: node --version
|
|
register: final_node_version
|
|
changed_when: false
|
|
|
|
- name: Display Node.js version
|
|
ansible.builtin.debug:
|
|
msg: "Node.js version installed: {{ final_node_version.stdout if final_node_version.stdout is defined else 'Not checked in dry-run mode' }}"
|