WIP
This commit is contained in:
parent
3b509c45d1
commit
d6bb7ae726
11 changed files with 179 additions and 51 deletions
16
Ansible/ansible.cfg
Normal file
16
Ansible/ansible.cfg
Normal file
|
@ -0,0 +1,16 @@
|
|||
[defaults]
|
||||
bin_ansible_callbacks = True
|
||||
callbacks_enabled = ansible.posix.profile_tasks, ansible.posix.timer
|
||||
remote_user = eryn
|
||||
roles_path = roles
|
||||
stdout_callback = community.general.yaml
|
||||
|
||||
[connection]
|
||||
pipelining = true
|
||||
|
||||
[ssh_connection]
|
||||
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
|
||||
|
||||
[vault]
|
||||
username = ansible-infrastructure-vault
|
||||
keyname = default
|
4
Ansible/roles/dotfiles/handlers/main.yml
Normal file
4
Ansible/roles/dotfiles/handlers/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
- name: Rediscover package manager
|
||||
ansible.builtin.setup:
|
||||
gather_subset: pkg_mgr
|
3
Ansible/roles/dotfiles/tasks/darwin/bootstrap.yml
Normal file
3
Ansible/roles/dotfiles/tasks/darwin/bootstrap.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- name: (macOS) Configure homebrew
|
||||
ansible.builtin.include_tasks: homebrew.yml
|
37
Ansible/roles/dotfiles/tasks/darwin/homebrew.yml
Normal file
37
Ansible/roles/dotfiles/tasks/darwin/homebrew.yml
Normal file
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
- name: (macOS | homebrew) Does the brew command exist?
|
||||
ansible.builtin.stat:
|
||||
path: /opt/homebrew/bin/brew
|
||||
register: _dotfiles_homebrew_brew
|
||||
|
||||
- name: (macOS | homebrew) Install Homebrew
|
||||
when: not _dotfiles_homebrew_brew.stat.exists
|
||||
block:
|
||||
- name: (macOS | homebrew) Create temporary file for install script
|
||||
ansible.builtin.tempfile:
|
||||
state: file
|
||||
prefix: homebrew-install
|
||||
register: _dotfiles_homebrew_install_script
|
||||
|
||||
- name: (macOS | homebrew) Set up homebrew
|
||||
block:
|
||||
- name: (macOS | homebrew) Fetch install script
|
||||
ansible.builtin.get_url:
|
||||
url: https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh
|
||||
dest: "{{ _dotfiles_homebrew_install_script.path }}"
|
||||
mode: "0644"
|
||||
|
||||
- name: (macOS | homebrew) Run install script
|
||||
ansible.builtin.command:
|
||||
cmd: bash {{ _dotfiles_homebrew_install_script.path }}
|
||||
environment:
|
||||
NONINTERACTIVE: 1
|
||||
|
||||
- name: (macOS | homebrew) Gather package manager facts
|
||||
ansible.builtin.setup:
|
||||
gather_subset: pkg_mgr
|
||||
always:
|
||||
- name: (macOS | homebrew) Remove temporary install script
|
||||
ansible.builtin.file:
|
||||
path: "{{ _dotfiles_homebrew_install_script.path }}"
|
||||
state: absent
|
28
Ansible/roles/dotfiles/tasks/dotfiles.yml
Normal file
28
Ansible/roles/dotfiles/tasks/dotfiles.yml
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
- name: (dotfiles) ZSH
|
||||
ansible.builtin.include_tasks: zsh.yml
|
||||
tags: [ always, dotfiles_shell, dotfiles_zsh ]
|
||||
|
||||
- name: (dotfiles) Vim
|
||||
ansible.builtin.include_tasks: vim.yml
|
||||
tags: [ always, dotfiles_vim ]
|
||||
|
||||
- name: (dotfiles) Emacs
|
||||
ansible.builtin.include_tasks: emacs.yml
|
||||
tags: dotfiles_emacs
|
||||
|
||||
- name: (dotfiles) Git
|
||||
ansible.builtin.include_tasks: git.yml
|
||||
tags: [ always, dotfiles_git ]
|
||||
|
||||
- name: (dotfiles) Mutt
|
||||
ansible.builtin.include_tasks: mutt.yml
|
||||
tags: dotfiles_mutt
|
||||
|
||||
- name: (dotfiles) Shell utilities
|
||||
ansible.builtin.include_tasks: shell_utilities.yml
|
||||
tags: dotfiles_shell
|
||||
|
||||
- name: (dotfiles) Nethack
|
||||
ansible.builtin.include_tasks: nethack.yml
|
||||
tags: dotfiles_nethack
|
|
@ -1,26 +1,17 @@
|
|||
---
|
||||
- name: ZSH
|
||||
ansible.builtin.include_tasks: zsh.yml
|
||||
tags: dotfiles_zsh
|
||||
- name: Bootstrap system
|
||||
ansible.builtin.include_tasks: "{{ ansible_facts.os_family | lower }}/bootstrap.yml"
|
||||
|
||||
- name: Vim
|
||||
ansible.builtin.include_tasks: vim.yml
|
||||
tags: dotfiles_vim
|
||||
#- name: Install packages
|
||||
# ansible.builtin.include_tasks: packages.yml
|
||||
|
||||
- name: Emacs
|
||||
ansible.builtin.include_tasks: emacs.yml
|
||||
tags: dotfiles_emacs
|
||||
|
||||
- name: Git
|
||||
ansible.builtin.include_tasks: git.yml
|
||||
tags: dotfiles_git
|
||||
|
||||
- name: Mutt
|
||||
ansible.builtin.include_tasks: mutt.yml
|
||||
tags: dotfiles_mutt
|
||||
|
||||
- name: Shell utilities
|
||||
ansible.builtin.include_tasks: shell_utilities.yml
|
||||
|
||||
- name: Nethack
|
||||
ansible.builtin.include_tasks: nethack.yml
|
||||
- name: Link dotfiles
|
||||
ansible.builtin.include_tasks: dotfiles.yml
|
||||
tags:
|
||||
- dotfiles_git
|
||||
- dotfiles_mutt
|
||||
- dotfiles_neovim
|
||||
- dotfiles_nethack
|
||||
- dotfiles_shell
|
||||
- dotfiles_vim
|
||||
- dotfiles_zsh
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
---
|
||||
- name: (nethack) Install nethack package
|
||||
ansible.builtin.package:
|
||||
name: nethack
|
||||
state: present
|
||||
when:
|
||||
- dotfiles_install_packages is defined
|
||||
- "'nethack' in dotfiles_install_packages"
|
||||
|
||||
- name: (nethack) Link nethackrc
|
||||
ansible.builtin.file:
|
||||
path: ~/.nethackrc
|
||||
|
|
13
Ansible/roles/dotfiles/tasks/packages.yml
Normal file
13
Ansible/roles/dotfiles/tasks/packages.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
- name: Install packages
|
||||
become: "{{ _dotfiles_requires_become[ansible_facts.pkg_mgr] | default(true) }}"
|
||||
vars:
|
||||
package_names: _dotfiles_package_names[ansible_facts.pkg_mgr]
|
||||
ansible.builtin.package:
|
||||
name: >
|
||||
{{
|
||||
package_names[package] | default(package)
|
||||
for package
|
||||
in (_dotfiles_core_packages + dotfiles_install_packages)
|
||||
}}
|
||||
state: present
|
|
@ -7,11 +7,13 @@
|
|||
force: true
|
||||
|
||||
- name: (neovim) Create standard config directory
|
||||
tags: dotfiles_neovim
|
||||
ansible.builtin.file:
|
||||
path: ~/.config
|
||||
state: directory
|
||||
|
||||
- name: (neovim) Link config
|
||||
tags: dotfiles_neovim
|
||||
ansible.builtin.file:
|
||||
path: ~/.config/nvim
|
||||
src: "{{ role_path }}/files/neovim"
|
||||
|
@ -19,6 +21,7 @@
|
|||
force: true
|
||||
|
||||
- name: (neovim) Create .local directories
|
||||
tags: dotfiles_neovim
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
|
|
|
@ -1,31 +1,45 @@
|
|||
---
|
||||
- name: (zsh) Link startup files
|
||||
ansible.builtin.file:
|
||||
path: ~/.{{ item }}
|
||||
src: "{{ role_path }}/files/zsh/{{ item }}"
|
||||
state: link
|
||||
force: true
|
||||
loop:
|
||||
- zshenv
|
||||
- zshrc
|
||||
- zprofile
|
||||
- name: (zsh) Find zsh binary
|
||||
ansible.builtin.command:
|
||||
cmd: sh -c 'which zsh'
|
||||
register: _dotfiles_which_zsh
|
||||
|
||||
- name: (zsh) Create zsh directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
force: true
|
||||
loop:
|
||||
- ~/.zsh
|
||||
- ~/.zsh/cache
|
||||
- name: (zsh) Configure zsh
|
||||
when: (_dotfiles_which_zsh | length) > 0
|
||||
block:
|
||||
- name: (zsh) Make zsh my shell
|
||||
ansible.builtin.user:
|
||||
name: "{{ ansible_user }}"
|
||||
shell: "{{ _dotfiles_which_zsh.stdout }}"
|
||||
state: present
|
||||
|
||||
- name: (zsh) Link function library directories
|
||||
ansible.builtin.file:
|
||||
path: ~/.zsh/{{ item }}
|
||||
src: "{{ role_path }}/files/zsh/{{ item }}"
|
||||
state: link
|
||||
force: true
|
||||
loop:
|
||||
- init-env-functions
|
||||
- init-rc-functions
|
||||
- functions
|
||||
- name: (zsh) Link startup files
|
||||
ansible.builtin.file:
|
||||
path: ~/.{{ item }}
|
||||
src: "{{ role_path }}/files/zsh/{{ item }}"
|
||||
state: link
|
||||
force: true
|
||||
loop:
|
||||
- zshenv
|
||||
- zshrc
|
||||
- zprofile
|
||||
|
||||
- name: (zsh) Create zsh directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
force: true
|
||||
loop:
|
||||
- ~/.zsh
|
||||
- ~/.zsh/cache
|
||||
|
||||
- name: (zsh) Link function library directories
|
||||
ansible.builtin.file:
|
||||
path: ~/.zsh/{{ item }}
|
||||
src: "{{ role_path }}/files/zsh/{{ item }}"
|
||||
state: link
|
||||
force: true
|
||||
loop:
|
||||
- init-env-functions
|
||||
- init-rc-functions
|
||||
- functions
|
||||
|
|
11
Ansible/roles/dotfiles/vars/main.yml
Normal file
11
Ansible/roles/dotfiles/vars/main.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
_dotfiles_core_packages:
|
||||
- zsh
|
||||
- git
|
||||
- tmux
|
||||
- neovim
|
||||
|
||||
_dotfiles_package_names:
|
||||
homebrew:
|
||||
|
||||
_dotfiles_requires_become:
|
||||
homebrew: false
|
Loading…
Add table
Add a link
Reference in a new issue