airgap installs allow users to deploy k3s in a situation where the server is not internet connected
and therefore unable to download anything externally
For some weird reason, string booleans were set on `k3s_control_node` and `k3s_primary_control_node`, making their behavior non-obvious (for python `bool("false") == True`).
This fixes that problem, and BTW restores the ability to create clusters, which got lost with this bug.
After running the role against a cluster, see:
```sh
❯ ansible -i inventories/testing.yaml k8s_node -m command -ba 'kubectl get node'
vm0 | CHANGED | rc=0 >>
NAME STATUS ROLES AGE VERSION
vm0 Ready control-plane,etcd,master 9m19s v1.21.2+k3s1
vm2 | CHANGED | rc=0 >>
NAME STATUS ROLES AGE VERSION
vm2 Ready control-plane,etcd,master 9m22s v1.21.2+k3s1
vm1 | CHANGED | rc=0 >>
NAME STATUS ROLES AGE VERSION
vm1 Ready control-plane,etcd,master 9m22s v1.21.2+k3s1
```
Now, after the patch:
```sh
❯ ansible -i inventories/testing.yaml k8s_node -m command -ba 'kubectl get node'
vm0 | CHANGED | rc=0 >>
NAME STATUS ROLES AGE VERSION
vm0 Ready control-plane,etcd,master 2m2s v1.21.2+k3s1
vm1 Ready control-plane,etcd,master 58s v1.21.2+k3s1
vm2 Ready control-plane,etcd,master 80s v1.21.2+k3s1
vm1 | CHANGED | rc=0 >>
NAME STATUS ROLES AGE VERSION
vm0 Ready control-plane,etcd,master 2m2s v1.21.2+k3s1
vm1 Ready control-plane,etcd,master 58s v1.21.2+k3s1
vm2 Ready control-plane,etcd,master 80s v1.21.2+k3s1
vm2 | CHANGED | rc=0 >>
NAME STATUS ROLES AGE VERSION
vm0 Ready control-plane,etcd,master 2m2s v1.21.2+k3s1
vm1 Ready control-plane,etcd,master 58s v1.21.2+k3s1
vm2 Ready control-plane,etcd,master 80s v1.21.2+k3s1
```
@Tecnativa TT2541
If you run the role on an ansible configured with that setting, it will fail with:
fatal: [vm0]: FAILED! => {"msg": "Unexpected templating type error occurred on ({% for host in ansible_play_hosts_all %}\n{% filter string %}\n{% filter replace('\\n', ' ') %}\n{{ host }}\n@@@\n{{ hostvars[host].ansible_host | default(hostvars[host].ansible_fqdn) }}\n@@@\nC_{{ hostvars[host].k3s_control_node }}\n@@@\nP_{{ hostvars[host].k3s_primary_control_node | default(False) }}\n{% endfilter %}\n{% endfilter %}\n@@@ END:{{ host }}\n{% endfor %}): sequence item 4: expected str instance, bool found"}
* Tidy up and refactoring of tasks
- `k3s_config_dir` derived from `k3s_config_file`, reused throughout the role
to allow for easy removal of "Rancher" references #73.
- `k3s_token_location` has moved to be in `k3s_config_dir`.
- Tasks for creating directories now looped to caputure configuration from
`k3s_server` and `k3s_agent` and ensure directories exist before k3s
starts, see #75.
- Server token collected directly from token file, not symlinked file
(node-token).
- `k3s_runtime_config` defined in `vars/` for validation and overwritten in
tasks for control plane and workers.
- Removed unused references to GitHub API.
* set_fact now uses FQCN
* re-pin molecule<3.2
* Command module now uses FQCN
* Added package checks for #72
* Reorder task files
- Docker tasks moved into a separate directory for ease of removal #67
- Bugfix: Control plane on alternate port didn't work.
- Validation tasks grouped
* Fix Fedora tests
* Add optional documentation links to validations steps #76
* Removed jmespath requirement
* Fix issue with data collection
* Release candidate
- Added option to skip validation checks #47
- Add SELinux support in containerd #48
- Added check for Etcd member count #46
- Moved token to a file #50
- Added Etcd snapshot configuration options #49