From 3a49358b9938fb48a16f04f0951fcd76ff70561e Mon Sep 17 00:00:00 2001 From: Nils Gerstner Date: Tue, 25 Apr 2023 15:46:06 +0200 Subject: [PATCH] - Add user variable - Add kubernetes setup - Adjust neovim compilation - Add maven to java setup" --- local.yml | 31 ++++---- tasks/cli-tools.yml | 6 +- tasks/core-setup.yml | 24 +++---- tasks/deno-setup.yml | 25 ++++--- tasks/dotfiles.yml | 145 +++++++++++++++++++------------------- tasks/git-setup.yml | 116 +++++++++++++++++------------- tasks/golang-setup.yml | 6 +- tasks/java-setup.yml | 30 ++++---- tasks/kubernetes.yml | 51 ++++++++++++++ tasks/meilisearch.yml | 21 +++--- tasks/node-setup.yml | 6 +- tasks/nvim-setup.yml | 87 +++++++++++++---------- tasks/task-setup.yml | 9 +++ tasks/workspace-setup.yml | 6 +- 14 files changed, 332 insertions(+), 231 deletions(-) create mode 100644 tasks/kubernetes.yml create mode 100644 tasks/task-setup.yml diff --git a/local.yml b/local.yml index bd8d574..f24e6f5 100644 --- a/local.yml +++ b/local.yml @@ -1,32 +1,30 @@ -- hosts: localhost - vars: - source_key: "./.ssh/id_rsa" - dest_key: "{{ lookup('env', 'HOME') }}/.ssh/id_rsa" - personal: "{{ lookup('env', 'HOME') }}/personal" +- name: Dev setup + hosts: localhost + connection: local pre_tasks: - - name: Update Apt - become: true - apt: + - apt: force_apt_get: true - update_cache: true state: present + update_cache: true + become: true + name: Update Apt tags: - install - neovim - core - golang - dotfiles - - name: Update Apt - become: true - apt: + - apt: name: [ "sudo", "git" ] + become: true + name: Install sudo and git tags: - install - neovim - dotfiles tasks: # - include: tasks/ssh.yml - # - include: tasks/git-setup.yml + - include: tasks/git-setup.yml - include: tasks/cli-tools.yml - include: tasks/core-setup.yml # - include: tasks/node-setup.yml @@ -47,3 +45,10 @@ - include: tasks/java-setup.yml - include: tasks/node-setup.yml - include: tasks/deno-setup.yml + - include: tasks/kubernetes.yml + - include: tasks/task-setup.yml + vars: + dest_key: "{{ lookup('env', 'HOME') }}/.ssh/id_rsa" + personal: "{{ lookup('env', 'HOME') }}/personal" + source_key: "./.ssh/id_rsa" + my_user: nige diff --git a/tasks/cli-tools.yml b/tasks/cli-tools.yml index 1204fa5..5c13ad4 100644 --- a/tasks/cli-tools.yml +++ b/tasks/cli-tools.yml @@ -1,7 +1,7 @@ -- name: Install packages (tmux, netcat, fzf, xclip, tldr, wget, curl, jq, libxml2-utils, xxd, git) +- apt: + name: [ "tmux", "netcat", "fzf", "xclip", "tldr", "wget", "curl", "jq", "libxml2-utils", "xxd", "git", "taskwarrior", "ripgrep", "tree" ] become: true - apt: - name: [ "tmux", "netcat", "fzf", "xclip", "tldr", "wget", "curl", "jq", "libxml2-utils", "xxd", "git" ] + name: Install packages (tmux, netcat, fzf, xclip, tldr, wget, curl, jq, libxml2-utils, xxd, git) tags: - install - productivity diff --git a/tasks/core-setup.yml b/tasks/core-setup.yml index 23b556d..6b9bd7d 100644 --- a/tasks/core-setup.yml +++ b/tasks/core-setup.yml @@ -1,33 +1,33 @@ -- name: Install System Packages 1 (build-essential, cmake, pkg-config, pthread) - become: true - apt: +- apt: name: ["build-essential", "cmake", "pkg-config", "libpthread-stubs0-dev"] + become: true + name: Install System Packages 1 (build-essential, cmake, pkg-config, pthread) tags: - install - neovim - core -- name: Install System Packages 2 (lua, unzip, libtool, libtool-bin, gettext) - become: true - apt: +- apt: name: [ "lua5.1", "unzip", "libtool", "libtool-bin", "gettext"] + become: true + name: Install System Packages 2 (lua, unzip, libtool, libtool-bin, gettext) tags: - install - neovim - core -- name: Install System Packages 3 (ccache, python3-pip, dconf-editor, moreutils) +- apt: + name: [ "ccache", "python3-pip", "dconf-editor", "moreutils", "cargo" ] become: true - apt: - name: [ "ccache", "python3-pip", "dconf-editor", "moreutils"] + name: Install System Packages 3 (ccache, python3-pip, dconf-editor, moreutils, cargo) tags: - install - core -- name: Install Clang - become: true - apt: +- apt: name: ["clang", "clang-11", "clang-12", "clang-15", "clangd", "clangd-11", "clangd-12", "clangd-15"] + become: true + name: Install Clang tags: - install - neovim diff --git a/tasks/deno-setup.yml b/tasks/deno-setup.yml index d6c449f..5d7d6db 100644 --- a/tasks/deno-setup.yml +++ b/tasks/deno-setup.yml @@ -1,19 +1,28 @@ -- name: Install libwebkit2gtk - become: true - apt: +- apt: name: [ "libwebkit2gtk-4.0-dev" ] + become: true + name: Install libwebkit2gtk tags: - install - deno - productivity -- name: Install deno +- ansible.builtin.get_url: + dest: /opt/deno-install.sh + mode: '777' + url: https://deno.land/x/install/install.sh + name: Download deno install script + register: denoinstall + tags: + - install + - notes +- become: true + become_user: "{{my_user}}" + name: Install deno shell: | - curl -fsSL https://deno.land/x/install/install.sh | sh - when: st.stat.islnk is not defined + /opt/deno-install.sh tags: - install - deno - productivity - become: true - become_user: nige + when: denoinstall.changed diff --git a/tasks/dotfiles.yml b/tasks/dotfiles.yml index 388341d..8b57c28 100644 --- a/tasks/dotfiles.yml +++ b/tasks/dotfiles.yml @@ -1,93 +1,92 @@ # tasks/dotfiles.yaml -- name: Install stow - become: true - apt: +- apt: name: [ "stow" ] - tags: - - git - - install - - dotfiles - - productivity - -- name: Check if already stowed - stat: - path: /home/nige/.stowed - register: st - tags: - - git - - install - - dotfiles - - productivity become: true - become_user: nige - -- name: Remove existing .bashrc and dotfolder from home - file: - path: "{{ item }}" - state: absent - # when: st.stat.islnk is not defined + name: Install stow tags: - git - install - dotfiles - productivity - #become: true - #become_user: nige - loop: - - /home/nige/.bashrc - #- /tmp/main.zip - #- /home/nige/dotfiles -- name: Clone the dotfiles repository - git: - repo: https://git.gerstner.se/nils/ansible_dotfiles.git - dest: /home/nige/dotfiles - force: true - when: st.stat.islnk is not defined +- become: true + become_user: "{{my_user}}" + name: Check if already stowed + register: st + stat: + path: "/home/{{my_user}}/.stowed" tags: - git - install - dotfiles - productivity - become: true - become_user: nige -# - name: Move dotfiles to dest folder -# ansible.builtin.copy: -# src: /tmp/ansible/dotfiles -# dest: ~/ -# remote_src: yes -# owner: root -# group: root -# # mode: u+rw,g-wx,o-rwx -# # validate: /usr/sbin/visudo -csf %s +# - file: +# path: "{{ item }}" +# state: absent +# loop: +# - "/home/{{my_user}}/.bashrc" +# #- /tmp/main.zip +# #- "/home/{{my_user}}/dotfiles" +# +# # when: st.stat.islnk is not defined +# name: Remove existing .bashrc and dotfolder from home #become: true +# #become_user: "{{my_user}}" +# tags: +# - git +# - install +# - dotfiles +# - productivity +# - become: true +# become_user: "{{my_user}}" +# git: +# dest: "/home/{{my_user}}/dotfiles" +# force: true +# name: Clone the dotfiles repository +# repo: https://git.gerstner.se/nils/ansible_dotfiles.git +# tags: +# - git +# - install +# - dotfiles +# - productivity +# when: st.stat.islnk is not defined +# +# # - name: Move dotfiles to dest folder +# # ansible.builtin.copy: +# # src: /tmp/ansible/dotfiles +# # dest: ~/ +# # remote_src: yes +# # owner: root +# # group: root +# # # mode: u+rw,g-wx,o-rwx +# # # validate: /usr/sbin/visudo -csf %s +# # tags: +# # - git +# # - install +# # - dotfiles +# # - productivity +# +# - become: true +# become_user: "{{my_user}}" +# name: Stow the dotfiles +# shell: | +# stow --verbose 2 --dir "/home/{{my_user}}/dotfiles" --target "/home/{{my_user}}/" . +# tags: +# - git +# - install +# - dotfiles +# - productivity +# when: st.stat.islnk is not defined +# +# - ansible.builtin.lineinfile: +# line: ENVIRONMENT=PROD +# path: ~/.bashrc +# regexp: '^ENVIRONMENT=.*$' +# become: true +# become_user: "{{my_user}}" +# name: Set the right prompt # tags: # - git # - install # - dotfiles # - productivity - -- name: Stow the dotfiles - shell: | - stow --verbose 2 --dir "/home/nige/dotfiles" --target "/home/nige/" . - when: st.stat.islnk is not defined - tags: - - git - - install - - dotfiles - - productivity - become: true - become_user: nige - -- name: Set the right prompt - ansible.builtin.lineinfile: - path: ~/.bashrc - regexp: '^ENVIRONMENT=.*$' - line: ENVIRONMENT=PROD - tags: - - git - - install - - dotfiles - - productivity - become: true - become_user: nige diff --git a/tasks/git-setup.yml b/tasks/git-setup.yml index 8ec13f0..487d1d6 100644 --- a/tasks/git-setup.yml +++ b/tasks/git-setup.yml @@ -1,50 +1,70 @@ -- name: Git personal setup email - git_config: - name: user.email - scope: global - value: "nils.gerstner@replyto.se" +# - name: Git personal setup email +# git_config: +# name: user.email +# scope: global +# value: "nils.gerstner@replyto.se" +# tags: +# - install +# - productivity +# - git-personal +# - name: Git personal setup name +# git_config: +# name: user.name +# scope: global +# value: "ThePrimeagen" +# tags: +# - install +# - productivity +# - git-personal +# - name: Git Rustin +# git_config: +# name: user.email +# scope: global +# value: "rustin.deeznuts@gmail.com" +# tags: +# - install +# - productivity +# - git-rustin +# - name: Git personal setup name +# git_config: +# name: user.name +# scope: global +# value: "RustLover69" +# tags: +# - install +# - productivity +# - git-rustin +# - name: Netflix +# git_config: +# name: user.email +# scope: global +# value: "mpaulson@netflix.com" +# tags: +# - git-netflix +# - name: Git personal setup name +# git_config: +# name: user.name +# scope: global +# value: "mpaulson" +# tags: +# - git-netflix + +- ansible.builtin.git: + dest: "{{ lookup('env', 'HOME') }}/lazygit" + force: true + repo: 'https://github.com/jesseduffield/lazygit.git' + update: true + # version: 'stable' + name: Clone lazygit + register: lazygitclone tags: - - install - - productivity - - git-personal -- name: Git personal setup name - git_config: - name: user.name - scope: global - value: "ThePrimeagen" + - install + - git + - golang +- name: Install lazygit + shell: "cd {{ lookup('env', 'HOME') }}/lazygit && go build && mv ./lazygit /usr/local/bin/" tags: - - install - - productivity - - git-personal -- name: Git Rustin - git_config: - name: user.email - scope: global - value: "rustin.deeznuts@gmail.com" - tags: - - install - - productivity - - git-rustin -- name: Git personal setup name - git_config: - name: user.name - scope: global - value: "RustLover69" - tags: - - install - - productivity - - git-rustin -- name: Netflix - git_config: - name: user.email - scope: global - value: "mpaulson@netflix.com" - tags: - - git-netflix -- name: Git personal setup name - git_config: - name: user.name - scope: global - value: "mpaulson" - tags: - - git-netflix + - install + - git + - golang + when: lazygitclone.changed diff --git a/tasks/golang-setup.yml b/tasks/golang-setup.yml index 621c4b0..1c9c0e3 100644 --- a/tasks/golang-setup.yml +++ b/tasks/golang-setup.yml @@ -1,7 +1,7 @@ -- name: Install golang - become: true - apt: +- apt: name: [ "golang" ] + become: true + name: Install golang tags: - install - golang diff --git a/tasks/java-setup.yml b/tasks/java-setup.yml index 72179f6..45768f3 100644 --- a/tasks/java-setup.yml +++ b/tasks/java-setup.yml @@ -1,15 +1,15 @@ -- name: Install OpenJDK 17 +- apt: + name: [ "openjdk-17-jdk", "openjdk-17-jre", "maven" ] become: true - apt: - name: [ "openjdk-17-jdk", "openjdk-17-jre" ] + name: Install OpenJDK 17 and maven tags: - install - productivity - java - name: Get Java java alternative - shell: "update-alternatives --list java |grep -m1 '^/.*/java-17-openjdk.*/java$'" register: javaversion + shell: "update-alternatives --list java |grep -m1 '^/.*/java-17-openjdk.*/java$'" tags: - install - productivity @@ -23,30 +23,26 @@ - java when: javaversion is defined -- name: Get JAVA_HOME for current version - shell: 'dirname $(dirname $(readlink -f $(which javac)))' +- become: true + become_user: "{{my_user}}" + name: Get JAVA_HOME for current version register: javahome + shell: 'dirname $(dirname $(readlink -f $(which javac)))' tags: - install - productivity - java - become: true - become_user: nige -- name: Set JAVA_HOME - ansible.builtin.lineinfile: +- ansible.builtin.lineinfile: + line: export JAVA_HOME={{ javahome.stdout }} path: ~/.bashrc regexp: '^\s*export *JAVA_HOME=.*$' - line: export JAVA_HOME={{ javahome.stdout }} + become: true + become_user: "{{my_user}}" + name: Set JAVA_HOME tags: - install - productivity - java when: javahome is defined - become: true - become_user: nige - - # JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64" - - diff --git a/tasks/kubernetes.yml b/tasks/kubernetes.yml new file mode 100644 index 0000000..efa0454 --- /dev/null +++ b/tasks/kubernetes.yml @@ -0,0 +1,51 @@ +# HELM +- ansible.builtin.apt_key: + id: 81BF832E2F19CD2AA0471959294AC4827C1A168A + keyring: /etc/apt/keyrings/helm.gpg + url: https://baltocdn.com/helm/signing.asc + name: Add signing key for Helm repository + tags: + - kubernetes +- ansible.builtin.apt_key: + id: A362B822F6DEDC652817EA46B53DC80D13EDEF05 + keyring: /etc/apt/keyrings/kubernetes-archive-keyring.gpg + url: https://packages.cloud.google.com/apt/doc/apt-key.gpg + name: Add signing key for Kubernetes repository + tags: + - kubernetes +- ansible.builtin.apt_repository: + repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" + state: present + name: Add Helm repository + register: helmrepo + tags: + - kubernetes +- ansible.builtin.apt_repository: + repo: "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" + state: present + name: Add Kubernetes repository + register: kubernetesrepo + tags: + - kubernetes +- apt: + force_apt_get: true + state: present + update_cache: true + become: true + name: Update apt repositories + tags: + - kubernetes + when: helmrepo.changed or kubernetesrepo.changed +- apt: + name: + [ + "apt-transport-https", + "ca-certificates", + "kubectl", + "helm" + ] + become: true + name: Install kubectl and helm + tags: + - kubernetes + # when: kubectlupdate.changed diff --git a/tasks/meilisearch.yml b/tasks/meilisearch.yml index af7d2e7..1ea0831 100644 --- a/tasks/meilisearch.yml +++ b/tasks/meilisearch.yml @@ -1,24 +1,27 @@ -- name: Download meilisearch - ansible.builtin.get_url: +- ansible.builtin.get_url: # url: https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch-linux-{{ansible_architecture}} - url: https://github.com/meilisearch/meilisearch/releases/download/v1.0.2/meilisearch-linux-amd64 dest: /usr/local/bin/meilisearch mode: '777' + url: https://github.com/meilisearch/meilisearch/releases/download/v1.0.2/meilisearch-linux-amd64 + name: Download meilisearch + register: meilisearch tags: - install - notes -- name: Meilisearch version +- become: true + become_user: "{{my_user}}" + name: Meilisearch version shell: /usr/local/bin/meilisearch --version tags: - install - notes - become: true - become_user: nige + when: meilisearch.changed -- name: Start meilisearch +- become: true + become_user: "{{my_user}}" + name: Start meilisearch shell: "/usr/local/bin/meilisearch --http-addr 0.0.0.0:7700 >/dev/null 2>&1 &" tags: - notes - become: true - become_user: nige + when: meilisearch.changed diff --git a/tasks/node-setup.yml b/tasks/node-setup.yml index f6799c4..4b505c8 100644 --- a/tasks/node-setup.yml +++ b/tasks/node-setup.yml @@ -1,7 +1,7 @@ -- name: Install nodejs - become: true - apt: +- apt: name: [ "nodejs", "npm" ] + become: true + name: Install nodejs tags: - install - productivity diff --git a/tasks/nvim-setup.yml b/tasks/nvim-setup.yml index d8bdcb9..5b1b9d3 100644 --- a/tasks/nvim-setup.yml +++ b/tasks/nvim-setup.yml @@ -1,64 +1,73 @@ -# - name: Neovim folder exists -# stat: -# path: ~/neovim -# register: nvim_folder -# tags: -# - install -# - neovim -# - name: Remove neovim -# shell: rm -rf ~/neovim -# tags: -# - install -# - neovim -- name: Clone Neovim - ansible.builtin.git: - repo: 'https://github.com/neovim/neovim.git' +- ansible.builtin.git: dest: "{{ lookup('env', 'HOME') }}/neovim" - update: true force: true + repo: 'https://github.com/neovim/neovim.git' + update: true + version: 'stable' + name: Clone Neovim + register: gitclone + tags: + - install + - neovim +- ansible.builtin.file: + path: /usr/local/share/nvim/runtime + state: absent + name: Remove old runtime + tags: + - install + - neovim + when: gitclone.changed +- ansible.builtin.file: + path: "{{ lookup('env', 'HOME') }}/neovim/build" + state: absent + name: Remove old build path tags: - install - neovim - # when: nvim_folder.stat.exists -# -# - name: Clone Neovim -# ansible.builtin.git: -# repo: 'https://github.com/neovim/neovim.git' -# dest: "{{ lookup('env', 'HOME') }}/neovim" -# tags: -# - install -# - neovim -# when: nvim_folder.stat.exists - name: Build neovim - shell: "cd {{ lookup('env', 'HOME') }}/neovim && make -j 20" + shell: "cd {{ lookup('env', 'HOME') }}/neovim && make -j CMAKE_BUILD_TYPE=Release" tags: - install - neovim -- name: Install neovim - become: true + when: gitclone.changed +- become: true + name: Install neovim shell: "cd {{ lookup('env', 'HOME') }}/neovim && make install" tags: - install - neovim -- name: Neovim Plugin Development 1 + when: gitclone.changed +- apt: name=luarocks become: true - apt: name=luarocks + name: Neovim Plugin Development 1 + tags: + - install + - neovim +- ansible.builtin.pip: + executable: pip3 + name: pynvim + become: true + become_user: "{{my_user}}" + name: Install python neovim module + tags: + - install + - neovim +- become: true + become_user: "{{my_user}}" + name: Install tree-sitter + shell: "cargo install tree-sitter-cli" tags: - install - neovim - name: Neovim Lazy update - shell: "nvim --headless '+Lazy sync' +q" + shell: "nvim --headless '+Lazy sync' '+q'" tags: - install - neovim + when: gitclone.changed - name: Neovim TSUpdate - shell: "nvim --headless '+TSUpdateSync clean' +q" + shell: "nvim --headless '+TSUpdateSync clean' '+q'" tags: - install - neovim -# - name: Neovim Plugin Development 2 luacheck -# become: true -# shell: luarocks install luacheck -# tags: -# - install -# - neovim + when: gitclone.changed diff --git a/tasks/task-setup.yml b/tasks/task-setup.yml new file mode 100644 index 0000000..4a22331 --- /dev/null +++ b/tasks/task-setup.yml @@ -0,0 +1,9 @@ +- ansible.builtin.pip: + name: vit + become: true + become_user: nige + name: install VIT (Taskwarrior TUI) + tags: + - install + - tasks + - productivity diff --git a/tasks/workspace-setup.yml b/tasks/workspace-setup.yml index b3927f7..9e900ae 100644 --- a/tasks/workspace-setup.yml +++ b/tasks/workspace-setup.yml @@ -1,4 +1,5 @@ -- name: Create Main Code folder +- become: true + become_user: "{{my_user}}" file: path: "{{ item }}" state: directory @@ -11,9 +12,8 @@ - ~/Documents/Code/RISE - ~/Documents/Code/VOLVOCARS - ~/Documents/Code/VOLVOFINANS + name: Create Main Code folder tags: - git - productivity - dotfiles - become: true - become_user: nige