* fix(k3s_server): skip k3s-init log collection when the destination is unset
The guard on the k3s-init diagnostics include used a boolean default for
the ANSIBLE_K3S_LOG_DIR lookup so that the when conditional would be a real
boolean. That is unnecessary: `log_destination | default('') != ''` is a
comparison and always evaluates to a bool, so ansible-core 2.19 never sees
a non-boolean conditional here.
The boolean default also defeats the guard. With ANSIBLE_K3S_LOG_DIR unset,
log_destination is the bool False, and `False != ''` is True in Python
because False == 0. The include therefore runs on every provisioning run,
executing the journalctl, systemctl, ip, ss, iptables, service_facts, ping
and wait_for diagnostics in fetch_k3s_init_logs.yml, then creating a
directory literally named "False" in the operator's working directory.
Use an empty-string default so the unset case renders "" and the guard
skips. CI did not catch this because .github/workflows/test.yml always
exports ANSIBLE_K3S_LOG_DIR.
Add a regression test that parses the role, renders the real log_destination
expression for both the unset and set cases, and asserts that no boolean
default has been reintroduced.
* chore(site): wrap the over-long kubeconfig fetch conditional
* chore(ansible): use ansible_facts
* fix(ansible): satisfy lint for fact migration
- wrap nested fact expressions to meet YAML line length limits
- update the bootstrap regression assertion for ansible_facts
* fix(pre-commit): install shellcheck for host architecture
- install shellcheck-py from PyPI in the local hook environment
- pin the platform-aware shellcheck package version
---------
Co-authored-by: Timothy Stewart <timothystewart6@gmail.com>
Add a preflight assertion to site.yml that confirms every host in the
k3s_cluster group reports a unique hostname. k3s registers each node keyed by
its hostname, so duplicate hostnames prevent nodes from joining the cluster
and are hard to troubleshoot. The check fails fast in the Pre tasks instead of
surfacing as a cryptic registration failure later.
- site.yml: assert (cluster_hostnames | unique | length) == length for the
k3s_cluster group, skipping hosts outside that group
- README.md: document the unique-hostname requirement
- .github/scripts/test-unique-hostname-precheck.sh: regression test
- .pre-commit-config.yaml: wire the test into pre-commit
Closes#636
* Change to FQCN with ansible-lint fixer
Since ansible-base 2.10 (later ansible-core), FQCN is the new way to go.
Updated .ansible-lint with a production profile and removed fqcn in skip_list.
Updated .yamllint with rules needed.
Ran ansible-lint --fix=all, then manually applied some minor changes.
* Changed octal value in molecule/ipv6/prepare.yml
* Update pre-commit actions
This was done by running "pre-commit autoupdate --freeze".
* Remove pre-commit only dependencies from requirements.in
Including them in the file would create the illusion that those were the
versions actually used in CI, but they are not. The exact versions are
determined by the pre-commit hooks which are pinned in
.pre-commit-config.yaml.
* Ansible Lint: Fix role-name[path]
* Ansible Lint: Fix name[play]
* Ansible Lint: Fix key-order[task]
* Ansible Lint: Fix jinja[spacing]
* Ansible Lint: Fix no-free-form
* Ansible Lint: Fix var-naming[no-reserved]
* Ansible Lint: Fix yaml[comments]
* Ansible Lint: Fix yaml[line-length]
* Ansible Lint: Fix name[casing]
* Ansible Lint: Fix no-changed-when
* Ansible Lint: Fix fqcn[action]
* Ansible Lint: Fix args[module]
* Improve task naming
* (fix): correct var
var registered for rc.local check is rcfile but under when it said rclocal which was undefined. changed to rcfile to correct.
* add vars file for proxmox host group
* remove remote_user from site.yml for proxmox
* added newline to fix lint issue
* fix added ---
---------
Co-authored-by: ThePCGeek <thepcgeek1776@gmail.com>
* Need to become to reboot
* Fix rc.local insertion of script
* Fix syntax
Add new line to lxc.yml
* Remove need to set fact
* Add reset for LXC container config
* Fix syntax
Its always the newlines..
* remove fact setting from reset task
We should mirror the deployment task
* Proxmox LXC reset functions
* Handle if rc.local already has data
* Dont compare literal
* Cleanup Erroneous newline
* Handle rc.local not present on a hybrid cluster
* Update roles/reset/tasks/main.yml
Co-authored-by: Simon Leiner <simon@leiner.me>
* Update roles/lxc/tasks/main.yml
Co-authored-by: Simon Leiner <simon@leiner.me>
---------
Co-authored-by: Techno Tim <timothystewart6@gmail.com>
Co-authored-by: Simon Leiner <simon@leiner.me>
* Apply "become" on roles instead of plays
This leads to facts being gathered for the "regular" login user, instead
of root.
* Do not rely on ansible_user
Instead of reading ansible_user (which may or may not be defined), this
patch lets the roles rely on Ansible facts [1].
[1]: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_vars_facts.html