Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
cf78ca3
Add zabbix configs
mikeeq Jul 30, 2025
bc15c6b
Add zabbix configs v2
mikeeq Jul 30, 2025
8ee6a90
Add zabbix configs v3
mikeeq Jul 31, 2025
9372323
Add zabbix configs v4
mikeeq Jul 31, 2025
890917b
Add zabbix configs v5
mikeeq Aug 1, 2025
c8fc293
Add zabbix configs v8
mikeeq Aug 1, 2025
c95705f
modify loki config
mikeeq Aug 4, 2025
4e22ea2
modify loki config v2
mikeeq Aug 4, 2025
7902094
fix cadvisor
mikeeq Aug 4, 2025
a5159a1
fix cadvisor
mikeeq Aug 5, 2025
0bc2e8f
Add immich
mikeeq Aug 5, 2025
8915c4a
Add immich v2
mikeeq Aug 5, 2025
5f92d94
Add mcpo
mikeeq Aug 6, 2025
5744253
Add sharpen script
mikeeq Aug 19, 2025
665fae5
Merge branch 'main' of github.com:mikeeq/ansible-ops-workstation into…
mikeeq Aug 22, 2025
418c8a8
add frigate scripts
mikeeq Aug 22, 2025
8db498a
change hdd location
mikeeq Aug 22, 2025
f696e70
Merge branch 'main' of github.com:mikeeq/ansible-ops-workstation into…
mikeeq Aug 22, 2025
7b39315
immich config v2
mikeeq Aug 22, 2025
2c681b3
immich play
mikeeq Aug 22, 2025
77ebcc5
fix mcpo
mikeeq Aug 22, 2025
efdf4e0
fix nginx for immich
mikeeq Aug 25, 2025
65824a7
fix nginx for immich v3
mikeeq Aug 26, 2025
77fd88c
Update to latest ansible
mikeeq Sep 19, 2025
408f0a8
add some python scripts
mikeeq Sep 22, 2025
81e19c1
Merge branch 'main' of github.com:mikeeq/ansible-ops-workstation into…
mikeeq Sep 24, 2025
747daae
fix wsl
mikeeq Sep 24, 2025
b9aa815
fix openwrt on new ansible
mikeeq Sep 25, 2025
70bb8d6
fix openwrt on new ansible
mikeeq Sep 26, 2025
faff7bd
fix openwrt on new ansible v2
mikeeq Sep 26, 2025
7a1e79e
add some plugins ha
mikeeq Sep 26, 2025
5272ff1
Add new devices v2
mikeeq Sep 28, 2025
18ff883
Add new devices v3
mikeeq Oct 7, 2025
3c2ec29
Add new devices v4
mikeeq Oct 10, 2025
1d145af
change mesh config
mikeeq Oct 21, 2025
211819f
Add openwrt settings
mikeeq Oct 22, 2025
c291d2c
Add openwrt settings v2
mikeeq Oct 23, 2025
5dac9ab
remove dawn from openwrt, fix dns dhcp for public dns tag
mikeeq Oct 24, 2025
2693321
add new stuff to ha
mikeeq Oct 29, 2025
5f2211b
Add some limits
mikeeq Oct 31, 2025
ef297f8
Add some limits v2
mikeeq Oct 31, 2025
f01543a
Add some limits v3
mikeeq Oct 31, 2025
ab27f4b
Add some limits v4
mikeeq Oct 31, 2025
4da37a1
Add some limits v5
mikeeq Oct 31, 2025
37abd82
Change some graphs after updating opentherm tasmota
mikeeq Nov 3, 2025
2c4f72a
Add info about mutter
mikeeq Nov 17, 2025
e6976be
Add info about wayland limitations
mikeeq Nov 27, 2025
092d711
Merge branch 'main' of github.com:mikeeq/ansible-ops-workstation into…
mikeeq Nov 27, 2025
b7e6056
Change camera
mikeeq Dec 1, 2025
e1d3ce4
change roaming to be present
mikeeq Dec 2, 2025
87bc98b
Revert keybase
mikeeq Dec 17, 2025
9f80f50
Add aws config file env var
mikeeq Jan 13, 2026
0c8af93
Add sshd config
mikeeq Jan 31, 2026
4054697
Add mise custom p10k prompt
mikeeq Feb 4, 2026
74b82d6
chore: enable shell integration and add VSCode settings
mikeeq Feb 5, 2026
1898167
test
mikeeq Feb 5, 2026
1ed54e8
feat(config): initialize aicommit2 configuration
mikeeq Feb 5, 2026
bd075c3
Add claude-code and ollama bin install
mikeeq Feb 9, 2026
6fad571
claude code test
mikeeq Feb 9, 2026
9e3c91d
fix fmt
mikeeq Feb 9, 2026
d694675
Add mise.toml and mac specifc things
mikeeq Feb 27, 2026
3f8edc1
add local stuff
mikeeq Feb 27, 2026
21c95e3
add local stuff v2
mikeeq Feb 27, 2026
0c7367b
add local stuff v3
mikeeq Feb 27, 2026
db23a0b
fix az path
mikeeq Feb 27, 2026
b877850
last fixes
mikeeq Feb 27, 2026
02a3b98
revert fedora playbook
mikeeq Feb 27, 2026
e6b9a38
Merge branch 'feature/next_lvl' of github.com:mikeeq/ansible-ops-work…
mikeeq Feb 27, 2026
5d6bcf3
Add starship
mikeeq Mar 6, 2026
104c9be
add vaultwarden
mikeeq Mar 6, 2026
7dc7408
keeweb remove
mikeeq Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,33 @@ jobs:
# apk add --no-cache shellcheck bash
# shellcheck ./*.sh
# '
molecule:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test:
- default

steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"

- name: Install molecule
run: |
pip install molecule molecule-plugins ansible

- name: Install ansible-galaxy requirements
run: ansible-galaxy install -r requirements.yaml --force

- name: Run Molecule tests
run: molecule test
env:
PY_COLORS: '1'
ANSIBLE_FORCE_COLOR: '1'
continue-on-error: false
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,13 @@ Contributions are what make the open source community such an amazing place to b
mv /usr/lib/udev/rules.d/61-gdm.rules /root/61-gdm.rules
dracut -f

# Install drivers without graphical installer
bash NVIDIA-Linux-x86_64-590.44.01.run --silent --dkms --accept-license --disable-nouveau --no-nouveau-check --rebuild-initramfs --run-nvidia-xconfig
bash cuda_13.1.0_590.44.01_linux.run --silent --toolkit --override

nvidia-smi
# NVIDIA-SMI 590.44.01 Driver Version: 590.44.01 CUDA Version: 13.1

```

12. To fix purple'ish screen, enable OC and Fan control (I recommend to use GreenWithEnvy - gwe (installed using flatpak)) apply those changes to `/etc/X11/xorg.conf`:
Expand Down Expand Up @@ -670,6 +677,28 @@ vi /etc/systemd/logind.conf
## set no-cgroups = false in /etc/nvidia-container-runtime/config.toml
```

31. Sticky keys in Fedora 43 Gnome when using keyboard shortcuts for changing desktop (ctrl+alt+arrow key)

```
# https://discussion.fedoraproject.org/t/wierd-behavior-on-switch-workspace/172003/11
# https://gitlab.gnome.org/GNOME/mutter/-/issues/4416

dnf versionlock exclude mutter-49.1.1-1.fc43
dnf downgrade mutter
```

32. Wayland limitations:

- Clipboard sharing is missing: https://github.com/input-leap/input-leap/issues/1698
- Install X11 back on F43: https://copr.fedorainfracloud.org/coprs/frantisekz/GNOME-X11/
- Sticky keys as above

## TODO

- consider switching from oh-my-zsh to antidote
- consider switching from p10k to starship


<!-- LICENSE -->
## License

Expand Down
2 changes: 2 additions & 0 deletions ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[defaults]
roles_path = ./roles
52 changes: 52 additions & 0 deletions continue_tutorial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
""" _________ _____ _____
__ ____/______ _______ __ /____(_)_______ ____ _______
_ / _ __ \__ __ \_ __/__ / __ __ \_ / / /_ _ \
/ /___ / /_/ /_ / / // /_ _ / _ / / // /_/ / / __/
\____/ \____/ /_/ /_/ \__/ /_/ /_/ /_/ \__,_/ \___/

Autocomplete, Edit, Chat, and Agent tutorial
"""


# ————————————————————————————————————————————— Autocomplete —————————————————————————————————————————————— #
# Autocomplete provides inline code suggestions as you type.

# 1. Place cursor after `sorting_algorithm:` below and press [Enter]
# 2. Press [Tab] to accept the Autocomplete suggestion

# Basic assertion for sorting_algorithm:

# ————————————————————————————————————————————————— Edit ————————————————————————————————————————————————— #
# Edit is a convenient way to make quick changes to specific code and files.

# 1. Highlight the code below
# 2. Press [Cmd/Ctrl + I] to Edit
# 3. Try asking Continue to "make this more readable"
def sorting_algorithm(x):
for i in range(len(x)):
for j in range(len(x) - 1):
if x[j] > x[j + 1]:
x[j], x[j + 1] = x[j + 1], x[j]
return x

