Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
ee95d39
Generated spec and requirements from /speckit.specify
WadeBarnes Feb 16, 2026
f0398d1
Update baseline requirements
WadeBarnes Feb 16, 2026
e07a11a
Generated updates to the spec from re-running /speckit.specify
WadeBarnes Feb 16, 2026
aa00cf2
Generated updates to the spec from running /speckit.clarify
WadeBarnes Feb 16, 2026
bee7707
Generated plan from running /speckit.plan
WadeBarnes Feb 16, 2026
eadb809
Add task breakdown prompt.
WadeBarnes Feb 16, 2026
96d5d3e
Generated task list from /speckit.tasks
WadeBarnes Feb 16, 2026
2f5e5af
Generated updates following running /speckit.analyze
WadeBarnes Feb 16, 2026
be56552
Generated updates following running /speckit.analyze
WadeBarnes Feb 16, 2026
1a5b7b8
Generated updates following running /speckit.analyze
WadeBarnes Feb 16, 2026
9bffd4d
Generated updates following running /speckit.analyze
WadeBarnes Feb 16, 2026
0adc3c1
Generated updates following a second run of /speckit.analyze
WadeBarnes Feb 17, 2026
e7426c8
Generated output from /speckit.implement
WadeBarnes Feb 17, 2026
d51783a
Generated output from /speckit.implement
WadeBarnes Feb 17, 2026
02570fa
Generated output from /speckit.implement
WadeBarnes Feb 17, 2026
b6e393e
Add tooling to dev container
WadeBarnes Feb 22, 2026
5d2d4ba
Address ansible-lint issues
WadeBarnes Feb 22, 2026
47b69dc
Fix linting errors
WadeBarnes May 10, 2026
56bfcc1
Fix deprecation warnings
WadeBarnes May 10, 2026
744a55b
Install nftables by default when no firewall backend is found.
WadeBarnes May 10, 2026
bfe4b91
Fix installation issues
WadeBarnes May 10, 2026
3b696c5
Reboot to refresh hostname
WadeBarnes May 10, 2026
e036267
Update kube-vip configuration to support v1.1.2
WadeBarnes May 11, 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
43 changes: 43 additions & 0 deletions .ansible-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
# .ansible-lint.yml
# Purpose: Minimal ansible-lint configuration for baseline k3s playbooks
# Reference: https://ansible-lint.readthedocs.io/

# Exclude paths from linting
exclude_paths:
- .git/
- .vscode/
- venv/
- .venv/
- __pycache__/
- '*.retry'
- tests/ansible/inventories/ # Test inventories may have intentional violations

# Skip specific rules that are too strict for this baseline
skip_list:
- 'yaml[line-length]' # Allow longer YAML lines for readability
- 'name[casing]' # Allow flexible task naming conventions
- 'fqcn[action-core]' # Allow short-form module names (ansible.builtin.*)

# Warn only for certain rules (don't fail CI)
warn_list:
- 'experimental' # Warn on experimental features
- 'role-name' # Warn on role naming conventions

# Enable offline mode (don't fetch galaxy roles)
offline: false

# Use default ansible-lint profile
profile: null

# Minimum ansible-lint version
# min_ansible_version: "2.15"

# Enable progressive mode (stricter over time)
progressive: false

# Write violations to file (optional)
# write_list:
# - all

# Ansible-lint will use ansible-playbook and ansible-galaxy from PATH
8 changes: 6 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
"name": "Spec Kit",
"image": "mcr.microsoft.com/devcontainers/python:2-3.14-trixie",
"features": {
"ghcr.io/devcontainers-extra/features/uv:1": {}
"ghcr.io/devcontainers-extra/features/uv:1": {},
"ghcr.io/devcontainers-extra/features/ansible:2": {},
"ghcr.io/hspaans/devcontainer-features/ansible-lint:2": {}
},
"customizations": {
"vscode": {
"extensions": [
"github.copilot-chat"
"github.copilot-chat",
"redhat.vscode-yaml",
"redhat.ansible"
]
}
},
Expand Down
6 changes: 6 additions & 0 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ set -euo pipefail
echo "[post-create] Upgrading pip ..."
python3 -m pip install --upgrade pip

# Install Spec Kit CLI (specify)
echo "[post-create] Installing specify CLI (spec-kit)"
if command -v specify &>/dev/null; then
echo "specify already installed — skipping"
Expand All @@ -16,3 +17,8 @@ else
fi
uv tool install specify-cli --from "git+https://github.com/github/spec-kit.git"
fi

# Install testConnection
sudo curl https://raw.githubusercontent.com/bcgov/openshift-developer-tools/refs/heads/master/bin/testConnection -O
sudo mv testConnection /usr/local/bin/
sudo chmod +x /usr/local/bin/testConnection
29 changes: 29 additions & 0 deletions .github/agents/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# ansible-k3s-cluster Development Guidelines

Auto-generated from all feature plans. Last updated: 2026-02-16

## Active Technologies

- Ansible playbooks (YAML); minimum supported Ansible Core version 2.15+ + Ansible, k3s, k3s-io/k3s-ansible collection, cert-manager, multus CNI, Rancher and rancher-monitoring stack, Traefik ingress, kube-vip (or equivalent LB/VIP mechanism), optional Synology CSI driver (001-k3s-ansible-baseline)

## Project Structure

```text
src/
tests/
```

## Commands

# Add commands for Ansible playbooks (YAML); minimum supported Ansible Core version 2.15+

## Code Style

Ansible playbooks (YAML); minimum supported Ansible Core version 2.15+: Follow standard conventions

## Recent Changes

- 001-k3s-ansible-baseline: Added Ansible playbooks (YAML); minimum supported Ansible Core version 2.15+ + Ansible, k3s, k3s-io/k3s-ansible collection, cert-manager, multus CNI, Rancher and rancher-monitoring stack, Traefik ingress, kube-vip (or equivalent LB/VIP mechanism), optional Synology CSI driver

<!-- MANUAL ADDITIONS START -->
<!-- MANUAL ADDITIONS END -->
75 changes: 75 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
.ssh

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
.venv/
venv/
ENV/
env/
.env

# Ansible
*.retry
.ansible/
ansible.log
*.vault_pass

# Secrets and credentials
*.key
*.pem
*.crt
secrets/
credentials/
.vault_password

# IDE and editors
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store
Thumbs.db

# Logs
*.log
log/
logs/

# Temporary files
*.tmp
*.temp
.cache/

# Test outputs
.pytest_cache/
.coverage
htmlcov/
*.cover
.hypothesis/

# OS specific
.DS_Store
Thumbs.db
2 changes: 1 addition & 1 deletion .specify/memory/constitution.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Default configuration must be secure by default: minimal open ports, TLS enabled

## Ansible & k3s Requirements

- Playbooks must be organized with a clear entry point (e.g., site.yml or cluster.yml), roles for host preparation and k3s installation, and group/host variables for cluster configuration.
- Playbooks must be organized with a clear entry point (e.g., site.yml or a dedicated core cluster playbook), roles for host preparation and k3s installation, and group/host variables for cluster configuration.
- Supported environments (e.g., Debian/Ubuntu-like, systemd-based Linux on x86_64/arm64) must be explicitly documented, and tasks must fail fast with clear messages on unsupported platforms.
- k3s installation must:
- Pin k3s version via a variable and avoid "latest" by default.
Expand Down
Loading