From 5dd57118b31e192061ddd22ea26de8ee0f7b273a Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Sat, 7 Nov 2020 21:47:38 +0100 Subject: [PATCH] Initial commit --- .ansible-lint | 5 ++++ .gitignore | 14 +++++++++ .gitlab-ci.yml | 41 +++++++++++++++++++++++++ .prettier.json | 9 ++++++ defaults/main.yml | 2 ++ meta/main.yml | 19 ++++++++++++ tasks/main.yml | 58 ++++++++++++++++++++++++++++++++++++ templates/nodesource.j2 | 5 ++++ templates/nodesource.list.j2 | 4 +++ vars/archlinux.yml | 5 ++++ vars/debian-buster.yml | 7 +++++ vars/ubuntu-focal.yml | 8 +++++ 12 files changed, 177 insertions(+) create mode 100644 .ansible-lint create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .prettier.json create mode 100644 defaults/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/nodesource.j2 create mode 100644 templates/nodesource.list.j2 create mode 100644 vars/archlinux.yml create mode 100644 vars/debian-buster.yml create mode 100644 vars/ubuntu-focal.yml diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 0000000..e99d805 --- /dev/null +++ b/.ansible-lint @@ -0,0 +1,5 @@ +parseable: true +quiet: true +skip_list: + - '501' +use_default_rules: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c17815f --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +*.retry +*.swp + +.venv +.env +env +venv + +node_modules/ + +.vault +.vaults/ +vault +vaults/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..a4dfde9 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,41 @@ +stages: + - lint + - test + +cache: + key: "$CI_COMMIT_REF_SLUG" + paths: + - .cache/pip + - node_modules/ + +lint: + stage: lint + image: python:3.7 + before_script: + - pip install ansible ansible-lint --quiet + script: + - ansible-lint playbook.yml + only: + refs: + - development + - merge_requests + +pretty-lint: + stage: lint + image: node:12 + before_script: + - npm install + script: + - npx prettier "**/*.yml" --check + only: + refs: + - development + - merge_requests + +syntax-test: + stage: test + image: python:3.7 + before_script: + - pip install ansible ansible-lint --quiet + script: + - ansible-playbook playbook.yml --syntax-check diff --git a/.prettier.json b/.prettier.json new file mode 100644 index 0000000..9c76f6b --- /dev/null +++ b/.prettier.json @@ -0,0 +1,9 @@ +{ + "singleQuote": true, + "printWidth": 90, + "tabWidth": 2, + "useTabs": false, + "bracketSpacing": true, + "parser": "yaml" +} + diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..f64e051 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,2 @@ +node_version: "12" +node_gpg_key: "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..aa8346b --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,19 @@ +dependencies: [] + +galaxy_info: + author: sonny + description: "NPM setup" + license: "license GPLv3" + min_ansible_version: 2.7 + issue_tracker_url: "https://git.fudiggity.nl/sonny/ansible-playbooks/-/issues" + platforms: + - name: Debian + versions: + - buster + - name: Ubuntu + versions: + - focal + - name: Archlinux + galaxy_tags: + - development + - web diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..bacb13c --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,58 @@ +- name: load OS specific vars + include_vars: "{{ item }}" + with_first_found: + - files: + - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release|lower }}.yml" + - "{{ ansible_distribution|lower }}.yml" + - "{{ ansible_os_family|lower }}.yml" + paths: + - "{{ role_path }}/vars" + +- name: update apt cache + become: true + apt: + update_cache: yes + when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "Ubuntu" + +- name: update pacman cache + become: true + pacman: + update_cache: yes + when: ansible_facts['os_family'] == "Archlinux" + +- name: install needed tools + become: yes + package: + name: "{{ item }}" + state: present + loop: "{{ pre_packages }}" + +- name: add nodesource apt key + become: yes + apt_key: + url: "{{ node_gpg_key }}" + state: present + when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "Ubuntu" + +- name: add nodesource source + become: yes + template: + src: "nodesource.list.j2" + dest: "/etc/apt/sources.list.d/nodesource.list" + mode: "0600" + when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "Ubuntu" + +- name: create apt pinning file + become: yes + template: + src: "nodesource.j2" + dest: "/etc/apt/preferences.d/nodesource" + mode: "0644" + when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "Ubuntu" + +- name: install front-end packages + become: yes + package: + name: "{{ item }}" + state: present + loop: "{{ packages }}" diff --git a/templates/nodesource.j2 b/templates/nodesource.j2 new file mode 100644 index 0000000..54a8f4a --- /dev/null +++ b/templates/nodesource.j2 @@ -0,0 +1,5 @@ +# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} + +Package: * +Pin: origin deb.nodesource.com +Pin-Priority: 600 diff --git a/templates/nodesource.list.j2 b/templates/nodesource.list.j2 new file mode 100644 index 0000000..9428013 --- /dev/null +++ b/templates/nodesource.list.j2 @@ -0,0 +1,4 @@ +# {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} + +deb https://deb.nodesource.com/node_{{ node_version }}.x {{ ansible_distribution_release}} main +deb-src https://deb.nodesource.com/node_{{ node_version }}.x {{ ansible_distribution_release }} main diff --git a/vars/archlinux.yml b/vars/archlinux.yml new file mode 100644 index 0000000..5f81d8a --- /dev/null +++ b/vars/archlinux.yml @@ -0,0 +1,5 @@ +pre_packages: [] + +packages: + - nodejs + - npm diff --git a/vars/debian-buster.yml b/vars/debian-buster.yml new file mode 100644 index 0000000..deefc80 --- /dev/null +++ b/vars/debian-buster.yml @@ -0,0 +1,7 @@ +pre_packages: + - gpg + - git + +packages: + - nodejs + - npm diff --git a/vars/ubuntu-focal.yml b/vars/ubuntu-focal.yml new file mode 100644 index 0000000..56ecdbd --- /dev/null +++ b/vars/ubuntu-focal.yml @@ -0,0 +1,8 @@ +pre_packages: + - gpg + - gpg-agent + - openssh-client + +packages: + - nodejs + - npm