# ————————————————————————————————————————————————— Chat ————————————————————————————————————————————————— #
# Chat makes it easy to ask for help from an LLM without needing to leave the IDE.

# 1. Highlight the code below
# 2. Press [Cmd/Ctrl + L] to add to Chat
# 3. Try asking Continue "what sorting algorithm is this?"
def sorting_algorithm2(x):
for i in range(len(x)):
for j in range(len(x) - 1):
if x[j] > x[j + 1]:
x[j], x[j + 1] = x[j + 1], x[j]
return x

# ————————————————————————————————————————————————— Agent ————————————————————————————————————————————————— #
# Agent equips the Chat model with the tools needed to handle a wide range of coding tasks, allowing
# the model to make decisions and save you the work of manually finding context and performing actions.

# 1. Switch from "Chat" to "Agent" mode using the dropdown in the bottom left of the input box
# 2. Use the "/init" slash command to generate a CONTINUE.md file

# —————————————————— Learn more at https://docs.continue.dev ——————————————————— #
2 changes: 2 additions & 0 deletions group_vars/all.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
# Global variables for all hosts
2 changes: 2 additions & 0 deletions inventory/test.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[test]
localhost ansible_connection=local
82 changes: 82 additions & 0 deletions mise.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
[tools]
# Custom registries are not included in mise-versions
# https://mise-versions.jdx.dev/

# mise registry | grep -i aws
# mise plugins ls-remote | grep aws
# mise ls-remote aws-cli

## Infrastructure tools

# https://github.com/hashicorp/terraform/releases
# terraform = "1.14.4"

# https://github.com/gruntwork-io/terragrunt/releases
# terragrunt = "0.99.1"

# https://github.com/terraform-linters/tflint/releases
# tflint = "latest"

# https://github.com/terraform-docs/terraform-docs/releases
# terraform-docs = "latest"

python = "3.14"

pipx = "latest"

"pipx:ansible" = "latest"

## Security scanning

# https://github.com/aquasecurity/trivy/releases
trivy = "latest"

# https://github.com/bridgecrewio/checkov/releases
#"pipx:checkov" = "latest"

# https://github.com/gitleaks/gitleaks/releases
gitleaks = "8.18.4"

## Pre-commit and linting

# https://github.com/pre-commit/pre-commit/releases
pre-commit = "latest"

# https://github.com/errata-ai/vale/releases
# vale = "latest"

# https://github.com/igorshubovych/markdownlint-cli/releases
# markdownlint-cli = "latest"

[tasks.pre-commit]
description = "Run pre-commit checks on all files"
run = "pre-commit run --all-files --show-diff-on-failure --color=always"

[tasks.ansible-setup]
description = "Inject passlib into ansible pipx environment"
run = "pipx inject ansible passlib"

[tasks.tf-clean-cache]
description = "Find and remove .external_modules, .terragrunt-cache directories and .terraform.lock.hcl files"
run = '''
echo "Searching for .external_modules, .terragrunt-cache directories and .terraform.lock.hcl files..."
dirs=$(find . \( -type d \( -name ".external_modules" -o -name ".terragrunt-cache" \) -o -type f -name ".terraform.lock.hcl" \) 2>/dev/null)
if [ -z "$dirs" ]; then
echo "No directories found."
exit 0
fi
echo ""
echo "$dirs" | while read -r d; do
du -sh "$d"
done | sort -rh | sed 's/^/ /'
echo ""
count=$(echo "$dirs" | wc -l)
echo "Found $count directories. Removing..."
echo "$dirs" | xargs rm -rf
echo "Done."
'''

[env]
# https://terragrunt.gruntwork.io/docs/troubleshooting/performance/
TF_PLUGIN_CACHE_DIR = "{{config_root}}/.terraform-plugin-cache"
#TG_EXPERIMENT = "dependency-fetch-output-from-state"
6 changes: 6 additions & 0 deletions playbooks/chrome-install.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
- name: Install Google Chrome Browser
hosts: all
become: true
roles:
- chrome-install
5 changes: 4 additions & 1 deletion playbooks/fedora.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,20 @@
- pkg_mgmt/dnf
- pkg_mgmt/flatpak
- desktop/apps/google_chrome
- desktop/apps/keeweb
# - desktop/apps/keeweb
- apps/docker
- apps/qemu
- desktop/apps/terminator
- apps/vagrant
- apps/packer
- desktop/gnome
- desktop/apps/vscode
- apps/ollama
- apps/claude-code
- desktop/apps/x11docker
- desktop/fedora
# - apps/nordvpn
- apps/mise

