From 564069b8285f3a32719fcee4ce82a079c8338c79 Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Fri, 29 Jan 2021 21:27:06 +0100 Subject: [PATCH] Update strucutre --- .ansible-lint | 5 -- .gitignore | 2 + .gitlab-ci.yml | 26 ++------- .prettier.json | 9 ---- .prettierrc.yml | 5 ++ ansible.cfg | 3 ++ playbook.yml | 28 +++++++++- roles/requirements.yml => requirements.yml | 0 roles/.gitignore | 6 --- roles/development/defaults/main.yml | 17 ------ roles/development/handlers/main.yml | 1 - roles/development/meta/main.yml | 20 ------- roles/development/tasks/coc.yml | 33 ------------ roles/development/tasks/dotfiles.yml | 53 ------------------ roles/development/tasks/main.yml | 54 ------------------- roles/development/vars/main.yml | 2 - tasks/coc.yml | 33 ++++++++++++ tasks/dotfiles.yml | 53 ++++++++++++++++++ tasks/main.yml | 29 ++++++++++ .../templates => templates}/pyproject.j2 | 0 .../development/vars => vars}/archlinux.yml | 2 +- .../vars => vars}/debian-buster.yml | 0 vars/main.yml | 22 ++++++++ .../vars => vars}/ubuntu-focal.yml | 4 +- 24 files changed, 182 insertions(+), 225 deletions(-) delete mode 100644 .ansible-lint delete mode 100644 .prettier.json create mode 100644 .prettierrc.yml rename roles/requirements.yml => requirements.yml (100%) delete mode 100644 roles/.gitignore delete mode 100644 roles/development/defaults/main.yml delete mode 100644 roles/development/handlers/main.yml delete mode 100644 roles/development/meta/main.yml delete mode 100644 roles/development/tasks/coc.yml delete mode 100644 roles/development/tasks/dotfiles.yml delete mode 100644 roles/development/tasks/main.yml delete mode 100644 roles/development/vars/main.yml create mode 100644 tasks/coc.yml create mode 100644 tasks/dotfiles.yml create mode 100644 tasks/main.yml rename {roles/development/templates => templates}/pyproject.j2 (100%) rename {roles/development/vars => vars}/archlinux.yml (79%) rename {roles/development/vars => vars}/debian-buster.yml (100%) create mode 100644 vars/main.yml rename {roles/development/vars => vars}/ubuntu-focal.yml (58%) diff --git a/.ansible-lint b/.ansible-lint deleted file mode 100644 index e99d805..0000000 --- a/.ansible-lint +++ /dev/null @@ -1,5 +0,0 @@ -parseable: true -quiet: true -skip_list: - - '501' -use_default_rules: true diff --git a/.gitignore b/.gitignore index c17815f..ad2ea9f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ node_modules/ .vaults/ vault vaults/ + +roles/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 369b1c8..d9ade6f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,40 +3,24 @@ stages: - test cache: - key: "$CI_COMMIT_REF_SLUG" + 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 + - npm install prettier --no-save script: - - npx prettier "**/*.yml" --check - only: - refs: - - development - - merge_requests + - npx prettier '**/*.yml' --check syntax-test: stage: test image: python:3.7 before_script: - - pip install ansible ansible-lint --quiet - - ansible-galaxy install -r roles/requirements.yml + - pip install ansible --quiet + - ansible-galaxy install -r requirements.yml script: - ansible-playbook playbook.yml --syntax-check diff --git a/.prettier.json b/.prettier.json deleted file mode 100644 index 9c76f6b..0000000 --- a/.prettier.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "singleQuote": true, - "printWidth": 90, - "tabWidth": 2, - "useTabs": false, - "bracketSpacing": true, - "parser": "yaml" -} - diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..0cb31e6 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,5 @@ +singleQuote: true +printWidth: 90 +tabWidth: 2 +useTabs: false +bracketSpacing: true diff --git a/ansible.cfg b/ansible.cfg index 002a50d..4c41b64 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,2 +1,5 @@ [defaults] roles_path = ./roles + +[privilege_escalation] +become_ask_pass = True diff --git a/playbook.yml b/playbook.yml index e1c5273..9821c16 100644 --- a/playbook.yml +++ b/playbook.yml @@ -1,3 +1,29 @@ - hosts: localhost + pre_tasks: + - 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: + - 'vars/' + - name: install packages + become: true + package: + name: '{{ item }}' + state: present + loop: '{{ packages }}' roles: - - development + - common + - npm + tasks: + - import_tasks: 'tasks/main.yml' + - include_role: + name: common + tasks_from: 'poetry.yml' + - import_tasks: 'tasks/dotfiles.yml' + - import_tasks: 'tasks/coc.yml' + vars_files: + - 'vars/main.yml' diff --git a/roles/requirements.yml b/requirements.yml similarity index 100% rename from roles/requirements.yml rename to requirements.yml diff --git a/roles/.gitignore b/roles/.gitignore deleted file mode 100644 index 906efb0..0000000 --- a/roles/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# ignore all external roles and files in the roles dir -/* - -!.gitignore -!requirements.yml -!development*/ diff --git a/roles/development/defaults/main.yml b/roles/development/defaults/main.yml deleted file mode 100644 index 4699b1b..0000000 --- a/roles/development/defaults/main.yml +++ /dev/null @@ -1,17 +0,0 @@ -packages: [] - -xdg_config_dir: "{{ ansible_env.HOME }}/.config" -xdg_data_dir: "{{ ansible_env.HOME }}/.local/share" - -dotfiles_repo: "git@git.fudiggity.nl:sonny/dotfiles.git" -githook_repo: "git@git.fudiggity.nl:sonny/git-hooks.git" - -vim_plugins: - - { url: "https://github.com/preservim/nerdtree", name: "nerdtree" } - - { url: "https://github.com/neoclide/coc.nvim", name: "coc.nvim" } - - { url: "https://github.com/sheerun/vim-polyglot", name: "vim-polygot" } - -poetry_packages: - - black - - pylint - - autoflake diff --git a/roles/development/handlers/main.yml b/roles/development/handlers/main.yml deleted file mode 100644 index 8b13789..0000000 --- a/roles/development/handlers/main.yml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/roles/development/meta/main.yml b/roles/development/meta/main.yml deleted file mode 100644 index 815c5da..0000000 --- a/roles/development/meta/main.yml +++ /dev/null @@ -1,20 +0,0 @@ -dependencies: - - npm - -galaxy_info: - author: sonny - description: "Sets up development environment" - 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 - - system diff --git a/roles/development/tasks/coc.yml b/roles/development/tasks/coc.yml deleted file mode 100644 index f8e4166..0000000 --- a/roles/development/tasks/coc.yml +++ /dev/null @@ -1,33 +0,0 @@ -- name: install coc.nvim node packages - npm: - path: "{{ xdg_data_dir }}/nvim/site/pack/default/start/coc.nvim" - state: present - global: false - -- name: create default coc.nvim venv directory - file: - path: "{{ ansible_env.HOME }}/.local/lib/coc" - state: directory - mode: "0755" - -- name: copy coc pyproject.toml - template: - src: "pyproject.j2" - dest: "{{ ansible_env.HOME }}/.local/lib/coc/pyproject.toml" - mode: "0644" - force: false - -- name: set default venv python version - command: "poetry env use python3" - args: - chdir: "{{ ansible_env.HOME }}/.local/lib/coc" - environment: - PATH: "{{ ansible_env.HOME }}/.local/bin:{{ ansible_env.PATH }}" - when: ansible_distribution == "Debian" - -- name: install default coc.nvim python packages # noqa 301 - command: "poetry install" - args: - chdir: "{{ ansible_env.HOME }}/.local/lib/coc" - environment: - PATH: "{{ ansible_env.HOME }}/.local/bin:{{ ansible_env.PATH }}" diff --git a/roles/development/tasks/dotfiles.yml b/roles/development/tasks/dotfiles.yml deleted file mode 100644 index d8ee079..0000000 --- a/roles/development/tasks/dotfiles.yml +++ /dev/null @@ -1,53 +0,0 @@ -- name: clone dotfiles - git: - repo: "{{ dotfiles_repo }}" - dest: "{{ ansible_env.HOME }}/dotfiles" - version: master - update: yes - -- name: create dotfile folders - file: - state: directory - mode: "0755" - path: "{{ item }}" - loop: - - "{{ xdg_config_dir }}/nvim" - - "{{ xdg_data_dir }}/nvim/site" - - "{{ xdg_config_dir }}/kitty" - -- name: setup dotfiles - file: - path: "{{ item.dest }}" - src: "{{ item.src }}" - mode: "0755" - state: link - force: true - loop: - - { - src: "{{ ansible_env.HOME }}/dotfiles/nvim/init.vim", - dest: "{{ xdg_config_dir }}/nvim/init.vim", - } - - { - src: "{{ ansible_env.HOME }}/dotfiles/.vimrc", - dest: "{{ ansible_env.HOME }}/.vimrc", - } - - { - src: "{{ ansible_env.HOME }}/dotfiles/.bashrc", - dest: "{{ ansible_env.HOME }}/.bashrc", - } - - { - src: "{{ ansible_env.HOME }}/dotfiles/.profile", - dest: "{{ ansible_env.HOME }}/.profile", - } - - { - src: "{{ ansible_env.HOME }}/dotfiles/nvim/colors", - dest: "{{ xdg_data_dir }}/nvim/site/colors", - } - - { - src: "{{ ansible_env.HOME }}/dotfiles/kitty.conf", - dest: "{{ xdg_config_dir }}/kitty/kitty.conf", - } - - { - src: "{{ ansible_env.HOME }}/dotfiles/.gitignore", - dest: "{{ ansible_env.HOME }}/.gitignore", - } diff --git a/roles/development/tasks/main.yml b/roles/development/tasks/main.yml deleted file mode 100644 index 71e29e4..0000000 --- a/roles/development/tasks/main.yml +++ /dev/null @@ -1,54 +0,0 @@ -- 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: add gitlab to known hosts - include_role: - name: common - tasks_from: known_hosts.yml - vars: - user: "{{ ansible_user_id }}" - items: - - { domain: "{{ gitlab_domain }}", key: "{{ gitlab_host_key }}" } - -- name: install packages - become: true - package: - name: "{{ item }}" - state: present - loop: "{{ packages }}" - -- name: create development dir - file: - path: "{{ ansible_env.HOME }}/development" - state: directory - mode: "0755" - -- include_tasks: "dotfiles.yml" - -- name: clone git hooks - git: - repo: "{{ githook_repo }}" - dest: "{{ ansible_env.HOME }}/development/git-hooks" - update: true - version: master - -- name: clone neovim packages - git: - repo: "{{ item.url }}" - dest: "{{ xdg_data_dir }}/nvim/site/pack/default/start/{{ item.name }}" - version: master - update: true - loop: "{{ vim_plugins }}" - -- include_role: - name: common - tasks_from: "poetry" - -- include_tasks: coc.yml diff --git a/roles/development/vars/main.yml b/roles/development/vars/main.yml deleted file mode 100644 index 63d2cfb..0000000 --- a/roles/development/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -gitlab_domain: "git.fudiggity.nl" -gitlab_host_key: "git.fudiggity.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICNmvcxza79T7JZMkifmquwXH/kMUqDnKs9Oob+JrRvn" diff --git a/tasks/coc.yml b/tasks/coc.yml new file mode 100644 index 0000000..eec5ac3 --- /dev/null +++ b/tasks/coc.yml @@ -0,0 +1,33 @@ +- name: install coc.nvim node packages + npm: + path: '{{ xdg_data_dir }}/nvim/site/pack/default/start/coc.nvim' + state: present + global: false + +- name: create default coc.nvim venv directory + file: + path: '{{ ansible_env.HOME }}/.local/lib/coc' + state: directory + mode: '0755' + +- name: copy coc pyproject.toml + template: + src: 'pyproject.j2' + dest: '{{ ansible_env.HOME }}/.local/lib/coc/pyproject.toml' + mode: '0644' + force: false + +- name: set default venv python version + command: 'poetry env use python3' + args: + chdir: '{{ ansible_env.HOME }}/.local/lib/coc' + environment: + PATH: '{{ ansible_env.HOME }}/.local/bin:{{ ansible_env.PATH }}' + when: ansible_distribution == "Debian" + +- name: install default coc.nvim python packages # noqa 301 + command: 'poetry install' + args: + chdir: '{{ ansible_env.HOME }}/.local/lib/coc' + environment: + PATH: '{{ ansible_env.HOME }}/.local/bin:{{ ansible_env.PATH }}' diff --git a/tasks/dotfiles.yml b/tasks/dotfiles.yml new file mode 100644 index 0000000..e0fa7ee --- /dev/null +++ b/tasks/dotfiles.yml @@ -0,0 +1,53 @@ +- name: clone dotfiles + git: + repo: '{{ dotfiles_repo }}' + dest: '{{ ansible_env.HOME }}/dotfiles' + version: master + update: yes + +- name: create dotfile folders + file: + state: directory + mode: '0755' + path: '{{ item }}' + loop: + - '{{ xdg_config_dir }}/nvim' + - '{{ xdg_data_dir }}/nvim/site' + - '{{ xdg_config_dir }}/kitty' + +- name: setup dotfiles + file: + path: '{{ item.dest }}' + src: '{{ item.src }}' + mode: '0755' + state: link + force: true + loop: + - { + src: '{{ ansible_env.HOME }}/dotfiles/nvim/init.vim', + dest: '{{ xdg_config_dir }}/nvim/init.vim', + } + - { + src: '{{ ansible_env.HOME }}/dotfiles/.vimrc', + dest: '{{ ansible_env.HOME }}/.vimrc', + } + - { + src: '{{ ansible_env.HOME }}/dotfiles/.bashrc', + dest: '{{ ansible_env.HOME }}/.bashrc', + } + - { + src: '{{ ansible_env.HOME }}/dotfiles/.profile', + dest: '{{ ansible_env.HOME }}/.profile', + } + - { + src: '{{ ansible_env.HOME }}/dotfiles/nvim/colors', + dest: '{{ xdg_data_dir }}/nvim/site/colors', + } + - { + src: '{{ ansible_env.HOME }}/dotfiles/kitty.conf', + dest: '{{ xdg_config_dir }}/kitty/kitty.conf', + } + - { + src: '{{ ansible_env.HOME }}/dotfiles/.gitignore', + dest: '{{ ansible_env.HOME }}/.gitignore', + } diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..2368775 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,29 @@ +- name: add gitlab to known hosts + include_role: + name: common + tasks_from: 'known_hosts.yml' + vars: + user: '{{ ansible_user_id }}' + items: + - { domain: '{{ gitlab_domain }}', key: '{{ gitlab_host_key }}' } + +- name: create development dir + file: + path: '{{ ansible_env.HOME }}/development' + state: directory + mode: '0755' + +- name: clone git hooks + git: + repo: '{{ githook_repo }}' + dest: '{{ ansible_env.HOME }}/development/git-hooks' + update: true + version: master + +- name: clone neovim packages + git: + repo: '{{ item.url }}' + dest: '{{ xdg_data_dir }}/nvim/site/pack/default/start/{{ item.name }}' + version: master + update: true + loop: '{{ vim_plugins }}' diff --git a/roles/development/templates/pyproject.j2 b/templates/pyproject.j2 similarity index 100% rename from roles/development/templates/pyproject.j2 rename to templates/pyproject.j2 diff --git a/roles/development/vars/archlinux.yml b/vars/archlinux.yml similarity index 79% rename from roles/development/vars/archlinux.yml rename to vars/archlinux.yml index f96720f..7cd5504 100644 --- a/roles/development/vars/archlinux.yml +++ b/vars/archlinux.yml @@ -7,5 +7,5 @@ packages: - npm - ctags - kitty - - docker # TODO add tasks + - docker - docker-compose diff --git a/roles/development/vars/debian-buster.yml b/vars/debian-buster.yml similarity index 100% rename from roles/development/vars/debian-buster.yml rename to vars/debian-buster.yml diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..6451192 --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,22 @@ +packages: [] + +xdg_config_dir: '{{ ansible_env.HOME }}/.config' +xdg_data_dir: '{{ ansible_env.HOME }}/.local/share' + +dotfiles_repo: 'git@git.fudiggity.nl:sonny/dotfiles.git' +githook_repo: 'git@git.fudiggity.nl:sonny/git-hooks.git' + +vim_plugins: + - { url: 'https://github.com/preservim/nerdtree', name: 'nerdtree' } + - { url: 'https://github.com/neoclide/coc.nvim', name: 'coc.nvim' } + - { url: 'https://github.com/sheerun/vim-polyglot', name: 'vim-polygot' } + +poetry_packages: + - black + - pylint + - autoflake + +gitlab_domain: 'git.fudiggity.nl' +gitlab_host_key: 'git.fudiggity.nl ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICNmvcxza79T7JZMkifmquwXH/kMUqDnKs9Oob+JrRvn' + +skip_common_setup: true diff --git a/roles/development/vars/ubuntu-focal.yml b/vars/ubuntu-focal.yml similarity index 58% rename from roles/development/vars/ubuntu-focal.yml rename to vars/ubuntu-focal.yml index da4b45a..7281d11 100644 --- a/roles/development/vars/ubuntu-focal.yml +++ b/vars/ubuntu-focal.yml @@ -1,5 +1,5 @@ -dotfiles_repo: "https://git.fudiggity.nl/sonny/dotfiles.git" -githook_repo: "https://git.fudiggity.nl/sonny/git-hooks.git" +dotfiles_repo: 'https://git.fudiggity.nl/sonny/dotfiles.git' +githook_repo: 'https://git.fudiggity.nl/sonny/git-hooks.git' packages: - git