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
* 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
This release also fixes:
- #38 : removing the --disable-agent option. Please use node taints.
- #39 : clarified where jmespath should be installed in README.md
The script looks to be completing without error in my testing as well as
in the original issue so I am forcing an exit with 0 until the cause can
be found.
Fixes#23
Fixes#16
This is because without a CNI, nodes will never be ready and the task
will fail. You need to deploy your choice of CNI manually (such as
Calico) then check the state of the cluster using `kubectl get nodes`.
1. Now does not remove prerequisite packages, lvm2 was included in
these packages (not good when you use LVM2 for real).
2. Added a bit more idempotency to the shell scripts - only delete if
it exists.
3. Check that the process isn't running and binaries are gone.
1. Ability to specify control host address, for connecting to a control plane
provisioned outside of the role.
2. Ability to specify the control host token, again for connecting to
a control plane provisioned outside of the role.
3. Included upstream changes from @nolte to define KubeConfig file
permissions.