- name: Include a playbook for generic-core provisioning
ansible.builtin.import_playbook: generic-core.yaml
Expand Down
2 changes: 1 addition & 1 deletion playbooks/generic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
become: true
roles:
- pkg_mgmt/pip
# - apps/keybase
- apps/keybase
- apps/kubectl
- apps/helm
- apps/stern
Expand Down
4 changes: 2 additions & 2 deletions playbooks/group_vars/aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ flatpak_apps:
# remote: flathub
# - name: com.slack.Slack
# remote: flathub
- name: com.github.debauchee.barrier
remote: flathub
# - name: com.github.debauchee.barrier
# remote: flathub
# - name: com.discordapp.Discord
# remote: flathub

Expand Down
10 changes: 10 additions & 0 deletions playbooks/group_vars/all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ dnf_pkgs:
- sqlite3
- python3-dnf-plugin-versionlock
- ncdu
- git-filter-repo

dnf_gui_pkgs:
- clamtk
Expand Down Expand Up @@ -141,6 +142,11 @@ pipx_apps:
- fastapi
- uvicorn
- jinja2
- name: tasmotizer
install_apps: true
inject_packages:
- pyserial
- click

gnome_extension_owner: "{{ user_name }}"
gnome_extension_path: "/home/{{ gnome_extension_owner }}/.local/share/gnome-shell/extensions/"
Expand Down Expand Up @@ -181,6 +187,10 @@ gnome_extension_ids: "{{ gnome_shell_extensions }}"
# vagrant_version: 2.4.1
# https://github.com/boz/kail/releases
# kail_version: 0.16.1
# https://github.com/ollama/ollama/releases/latest
# ollama_version: 0.1.32
# https://www.npmjs.com/package/@anthropic-ai/claude-code
# claude_code_npm_version: 0.4.0

vscode_extensions:
- ms-vscode.powershell
Expand Down
44 changes: 44 additions & 0 deletions playbooks/group_vars/arm64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
# ansible_architecture == "aarch64"
architecture_common_name: "arm64"

# Standard macOS Apple Silicon prefix - required for pre-built bottles
#=brew_install_path: /opt/homebrew

Check failure on line 6 in playbooks/group_vars/arm64.yaml

View workflow job for this annotation

GitHub Actions / static-analysis

yaml[comments]

Missing starting space in comment

brew_pkgs:
- gpg
- pinentry-mac
- mise
- htop
- ctop
- dive
- ollama
- graphviz
- azure-cli
- awscli
- kubectl
- terraform
- terragrunt
- helm
# - kustomize
# - k9s
# - stern
# - lazygit
# - neovim
# - tmux
# - fzf
# - gh
# - ghq
# - ghz
# - gh-ost

brew_cask_pkgs:
- iterm2
- visual-studio-code
- google-chrome
- firefox
- slack
- spotify
# - rancher-desktop
- utm
- ollama
3 changes: 3 additions & 0 deletions playbooks/group_vars/x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ flatpak_apps:
remote: flathub
- name: io.github.peazip.PeaZip
remote: flathub
- name: com.bitwarden.desktop
remote: flathub


# https://github.com/ishantanu/awesome-kubectl-plugins
krew_plugins:
Expand Down
35 changes: 35 additions & 0 deletions playbooks/mac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
- name: Include a playbook for including arch specifc vars
ansible.builtin.import_playbook: vars.yaml

- name: MacOS bootstrap
hosts:
- "{{ hosts_to_deploy | default('local') }}"
# - mikeeClevo
become: false
gather_facts: false
# pre_tasks:
# # - ansible.builtin.debug:
# # var: hostvars[inventory_hostname]
# # https://github.com/geerlingguy/docker-fedora41-ansible/issues/2
# - name: TEMP | Fix due to PAM error in some upstream images
# when: ((ansible_distribution == 'Fedora') or (ansible_distribution == 'Rocky')) and (ansible_run_in_docker is defined)
# # Explicitly don't try to become because that will trigger the broken PAM error
# # become: true
# # Bug in some upstream distros, /etc/shadow has no file perms in container image
# ansible.builtin.file:
# path: /etc/shadow
# mode: '400'
roles:
# - pkg_mgmt/pip
# - pkg_mgmt/brew
- apps/oh_my_zsh
# - desktop/macos
# - desktop/apps/vscode
# - apps/antidote
vars:
user_name: "{{ ansible_env.USER }}"
oh_my_zsh_users:
- "{{ user_name }}"
antidote_users:
- "{{ user_name }}"
Loading
Loading