in an air gapped environment the machine will not be able to check sha checksums or information
around the binary so we should ignore the tasks in that scenario
in an air gapped environment the machine will not be able to check sha checksums or information
around the binary so we should ignore the tasks in that scenario
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
Otherwise, when completely uninstalling the etcd-enabled cluster, it fails with:
```
TASK [xanmanning.k3s : Check the conditions when embedded etcd is defined] ***************************************
fatal: [vm0]: FAILED! => {
"assertion": "(((k3s_controller_list | length) % 2) == 1)",
"changed": false,
"evaluated_to": false,
"msg": "Etcd should have a minimum of 3 defined members and the number of members should be odd. Please see notes about HA in README.md"
}
fatal: [vm1]: FAILED! => {
"assertion": "(((k3s_controller_list | length) % 2) == 1)",
"changed": false,
"evaluated_to": false,
"msg": "Etcd should have a minimum of 3 defined members and the number of members should be odd. Please see notes about HA in README.md"
}
fatal: [vm2]: FAILED! => {
"assertion": "(((k3s_controller_list | length) % 2) == 1)",
"changed": false,
"evaluated_to": false,
"msg": "Etcd should have a minimum of 3 defined members and the number of members should be odd. Please see notes about HA in README.md"
}
```
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"}
os ubuntu amd64 16.04 LTS
ansible 2.9.20
python version 2.7
```
FAILED! => {"msg": "The conditional check 'item in kubectl_get_nodes_result.stdout' failed. The error was: error while evaluating conditional (item in kubectl_get_nodes_result.stdout): 'dict object' has no attribute 'stdout'\n\nThe error appears to be in '/home/rancher/.ansible/roles/xanmanning.k3s/tasks/teardown/drain-and-remove-nodes.yml': line 39, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Ensure uninstalled nodes are removed\n ^ here\n"}
```