From 134a64b30a64c02a4917daa94be2dea7a843554c Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 8 Oct 2024 20:39:22 +0200 Subject: [PATCH] improved context system --- init.sh | 4 -- inventory.yml | 31 ++++++++++--- playbooks/image.yml | 2 +- .../files/.shellrc/rc.d/01-env.sh | 9 ---- playbooks/roles/base_contexts/meta/main.yml | 3 -- .../roles/base_contexts/tasks/config.yml | 39 ----------------- .../roles/base_contexts/tasks/install.yml | 34 --------------- playbooks/roles/base_contexts/tasks/main.yml | 16 ------- .../base_contexts/vars/default/default.yml | 14 ------ playbooks/roles/base_contexts/vars/empty.yml | 4 -- .../base_contexts/vars/zeronorth/default.yml | 5 --- playbooks/roles/base_info/tasks/main.yml | 9 +++- .../roles/base_terminal/defaults/main.yml | 1 + .../roles/base_terminal/tasks/config.yml | 21 ++------- .../roles/base_terminal/tasks/install.yml | 2 +- playbooks/roles/base_terminal/tasks/main.yml | 24 +++++++---- .../base_terminal/tasks/setup-context.yml | 12 ++++++ .../base_terminal/templates/envrc.context.j2 | 4 ++ .../files/private/.ssh/config.d/private-git | 6 --- .../private/.ssh/keys/github-private.pub | 1 - .../files/private/Projects/private/.envrc | 4 -- .../files/private/Projects/private/.gitconfig | 10 ----- .../files/private/Projects/private/.npmrc | 3 -- .../zeronorth/.ssh/config.d/zeronorth-git | 6 --- .../zeronorth/.ssh/keys/github-zeronorth.pub | 1 - .../files/zeronorth/Projects/zeronorth/.envrc | 4 -- .../zeronorth/Projects/zeronorth/.gitconfig | 7 --- .../files/zeronorth/Projects/zeronorth/.npmrc | 2 - playbooks/roles/env_terminal/tasks/config.yml | 39 ----------------- .../roles/env_terminal/tasks/install.yml | 33 -------------- playbooks/roles/env_terminal/tasks/main.yml | 40 +++++++++-------- .../vars/{default => }/default.yml | 0 playbooks/roles/env_terminal/vars/empty.yml | 4 -- .../env_terminal/vars/zeronorth/default.yml | 5 --- playbooks/roles/software_atuin/tasks/main.yml | 9 +++- .../roles/software_git/defaults/main.yml | 1 + playbooks/roles/software_git/meta/main.yml | 2 + playbooks/roles/software_git/tasks/main.yml | 39 +++++++++++------ .../software_git/tasks/setup-context.yml | 43 +++++++++++++++++++ .../templates/gitconfig.context.j2 | 28 ++++++++++++ .../templates/{.gitconfig.j2 => gitconfig.j2} | 19 +++----- .../templates/sshconfig.context.j2 | 6 +++ playbooks/roles/software_nvim/tasks/main.yml | 22 +++++++++- playbooks/roles/software_ssh/tasks/main.yml | 27 ++++++++++++ playbooks/setup.yml | 2 +- scripts/setup-local.sh | 4 +- scripts/setup-remote.sh | 1 - 47 files changed, 264 insertions(+), 338 deletions(-) delete mode 100644 init.sh delete mode 100644 playbooks/roles/base_contexts/files/.shellrc/rc.d/01-env.sh delete mode 100644 playbooks/roles/base_contexts/meta/main.yml delete mode 100644 playbooks/roles/base_contexts/tasks/config.yml delete mode 100644 playbooks/roles/base_contexts/tasks/install.yml delete mode 100644 playbooks/roles/base_contexts/tasks/main.yml delete mode 100644 playbooks/roles/base_contexts/vars/default/default.yml delete mode 100644 playbooks/roles/base_contexts/vars/empty.yml delete mode 100644 playbooks/roles/base_contexts/vars/zeronorth/default.yml create mode 100644 playbooks/roles/base_terminal/tasks/setup-context.yml create mode 100644 playbooks/roles/base_terminal/templates/envrc.context.j2 delete mode 100644 playbooks/roles/env_terminal/files/private/.ssh/config.d/private-git delete mode 100644 playbooks/roles/env_terminal/files/private/.ssh/keys/github-private.pub delete mode 100644 playbooks/roles/env_terminal/files/private/Projects/private/.envrc delete mode 100644 playbooks/roles/env_terminal/files/private/Projects/private/.gitconfig delete mode 100644 playbooks/roles/env_terminal/files/private/Projects/private/.npmrc delete mode 100644 playbooks/roles/env_terminal/files/zeronorth/.ssh/config.d/zeronorth-git delete mode 100644 playbooks/roles/env_terminal/files/zeronorth/.ssh/keys/github-zeronorth.pub delete mode 100644 playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.envrc delete mode 100644 playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.gitconfig delete mode 100644 playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.npmrc delete mode 100644 playbooks/roles/env_terminal/tasks/config.yml delete mode 100644 playbooks/roles/env_terminal/tasks/install.yml rename playbooks/roles/env_terminal/vars/{default => }/default.yml (100%) delete mode 100644 playbooks/roles/env_terminal/vars/empty.yml delete mode 100644 playbooks/roles/env_terminal/vars/zeronorth/default.yml create mode 100644 playbooks/roles/software_git/tasks/setup-context.yml create mode 100644 playbooks/roles/software_git/templates/gitconfig.context.j2 rename playbooks/roles/software_git/templates/{.gitconfig.j2 => gitconfig.j2} (80%) create mode 100644 playbooks/roles/software_git/templates/sshconfig.context.j2 diff --git a/init.sh b/init.sh deleted file mode 100644 index 3b803de..0000000 --- a/init.sh +++ /dev/null @@ -1,4 +0,0 @@ -git clone https://github.com/morten-olsen/configs.git ~/.configs/system -cd ~/.configs/system -make install -./scripts/setup-local.sh diff --git a/inventory.yml b/inventory.yml index 79308ce..777f7d6 100644 --- a/inventory.yml +++ b/inventory.yml @@ -11,11 +11,30 @@ android: ansible_port: 8022 ansible_user: u0_a200 desktops: + vars: + contexts: + private: + path: ~/Projects/private + git: + email: fbtijfdq@void.black + name: Morten Olsen + signing_key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P + replacements: + - use: "ssh://git@giteaa.olsen.cloud:2202/" + instead_of: "ssh://git@gitea.olsen.cloud:2202/" + + zeronorth: + path: ~/Projects/zeronorth + env: + NODE_AUTH_TOKEN: "op://jpksggxxmcuwnbwkooktr3iqcy/ut3yag6r7y4bsfrztahp7pcc6q/password" + AWS_PROFILE: "zeronorth" + git: + email: morten.olsen@zeronorth.com + name: Morten Olsen + signing_key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKDbZITpz5QrVIxPn9gKVWMPK+3W3YZZGszFOQvO/h7M hosts: zn-macbook: - ansible_host: 192.168.3.3 - ansible_connection: ssh - ansible_port: 22 - ansible_user: alice - contexts: - - zeronorth + # ansible_host: 192.168.3.3 + # ansible_connection: ssh + # ansible_port: 22 + # ansible_user: alice diff --git a/playbooks/image.yml b/playbooks/image.yml index cf27ab2..36fa537 100644 --- a/playbooks/image.yml +++ b/playbooks/image.yml @@ -2,7 +2,7 @@ - name: Setup host hosts: localhost vars: - contexts: [] + contexts: {} roles: - role: env_terminal - role: env_develop diff --git a/playbooks/roles/base_contexts/files/.shellrc/rc.d/01-env.sh b/playbooks/roles/base_contexts/files/.shellrc/rc.d/01-env.sh deleted file mode 100644 index ce72312..0000000 --- a/playbooks/roles/base_contexts/files/.shellrc/rc.d/01-env.sh +++ /dev/null @@ -1,9 +0,0 @@ -export TMPDIR="${TMPDIR:-/tmp}" -export PATH="$PATH:$HOME/.local/bin" - -alias ls=eza -alias cat=bat -alias grep=rg -alias diff=delta -alias less=bat -alias gr='if [ "`git rev-parse --show-cdup`" != "" ]; then cd `git rev-parse --show-cdup`; fi' diff --git a/playbooks/roles/base_contexts/meta/main.yml b/playbooks/roles/base_contexts/meta/main.yml deleted file mode 100644 index ee75b16..0000000 --- a/playbooks/roles/base_contexts/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -dependencies: - - role: base_info diff --git a/playbooks/roles/base_contexts/tasks/config.yml b/playbooks/roles/base_contexts/tasks/config.yml deleted file mode 100644 index 309b2d5..0000000 --- a/playbooks/roles/base_contexts/tasks/config.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -- name: Copy config {{ context }} - tags: - - config - ansible.builtin.file: - mode: "{{ item.mode }}" - path: "{{ home }}/{{ item.path }}" - state: directory - with_community.general.filetree: - - ../files/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'directory' - -- name: "Copy templates : {{ context }}" - tags: - - config - ansible.builtin.template: - src: "{{ item.src }}" - dest: "{{ home }}/{{ item.path | regex_replace('\\.j2$', '') }}" - mode: "{{ item.mode }}" - with_community.general.filetree: - - ../templates/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'file' - -- name: Copy config {{ context }} - tags: - - config - ansible.builtin.copy: - src: "{{ item.src }}" - dest: "{{ home }}/{{ item.path }}" - mode: "{{ item.mode }}" - with_community.general.filetree: - - ../files/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'file' diff --git a/playbooks/roles/base_contexts/tasks/install.yml b/playbooks/roles/base_contexts/tasks/install.yml deleted file mode 100644 index 5c88446..0000000 --- a/playbooks/roles/base_contexts/tasks/install.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -- name: "Unload vars : {{ context }}" - ansible.builtin.include_vars: ../vars/empty.yml - tags: - - install - -- name: "Load vars : {{ context }}" - ansible.builtin.include_vars: "{{ item }}" - tags: - - install - with_first_found: - - files: - - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" - - "{{ ansible_distribution }}.yml" - - "{{ ansible_os_family }}.yml" - - default.yml - paths: ../vars/{{ context }} - skip: true - -- name: "Install dependencies : {{ context }}" - tags: - - install - when: terminal_pkgs - become: "{{ install_with_root }}" - ansible.builtin.package: - name: "{{ terminal_pkgs }}" - -- name: "Install casks : {{ context }}" - tags: - - install - when: terminal_casks - community.general.homebrew_cask: - name: "{{ terminal_casks }}" - state: installed diff --git a/playbooks/roles/base_contexts/tasks/main.yml b/playbooks/roles/base_contexts/tasks/main.yml deleted file mode 100644 index 5719976..0000000 --- a/playbooks/roles/base_contexts/tasks/main.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Install context dependencies - ansible.builtin.include_tasks: install.yml - loop: "{{ contexts }}" - loop_control: - loop_var: context - tags: - - config - -- name: Configure contexts - ansible.builtin.include_tasks: config.yml - loop: "{{ contexts }}" - loop_control: - loop_var: context - tags: - - config diff --git a/playbooks/roles/base_contexts/vars/default/default.yml b/playbooks/roles/base_contexts/vars/default/default.yml deleted file mode 100644 index c7caaf8..0000000 --- a/playbooks/roles/base_contexts/vars/default/default.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -terminal_pkgs: - - bat - - eza - - direnv - - fzf - - gnupg - - jq - - ripgrep - - neovim - - gh - - tmux - - zoxide - - sshpass diff --git a/playbooks/roles/base_contexts/vars/empty.yml b/playbooks/roles/base_contexts/vars/empty.yml deleted file mode 100644 index 6d4ac1e..0000000 --- a/playbooks/roles/base_contexts/vars/empty.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -terminal_pkgs: [] -terminal_casks: [] -terminal_flatpaks: [] diff --git a/playbooks/roles/base_contexts/vars/zeronorth/default.yml b/playbooks/roles/base_contexts/vars/zeronorth/default.yml deleted file mode 100644 index b08be9d..0000000 --- a/playbooks/roles/base_contexts/vars/zeronorth/default.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -terminal_pkgs: - - terraform - - awscli - - copier diff --git a/playbooks/roles/base_info/tasks/main.yml b/playbooks/roles/base_info/tasks/main.yml index eed4128..0444830 100644 --- a/playbooks/roles/base_info/tasks/main.yml +++ b/playbooks/roles/base_info/tasks/main.yml @@ -1,8 +1,13 @@ -- name: Setting host facts +- name: Setting generic facts tags: always ansible.builtin.set_fact: username: alice home: "{{ ansible_env.HOME }}" use_become: true mac_os: "{{ ansible_distribution == 'MacOSX' }}" - contexts: "{{ ['default'] + (contexts | default([])) }}" + +- name: Setting macos facts + tags: always + when: mac_os + ansible.builtin.set_fact: + install_with_root: false diff --git a/playbooks/roles/base_terminal/defaults/main.yml b/playbooks/roles/base_terminal/defaults/main.yml index 28e2a41..3ae7c0e 100644 --- a/playbooks/roles/base_terminal/defaults/main.yml +++ b/playbooks/roles/base_terminal/defaults/main.yml @@ -1,3 +1,4 @@ install_with_root: true terminal_casks: [] pkgs: [] +contexts: {} diff --git a/playbooks/roles/base_terminal/tasks/config.yml b/playbooks/roles/base_terminal/tasks/config.yml index 309b2d5..a5079ad 100644 --- a/playbooks/roles/base_terminal/tasks/config.yml +++ b/playbooks/roles/base_terminal/tasks/config.yml @@ -1,5 +1,5 @@ --- -- name: Copy config {{ context }} +- name: Setup directories tags: - config ansible.builtin.file: @@ -7,25 +7,12 @@ path: "{{ home }}/{{ item.path }}" state: directory with_community.general.filetree: - - ../files/{{ context }} + - ../files/ loop_control: label: "{{ item.path }}" when: item.state == 'directory' -- name: "Copy templates : {{ context }}" - tags: - - config - ansible.builtin.template: - src: "{{ item.src }}" - dest: "{{ home }}/{{ item.path | regex_replace('\\.j2$', '') }}" - mode: "{{ item.mode }}" - with_community.general.filetree: - - ../templates/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'file' - -- name: Copy config {{ context }} +- name: Copy config tags: - config ansible.builtin.copy: @@ -33,7 +20,7 @@ dest: "{{ home }}/{{ item.path }}" mode: "{{ item.mode }}" with_community.general.filetree: - - ../files/{{ context }} + - ../files loop_control: label: "{{ item.path }}" when: item.state == 'file' diff --git a/playbooks/roles/base_terminal/tasks/install.yml b/playbooks/roles/base_terminal/tasks/install.yml index 6a9fe1d..fe92712 100644 --- a/playbooks/roles/base_terminal/tasks/install.yml +++ b/playbooks/roles/base_terminal/tasks/install.yml @@ -20,7 +20,7 @@ ansible.builtin.package: name: "{{ terminal_pkgs }}" -- name: "Install casks : {{ context }}" +- name: "Install casks" tags: - install when: terminal_casks diff --git a/playbooks/roles/base_terminal/tasks/main.yml b/playbooks/roles/base_terminal/tasks/main.yml index 5719976..b301612 100644 --- a/playbooks/roles/base_terminal/tasks/main.yml +++ b/playbooks/roles/base_terminal/tasks/main.yml @@ -1,16 +1,22 @@ --- -- name: Install context dependencies +- name: Install dependencies ansible.builtin.include_tasks: install.yml - loop: "{{ contexts }}" - loop_control: - loop_var: context tags: - config -- name: Configure contexts - ansible.builtin.include_tasks: config.yml - loop: "{{ contexts }}" - loop_control: - loop_var: context +- name: Configure tags: - config + ansible.builtin.include_tasks: config.yml + +- name: Setup contexts + tags: + - git + - config + include_tasks: "setup-context.yml" + vars: + name: "{{ item.key }}" + context: "{{ item.value }}" + loop: "{{ contexts | dict2items }}" + loop_control: + label: "{{ item.key }}" diff --git a/playbooks/roles/base_terminal/tasks/setup-context.yml b/playbooks/roles/base_terminal/tasks/setup-context.yml new file mode 100644 index 0000000..c328153 --- /dev/null +++ b/playbooks/roles/base_terminal/tasks/setup-context.yml @@ -0,0 +1,12 @@ +- name: Setup context env + tags: + - git + - config + ansible.builtin.template: + src: "../templates/envrc.context.j2" + dest: "{{ context.path }}/.envrc" + mode: "600" + vars: + env: "{{ context.env}}" + name: "{{ name }}" + when: "'env' in context" diff --git a/playbooks/roles/base_terminal/templates/envrc.context.j2 b/playbooks/roles/base_terminal/templates/envrc.context.j2 new file mode 100644 index 0000000..9b32915 --- /dev/null +++ b/playbooks/roles/base_terminal/templates/envrc.context.j2 @@ -0,0 +1,4 @@ +{% for key in env %} +export {{ key }}="{{ env[key] }}" +{% endfor %} + diff --git a/playbooks/roles/env_terminal/files/private/.ssh/config.d/private-git b/playbooks/roles/env_terminal/files/private/.ssh/config.d/private-git deleted file mode 100644 index 8745485..0000000 --- a/playbooks/roles/env_terminal/files/private/.ssh/config.d/private-git +++ /dev/null @@ -1,6 +0,0 @@ -host github-private - hostname ssh.github.com - user git - port 443 - IdentityFile ~/.ssh/keys/github-private.pub - IdentitiesOnly yes diff --git a/playbooks/roles/env_terminal/files/private/.ssh/keys/github-private.pub b/playbooks/roles/env_terminal/files/private/.ssh/keys/github-private.pub deleted file mode 100644 index 07e7a2e..0000000 --- a/playbooks/roles/env_terminal/files/private/.ssh/keys/github-private.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P diff --git a/playbooks/roles/env_terminal/files/private/Projects/private/.envrc b/playbooks/roles/env_terminal/files/private/Projects/private/.envrc deleted file mode 100644 index 7ca076b..0000000 --- a/playbooks/roles/env_terminal/files/private/Projects/private/.envrc +++ /dev/null @@ -1,4 +0,0 @@ -export NPM_GITHUB_TOKEN="op://jpksggxxmcuwnbwkooktr3iqcy/ut3yag6r7y4bsfrztahp7pcc6q/password" -export NODE_AUTH_TOKEN=$NPM_GITHUB_TOKEN -export GITHUB_TOKEN=$NPM_GITHUB_TOKEN - diff --git a/playbooks/roles/env_terminal/files/private/Projects/private/.gitconfig b/playbooks/roles/env_terminal/files/private/Projects/private/.gitconfig deleted file mode 100644 index 2012abd..0000000 --- a/playbooks/roles/env_terminal/files/private/Projects/private/.gitconfig +++ /dev/null @@ -1,10 +0,0 @@ -[user] - email = morten@olsen.pro - name = Morten Olsen - signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaIAP/ZJ7+7jeR44e1yIJjfQAB6MN351LDKJAXVF62P - -[url "git@github-private:morten-olsen/"] - insteadOf = https://github.com/morten-olsen/ - -[url "ssh://git@giteaa.olsen.cloud:2202/"] - insteadOf = ssh://git@gitea.olsen.cloud:2202/ diff --git a/playbooks/roles/env_terminal/files/private/Projects/private/.npmrc b/playbooks/roles/env_terminal/files/private/Projects/private/.npmrc deleted file mode 100644 index fa1e632..0000000 --- a/playbooks/roles/env_terminal/files/private/Projects/private/.npmrc +++ /dev/null @@ -1,3 +0,0 @@ -@morten-olsen:registry=https://npm.pkg.github.com - //npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} - diff --git a/playbooks/roles/env_terminal/files/zeronorth/.ssh/config.d/zeronorth-git b/playbooks/roles/env_terminal/files/zeronorth/.ssh/config.d/zeronorth-git deleted file mode 100644 index 5db03b0..0000000 --- a/playbooks/roles/env_terminal/files/zeronorth/.ssh/config.d/zeronorth-git +++ /dev/null @@ -1,6 +0,0 @@ -host github-zeronorth - hostname ssh.github.com - user git - port 443 - IdentityFile ~/.ssh/keys/github-zeronorth.pub - IdentitiesOnly yes diff --git a/playbooks/roles/env_terminal/files/zeronorth/.ssh/keys/github-zeronorth.pub b/playbooks/roles/env_terminal/files/zeronorth/.ssh/keys/github-zeronorth.pub deleted file mode 100644 index 4c1e8fc..0000000 --- a/playbooks/roles/env_terminal/files/zeronorth/.ssh/keys/github-zeronorth.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKDbZITpz5QrVIxPn9gKVWMPK+3W3YZZGszFOQvO/h7M diff --git a/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.envrc b/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.envrc deleted file mode 100644 index dd7afe3..0000000 --- a/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.envrc +++ /dev/null @@ -1,4 +0,0 @@ -export NPM_GITHUB_TOKEN="op://jpksggxxmcuwnbwkooktr3iqcy/ut3yag6r7y4bsfrztahp7pcc6q/password" -export NODE_AUTH_TOKEN=$NPM_GITHUB_TOKEN -export GITHUB_TOKEN="op://Employee/lobazchngpvla4opw4rwzjwnoi/credential" -export AWS_PROFILE="zeronorth" diff --git a/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.gitconfig b/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.gitconfig deleted file mode 100644 index f70c3e5..0000000 --- a/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.gitconfig +++ /dev/null @@ -1,7 +0,0 @@ -[user] - email = morten.olsen@zeronorth.com - name = Morten Olsen - signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKDbZITpz5QrVIxPn9gKVWMPK+3W3YZZGszFOQvO/h7M - -[url "git@github-zeronorth:"] - insteadOf = https://github.com/ diff --git a/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.npmrc b/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.npmrc deleted file mode 100644 index 6b239c7..0000000 --- a/playbooks/roles/env_terminal/files/zeronorth/Projects/zeronorth/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -@0north:registry=https://npm.pkg.github.com -//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} diff --git a/playbooks/roles/env_terminal/tasks/config.yml b/playbooks/roles/env_terminal/tasks/config.yml deleted file mode 100644 index 309b2d5..0000000 --- a/playbooks/roles/env_terminal/tasks/config.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -- name: Copy config {{ context }} - tags: - - config - ansible.builtin.file: - mode: "{{ item.mode }}" - path: "{{ home }}/{{ item.path }}" - state: directory - with_community.general.filetree: - - ../files/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'directory' - -- name: "Copy templates : {{ context }}" - tags: - - config - ansible.builtin.template: - src: "{{ item.src }}" - dest: "{{ home }}/{{ item.path | regex_replace('\\.j2$', '') }}" - mode: "{{ item.mode }}" - with_community.general.filetree: - - ../templates/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'file' - -- name: Copy config {{ context }} - tags: - - config - ansible.builtin.copy: - src: "{{ item.src }}" - dest: "{{ home }}/{{ item.path }}" - mode: "{{ item.mode }}" - with_community.general.filetree: - - ../files/{{ context }} - loop_control: - label: "{{ item.path }}" - when: item.state == 'file' diff --git a/playbooks/roles/env_terminal/tasks/install.yml b/playbooks/roles/env_terminal/tasks/install.yml deleted file mode 100644 index db1b7d0..0000000 --- a/playbooks/roles/env_terminal/tasks/install.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -- name: "Unload vars : {{ context }}" - ansible.builtin.include_vars: ../vars/empty.yml - tags: - - install - -- name: "Load vars : {{ context }}" - ansible.builtin.include_vars: "{{ item }}" - tags: - - install - with_first_found: - - files: - - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" - - "{{ ansible_distribution }}.yml" - - "{{ ansible_os_family }}.yml" - - default.yml - paths: ../vars/{{ context }} - skip: true - -- name: "Install dependencies : {{ context }}" - tags: - - install - when: terminal_pkgs - ansible.builtin.package: - name: "{{ terminal_pkgs }}" - -- name: "Install casks : {{ context }}" - tags: - - install - when: terminal_casks - community.general.homebrew_cask: - name: "{{ terminal_casks }}" - state: installed diff --git a/playbooks/roles/env_terminal/tasks/main.yml b/playbooks/roles/env_terminal/tasks/main.yml index 2d23779..871af5a 100644 --- a/playbooks/roles/env_terminal/tasks/main.yml +++ b/playbooks/roles/env_terminal/tasks/main.yml @@ -1,22 +1,28 @@ --- -- name: Install context dependencies - ansible.builtin.include_tasks: install.yml - loop: "{{ contexts }}" - loop_control: - loop_var: context - tags: - - config - -- name: Install atuin +- name: "Load vars" + ansible.builtin.include_vars: "{{ item }}" tags: - install - ansible.builtin.include_role: - name: software_atuin + with_first_found: + - files: + - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" + - "{{ ansible_distribution }}.yml" + - "{{ ansible_os_family }}.yml" + - default.yml + paths: ../vars + skip: true -- name: Configure contexts - ansible.builtin.include_tasks: config.yml - loop: "{{ contexts }}" - loop_control: - loop_var: context +- name: "Install dependencies" tags: - - config + - install + when: terminal_pkgs + ansible.builtin.package: + name: "{{ terminal_pkgs }}" + +- name: "Install casks" + tags: + - install + when: terminal_casks + community.general.homebrew_cask: + name: "{{ terminal_casks }}" + state: installed diff --git a/playbooks/roles/env_terminal/vars/default/default.yml b/playbooks/roles/env_terminal/vars/default.yml similarity index 100% rename from playbooks/roles/env_terminal/vars/default/default.yml rename to playbooks/roles/env_terminal/vars/default.yml diff --git a/playbooks/roles/env_terminal/vars/empty.yml b/playbooks/roles/env_terminal/vars/empty.yml deleted file mode 100644 index 6d4ac1e..0000000 --- a/playbooks/roles/env_terminal/vars/empty.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -terminal_pkgs: [] -terminal_casks: [] -terminal_flatpaks: [] diff --git a/playbooks/roles/env_terminal/vars/zeronorth/default.yml b/playbooks/roles/env_terminal/vars/zeronorth/default.yml deleted file mode 100644 index b08be9d..0000000 --- a/playbooks/roles/env_terminal/vars/zeronorth/default.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -terminal_pkgs: - - terraform - - awscli - - copier diff --git a/playbooks/roles/software_atuin/tasks/main.yml b/playbooks/roles/software_atuin/tasks/main.yml index 2981a54..b0dbce0 100644 --- a/playbooks/roles/software_atuin/tasks/main.yml +++ b/playbooks/roles/software_atuin/tasks/main.yml @@ -22,9 +22,10 @@ - name: Ensure dir tags: always ansible.builtin.file: - path: "{{ home }}/.scripts" + path: "{{ home }}/.local/bin" mode: "0755" state: directory + - name: Move bin tags: always ansible.builtin.copy: @@ -33,6 +34,12 @@ src: "{{ software_atuin_unpack_file }}" dest: "{{ home }}/.local/bin/atuin" +- name: Cleanup + tags: always + ansible.builtin.file: + path: "{{ software_atuin_unpack_file }}" + state: absent + - name: Setup config dirctories tags: - config diff --git a/playbooks/roles/software_git/defaults/main.yml b/playbooks/roles/software_git/defaults/main.yml index f00d445..bd2e2f2 100644 --- a/playbooks/roles/software_git/defaults/main.yml +++ b/playbooks/roles/software_git/defaults/main.yml @@ -1 +1,2 @@ install_with_root: true +contexts: {} diff --git a/playbooks/roles/software_git/meta/main.yml b/playbooks/roles/software_git/meta/main.yml index ee75b16..0cb9a90 100644 --- a/playbooks/roles/software_git/meta/main.yml +++ b/playbooks/roles/software_git/meta/main.yml @@ -1,3 +1,5 @@ --- dependencies: - role: base_info + - role: base_terminal + - role: software_ssh diff --git a/playbooks/roles/software_git/tasks/main.yml b/playbooks/roles/software_git/tasks/main.yml index 1a21c2a..b841ef4 100644 --- a/playbooks/roles/software_git/tasks/main.yml +++ b/playbooks/roles/software_git/tasks/main.yml @@ -1,6 +1,7 @@ --- - name: Install dependencies tags: + - git - install become: "{{ install_with_root }}" ansible.builtin.package: @@ -10,6 +11,7 @@ - name: Copy config tags: + - git - config ansible.builtin.file: mode: "{{ item.mode }}" @@ -21,21 +23,9 @@ label: "{{ item.path }}" when: item.state == 'directory' -- name: "Copy templates" - tags: - - config - ansible.builtin.template: - src: "{{ item.src }}" - dest: "{{ home }}/{{ item.path | regex_replace('\\.j2$', '') }}" - mode: "{{ item.mode }}" - with_community.general.filetree: - - ../templates - loop_control: - label: "{{ item.path }}" - when: item.state == 'file' - -- name: Copy config +- name: "Copy configs" tags: + - git - config ansible.builtin.copy: src: "{{ item.src }}" @@ -46,3 +36,24 @@ loop_control: label: "{{ item.path }}" when: item.state == 'file' + +- name: Setup config + tags: + - git + - config + ansible.builtin.template: + src: "../templates/gitconfig.j2" + dest: "{{ home }}/.gitconfig" + mode: "644" + +- name: Setup contexts + tags: + - git + - config + include_tasks: "setup-context.yml" + vars: + name: "{{ item.key }}" + context: "{{ item.value }}" + loop: "{{ contexts | dict2items }}" + loop_control: + label: "{{ item.key }}" diff --git a/playbooks/roles/software_git/tasks/setup-context.yml b/playbooks/roles/software_git/tasks/setup-context.yml new file mode 100644 index 0000000..0b871d7 --- /dev/null +++ b/playbooks/roles/software_git/tasks/setup-context.yml @@ -0,0 +1,43 @@ +- name: Setup context git config + tags: + - git + - config + ansible.builtin.template: + src: "../templates/gitconfig.context.j2" + dest: "{{ context.path }}/.gitconfig" + mode: "644" + vars: + git: "{{ context.git }}" + name: "{{ name }}" + when: "'git' in context" + +- name: Setup context ssh config + tags: + - git + - config + ansible.builtin.template: + src: "../templates/sshconfig.context.j2" + dest: "{{ home }}/.ssh/config.d/git-{{ name }}" + mode: "644" + vars: + name: "{{ name }}" + when: "'git' in context and 'signing_key' in context.git" + +- name: Ensure dir + tags: + - git + - config + ansible.builtin.file: + path: "{{ home }}/.ssh/keys" + state: directory + mode: "0700" + +- name: Setup context public key + tags: + - git + - config + ansible.builtin.copy: + content: "{{ context.git.signing_key }}" + dest: "{{ home }}/.ssh/keys/github-{{ name }}.pub" + mode: "0644" + when: "'git' in context and 'signing_key' in context.git" diff --git a/playbooks/roles/software_git/templates/gitconfig.context.j2 b/playbooks/roles/software_git/templates/gitconfig.context.j2 new file mode 100644 index 0000000..11df110 --- /dev/null +++ b/playbooks/roles/software_git/templates/gitconfig.context.j2 @@ -0,0 +1,28 @@ +[user] + email = {{ git.email }} + name = {{ git.name }} +{% if 'signing_key' in git %} + signingkey = {{ git.signing_key }} + +[commit] + gpgsign = true + +[gpg] + format = ssh + +[gpg "ssh"] + program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign" +{% endif %} + +{% if 'replacements' in git %} +{% for replacement in git.replacements %} + +[url "{{ replacement.use }}"] + insteadOf = "{{ replacement.instead_of }}" +{% endfor %} +{% endif %} + + +[url "git@github-{{name}}:"] + insteadOf = https://github.com/ + diff --git a/playbooks/roles/software_git/templates/.gitconfig.j2 b/playbooks/roles/software_git/templates/gitconfig.j2 similarity index 80% rename from playbooks/roles/software_git/templates/.gitconfig.j2 rename to playbooks/roles/software_git/templates/gitconfig.j2 index 78ad5cd..66accb1 100644 --- a/playbooks/roles/software_git/templates/.gitconfig.j2 +++ b/playbooks/roles/software_git/templates/gitconfig.j2 @@ -1,8 +1,3 @@ -[gpg] - format = ssh - -[gpg "ssh"] - program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign" [alias] graph = log --graph --color --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%C(blue)%x20(%ce)%x20%C(cyan)[gpg:%GK%x20%G?]%C(reset)%n%x20%s%n" @@ -20,8 +15,6 @@ [difftool "nvimdiff"] cmd = "nvim -d \"$LOCAL\" \"$REMOTE\"" -[commit] - gpgsign = true [url "https://"] insteadOf = git:// @@ -43,11 +36,13 @@ process = git-lfs filter-process required = true -[includeIf "gitdir:~/Projects/zeronorth/"] - path = ~/Projects/zeronorth/.gitconfig - -[includeIf "gitdir:~/Projects/private/"] - path = ~/Projects/private/.gitconfig [push] autoSetupRemote = true +{% for key in contexts %} +{% if 'git' in contexts[key] %} +[includeIf "gitdir:{{ contexts[key].path }}/"] + path = {{ contexts[key].path }}/.gitconfig +{% endif %} +{% endfor %} + diff --git a/playbooks/roles/software_git/templates/sshconfig.context.j2 b/playbooks/roles/software_git/templates/sshconfig.context.j2 new file mode 100644 index 0000000..854f313 --- /dev/null +++ b/playbooks/roles/software_git/templates/sshconfig.context.j2 @@ -0,0 +1,6 @@ +host github-{{ name }} + hostname ssh.github.com + user git + port 443 + IdentityFile ~/.ssh/keys/github-{{ name }}.pub + IdentitiesOnly yes diff --git a/playbooks/roles/software_nvim/tasks/main.yml b/playbooks/roles/software_nvim/tasks/main.yml index 4a3714e..68e831c 100644 --- a/playbooks/roles/software_nvim/tasks/main.yml +++ b/playbooks/roles/software_nvim/tasks/main.yml @@ -9,6 +9,7 @@ - name: Setup config dirctories tags: + - nvim - config ansible.builtin.file: mode: "{{ item.mode }}" @@ -22,6 +23,7 @@ - name: Copy config {{ context }} tags: + - nvim - config ansible.builtin.copy: src: "{{ item.src }}" @@ -39,12 +41,30 @@ - nvim ansible.builtin.git: repo: https://github.com/morten-olsen/nvim - dest: "{{ home }}/.config/nvim" + dest: "{{ home }}/Projects/private/nvim" accept_newhostkey: true clone: true update: true force: true +- name: Ensure dir + tags: + - config + - nvim + ansible.builtin.file: + path: "{{ home }}/.config" + state: directory + mode: "0755" + +- name: Setup nvim link + tags: + - config + - nvim + ansible.builtin.file: + src: "{{ home }}/Projects/private/nvim" + dest: "{{ home }}/.config/nvim" + state: link + - name: Prepare neovim tags: - config diff --git a/playbooks/roles/software_ssh/tasks/main.yml b/playbooks/roles/software_ssh/tasks/main.yml index e69de29..2219315 100644 --- a/playbooks/roles/software_ssh/tasks/main.yml +++ b/playbooks/roles/software_ssh/tasks/main.yml @@ -0,0 +1,27 @@ +- name: Copy config + tags: + - git + - config + ansible.builtin.file: + mode: "{{ item.mode }}" + path: "{{ home }}/{{ item.path }}" + state: directory + with_community.general.filetree: + - ../files + loop_control: + label: "{{ item.path }}" + when: item.state == 'directory' + +- name: "Copy configs" + tags: + - git + - config + ansible.builtin.copy: + src: "{{ item.src }}" + dest: "{{ home }}/{{ item.path }}" + mode: "{{ item.mode }}" + with_community.general.filetree: + - ../files + loop_control: + label: "{{ item.path }}" + when: item.state == 'file' diff --git a/playbooks/setup.yml b/playbooks/setup.yml index 3f5da6f..61df019 100644 --- a/playbooks/setup.yml +++ b/playbooks/setup.yml @@ -5,7 +5,7 @@ - role: env_terminal - role: env_develop - role: server_ssh - - role: env_desktop + # - role: env_desktop - name: Setup android hosts: android diff --git a/scripts/setup-local.sh b/scripts/setup-local.sh index f66da2d..f6a8397 100755 --- a/scripts/setup-local.sh +++ b/scripts/setup-local.sh @@ -12,8 +12,8 @@ fi echo "Setting up $MACHINE_NAME" ansible-playbook -i inventory.yml playbooks/setup.yml \ --extra-vars "ansible_python_interpreter=$(which python)" \ + --connection=local \ --inventory "$MACHINE_NAME," \ --limit "$MACHINE_NAME" \ - $@ \ - --ask-become-pass + $@ diff --git a/scripts/setup-remote.sh b/scripts/setup-remote.sh index 046e63e..bf495cf 100755 --- a/scripts/setup-remote.sh +++ b/scripts/setup-remote.sh @@ -11,7 +11,6 @@ fi echo "Setting up $MACHINE_NAME" ansible-playbook -i inventory.yml playbooks/setup.yml \ - --connection=local \ --inventory "$MACHINE_NAME," \ --limit "$MACHINE_NAME" \ $@ \