mirror of
https://github.com/techno-tim/k3s-ansible.git
synced 2025-12-29 12:12:38 +01:00
Compare commits
2 Commits
dependabot
...
7d1d7ad10a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d1d7ad10a | ||
|
|
48f5096a1a |
4
.github/ISSUE_TEMPLATE.md
vendored
4
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
<!-- It's a good idea to check this post first for general troubleshooting https://github.com/timothystewart6/k3s-ansible/discussions/19 -->
|
<!-- It's a good idea to check this post first for general troubleshooting https://github.com/techno-tim/k3s-ansible/discussions/19 -->
|
||||||
|
|
||||||
<!--- Provide a general summary of the issue in the Title above -->
|
<!--- Provide a general summary of the issue in the Title above -->
|
||||||
|
|
||||||
@@ -82,4 +82,4 @@ node
|
|||||||
## Possible Solution
|
## Possible Solution
|
||||||
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||||
|
|
||||||
- [ ] I've checked the [General Troubleshooting Guide](https://github.com/timothystewart6/k3s-ansible/discussions/20)
|
- [ ] I've checked the [General Troubleshooting Guide](https://github.com/techno-tim/k3s-ansible/discussions/20)
|
||||||
|
|||||||
6
.github/workflows/cache.yml
vendored
6
.github/workflows/cache.yml
vendored
@@ -11,19 +11,19 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out the codebase
|
- name: Check out the codebase
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # 4.1.7
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
||||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # 6.0.0
|
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # 5.1.1
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
|
|
||||||
- name: Cache Vagrant boxes
|
- name: Cache Vagrant boxes
|
||||||
id: cache-vagrant
|
id: cache-vagrant
|
||||||
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # 4.1.2
|
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # 4.0.2
|
||||||
with:
|
with:
|
||||||
lookup-only: true #if it exists, we don't need to restore and can skip the next step
|
lookup-only: true #if it exists, we don't need to restore and can skip the next step
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
10
.github/workflows/lint.yml
vendored
10
.github/workflows/lint.yml
vendored
@@ -11,18 +11,18 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out the codebase
|
- name: Check out the codebase
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # 4.1.7
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
||||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # 6.0.0
|
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # 5.1.1
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
|
|
||||||
- name: Restore Ansible cache
|
- name: Restore Ansible cache
|
||||||
uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # 4.1.2
|
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # 4.0.2
|
||||||
with:
|
with:
|
||||||
path: ~/.ansible/collections
|
path: ~/.ansible/collections
|
||||||
key: ansible-${{ hashFiles('collections/requirements.yml') }}
|
key: ansible-${{ hashFiles('collections/requirements.yml') }}
|
||||||
@@ -45,9 +45,9 @@ jobs:
|
|||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # 4.1.7
|
||||||
- name: Ensure SHA pinned actions
|
- name: Ensure SHA pinned actions
|
||||||
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@38608ef4fb69adae7f1eac6eeb88e67b7d083bfd # 3.0.16
|
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@b88cd0aad2c36a63e42c71f81cb1958fed95ac87 # 3.0.10
|
||||||
with:
|
with:
|
||||||
allowlist: |
|
allowlist: |
|
||||||
aws-actions/
|
aws-actions/
|
||||||
|
|||||||
8
.github/workflows/test.yml
vendored
8
.github/workflows/test.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out the codebase
|
- name: Check out the codebase
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
|
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # 4.1.7
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
@@ -59,13 +59,13 @@ jobs:
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
||||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # 6.0.0
|
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # 5.1.1
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
|
|
||||||
- name: Restore vagrant Boxes cache
|
- name: Restore vagrant Boxes cache
|
||||||
uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # 4.1.2
|
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # 4.0.2
|
||||||
with:
|
with:
|
||||||
path: ~/.vagrant.d/boxes
|
path: ~/.vagrant.d/boxes
|
||||||
key: vagrant-boxes-${{ hashFiles('**/molecule.yml') }}
|
key: vagrant-boxes-${{ hashFiles('**/molecule.yml') }}
|
||||||
@@ -118,7 +118,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload log files
|
- name: Upload log files
|
||||||
if: always() # do this even if a step before has failed
|
if: always() # do this even if a step before has failed
|
||||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # 4.4.3
|
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # 4.3.4
|
||||||
with:
|
with:
|
||||||
name: logs
|
name: logs
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
@@ -15,6 +15,5 @@ rules:
|
|||||||
level: warning
|
level: warning
|
||||||
truthy:
|
truthy:
|
||||||
allowed-values: ["true", "false"]
|
allowed-values: ["true", "false"]
|
||||||
|
|
||||||
ignore:
|
ignore:
|
||||||
- galaxy.yml
|
- galaxy.yml
|
||||||
|
|||||||
76
README.md
76
README.md
@@ -117,81 +117,9 @@ Then change `server: https://127.0.0.1:6443` to match your master IP: `server: h
|
|||||||
|
|
||||||
See the commands [here](https://technotim.live/posts/k3s-etcd-ansible/#testing-your-cluster).
|
See the commands [here](https://technotim.live/posts/k3s-etcd-ansible/#testing-your-cluster).
|
||||||
|
|
||||||
### Variables
|
|
||||||
|
|
||||||
| Role(s) | Variable | Type | Default | Required | Description |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| `download` | `k3s_version` | string | ❌ | Required | K3s binaries version |
|
|
||||||
| `k3s_agent`, `k3s_server`, `k3s_server_post` | `apiserver_endpoint` | string | ❌ | Required | Virtual ip-address configured on each master |
|
|
||||||
| `k3s_agent` | `extra_agent_args` | string | `null` | Not required | Extra arguments for agents nodes |
|
|
||||||
| `k3s_agent`, `k3s_server` | `group_name_master` | string | `null` | Not required | Name othe master group |
|
|
||||||
| `k3s_agent` | `k3s_token` | string | `null` | Not required | Token used to communicate between masters |
|
|
||||||
| `k3s_agent`, `k3s_server` | `proxy_env` | dict | `null` | Not required | Internet proxy configurations |
|
|
||||||
| `k3s_agent`, `k3s_server` | `proxy_env.HTTP_PROXY` | string | ❌ | Required | HTTP internet proxy |
|
|
||||||
| `k3s_agent`, `k3s_server` | `proxy_env.HTTPS_PROXY` | string | ❌ | Required | HTTP internet proxy |
|
|
||||||
| `k3s_agent`, `k3s_server` | `proxy_env.NO_PROXY` | string | ❌ | Required | Addresses that will not use the proxies |
|
|
||||||
| `k3s_agent`, `k3s_server`, `reset` | `systemd_dir` | string | `/etc/systemd/system` | Not required | Path to systemd services |
|
|
||||||
| `k3s_custom_registries` | `custom_registries_yaml` | string | ❌ | Required | YAML block defining custom registries. The following is an example that pulls all images used in this playbook through your private registries. It also allows you to pull your own images from your private registry, without having to use imagePullSecrets in your deployments. If all you need is your own images and you don't care about caching the docker/quay/ghcr.io images, you can just remove those from the mirrors: section. |
|
|
||||||
| `k3s_server`, `k3s_server_post` | `cilium_bgp` | bool | `~` | Not required | Enable cilium BGP control plane for LB services and pod cidrs. Disables the use of MetalLB. |
|
|
||||||
| `k3s_server`, `k3s_server_post` | `cilium_iface` | string | ❌ | Not required | The network interface used for when Cilium is enabled |
|
|
||||||
| `k3s_server` | `extra_server_args` | string | `""` | Not required | Extra arguments for server nodes |
|
|
||||||
| `k3s_server` | `k3s_create_kubectl_symlink` | bool | `false` | Not required | Create the kubectl -> k3s symlink |
|
|
||||||
| `k3s_server` | `k3s_create_crictl_symlink` | bool | `true` | Not required | Create the crictl -> k3s symlink |
|
|
||||||
| `k3s_server` | `kube_vip_arp` | bool | `true` | Not required | Enables kube-vip ARP broadcasts |
|
|
||||||
| `k3s_server` | `kube_vip_bgp` | bool | `false` | Not required | Enables kube-vip BGP peering |
|
|
||||||
| `k3s_server` | `kube_vip_bgp_routerid` | string | `"127.0.0.1"` | Not required | Defines the router ID for the kube-vip BGP server |
|
|
||||||
| `k3s_server` | `kube_vip_bgp_as` | string | `"64513"` | Not required | Defines the AS for the kube-vip BGP server |
|
|
||||||
| `k3s_server` | `kube_vip_bgp_peeraddress` | string | `"192.168.30.1"` | Not required | Defines the address for the kube-vip BGP peer |
|
|
||||||
| `k3s_server` | `kube_vip_bgp_peeras` | string | `"64512"` | Not required | Defines the AS for the kube-vip BGP peer |
|
|
||||||
| `k3s_server` | `kube_vip_bgp_peers` | list | `[]` | Not required | List of BGP peer ASN & address pairs |
|
|
||||||
| `k3s_server` | `kube_vip_bgp_peers_groups` | list | `['k3s_master']` | Not required | Inventory group in which to search for additional `kube_vip_bgp_peers` parameters to merge. |
|
|
||||||
| `k3s_server` | `kube_vip_iface` | string | `~` | Not required | Explicitly define an interface that ALL control nodes should use to propagate the VIP, define it here. Otherwise, kube-vip will determine the right interface automatically at runtime. |
|
|
||||||
| `k3s_server` | `kube_vip_tag_version` | string | `v0.7.2` | Not required | Image tag for kube-vip |
|
|
||||||
| `k3s_server` | `kube_vip_cloud_provider_tag_version` | string | `main` | Not required | Tag for kube-vip-cloud-provider manifest when enable |
|
|
||||||
| `k3s_server`, `k3_server_post` | `kube_vip_lb_ip_range` | string | `~` | Not required | IP range for kube-vip load balancer |
|
|
||||||
| `k3s_server`, `k3s_server_post` | `metal_lb_controller_tag_version` | string | `v0.14.3` | Not required | Image tag for MetalLB |
|
|
||||||
| `k3s_server` | `metal_lb_speaker_tag_version` | string | `v0.14.3` | Not required | Image tag for MetalLB |
|
|
||||||
| `k3s_server` | `metal_lb_type` | string | `native` | Not required | Use FRR mode or native. Valid values are `frr` and `native` |
|
|
||||||
| `k3s_server` | `retry_count` | int | `20` | Not required | Amount of retries when verifying that nodes joined |
|
|
||||||
| `k3s_server` | `server_init_args` | string | ❌ | Not required | Arguments for server nodes |
|
|
||||||
| `k3s_server_post` | `bpf_lb_algorithm` | string | `maglev` | Not required | BPF lb algorithm |
|
|
||||||
| `k3s_server_post` | `bpf_lb_mode` | string | `hybrid` | Not required | BPF lb mode |
|
|
||||||
| `k3s_server_post` | `calico_blocksize` | int | `26` | Not required | IP pool block size |
|
|
||||||
| `k3s_server_post` | `calico_ebpf` | bool | `false` | Not required | Use eBPF dataplane instead of iptables |
|
|
||||||
| `k3s_server_post` | `calico_encapsulation` | string | `VXLANCrossSubnet` | Not required | IP pool encapsulation |
|
|
||||||
| `k3s_server_post` | `calico_natOutgoing` | string | `Enabled` | Not required | IP pool NAT outgoing |
|
|
||||||
| `k3s_server_post` | `calico_nodeSelector` | string | `all()` | Not required | IP pool node selector |
|
|
||||||
| `k3s_server_post` | `calico_iface` | string | `~` | Not required | The network interface used for when Calico is enabled |
|
|
||||||
| `k3s_server_post` | `calico_tag` | string | `v3.27.2` | Not required | Calico version tag |
|
|
||||||
| `k3s_server_post` | `cilium_bgp_my_asn` | int | `64513` | Not required | Local ASN for BGP peer |
|
|
||||||
| `k3s_server_post` | `cilium_bgp_peer_asn` | int | `64512` | Not required | BGP peer ASN |
|
|
||||||
| `k3s_server_post` | `cilium_bgp_peer_address` | string | `~` | Not required | BGP peer address |
|
|
||||||
| `k3s_server_post` | `cilium_bgp_neighbors` | list | `[]` | Not required | List of BGP peer ASN & address pairs |
|
|
||||||
| `k3s_server_post` | `cilium_bgp_neighbors_groups` | list | `['k3s_all']` | Not required | Inventory group in which to search for additional `cilium_bgp_neighbors` parameters to merge. |
|
|
||||||
| `k3s_server_post` | `cilium_bgp_lb_cidr` | string | `192.168.31.0/24` | Not required | BGP load balancer IP range |
|
|
||||||
| `k3s_server_post` | `cilium_exportPodCIDR` | bool | `true` | Not required | Export pod CIDR |
|
|
||||||
| `k3s_server_post` | `cilium_hubble` | bool | `true` | Not required | Enable Cilium Hubble |
|
|
||||||
| `k3s_server_post` | `cilium_hubble` | bool | `true` | Not required | Enable Cilium Hubble |
|
|
||||||
| `k3s_server_post` | `cilium_mode` | string | `native` | Not required | Inner-node communication mode (choices are `native` and `routed`) |
|
|
||||||
| `k3s_server_post` | `cluster_cidr` | string | `10.52.0.0/16` | Not required | Inner-cluster IP range |
|
|
||||||
| `k3s_server_post` | `enable_bpf_masquerade` | bool | `true` | Not required | Use IP masquerading |
|
|
||||||
| `k3s_server_post` | `kube_proxy_replacement` | bool | `true` | Not required | Replace the native kube-proxy with Cilium |
|
|
||||||
| `k3s_server_post` | `metal_lb_available_timeout` | string | `240s` | Not required | Wait for MetalLB resources |
|
|
||||||
| `k3s_server_post` | `metal_lb_ip_range` | string | `192.168.30.80-192.168.30.90` | Not required | MetalLB ip range for load balancer |
|
|
||||||
| `k3s_server_post` | `metal_lb_controller_tag_version` | string | `v0.14.3` | Not required | Image tag for MetalLB |
|
|
||||||
| `k3s_server_post` | `metal_lb_mode` | string | `layer2` | Not required | Metallb mode (choices are `bgp` and `layer2`) |
|
|
||||||
| `k3s_server_post` | `metal_lb_bgp_my_asn` | string | `~` | Not required | BGP ASN configurations |
|
|
||||||
| `k3s_server_post` | `metal_lb_bgp_peer_asn` | string | `~` | Not required | BGP peer ASN configurations |
|
|
||||||
| `k3s_server_post` | `metal_lb_bgp_peer_address` | string | `~` | Not required | BGP peer address |
|
|
||||||
| `lxc` | `custom_reboot_command` | string | `~` | Not required | Command to run on reboot |
|
|
||||||
| `prereq` | `system_timezone` | string | `null` | Not required | Timezone to be set on all nodes |
|
|
||||||
| `proxmox_lxc`, `reset_proxmox_lxc` | `proxmox_lxc_ct_ids` | list | ❌ | Required | Proxmox container ID list |
|
|
||||||
| `raspberrypi` | `state` | string | `present` | Not required | Indicates whether the k3s prerequisites for Raspberry Pi should be set up (possible values are `present` and `absent`) |
|
|
||||||
|
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
Be sure to see [this post](https://github.com/timothystewart6/k3s-ansible/discussions/20) on how to troubleshoot common problems
|
Be sure to see [this post](https://github.com/techno-tim/k3s-ansible/discussions/20) on how to troubleshoot common problems
|
||||||
|
|
||||||
### Testing the playbook using molecule
|
### Testing the playbook using molecule
|
||||||
|
|
||||||
@@ -218,7 +146,7 @@ collections:
|
|||||||
- name: community.general
|
- name: community.general
|
||||||
- name: ansible.posix
|
- name: ansible.posix
|
||||||
- name: kubernetes.core
|
- name: kubernetes.core
|
||||||
- name: https://github.com/timothystewart6/k3s-ansible.git
|
- name: https://github.com/techno-tim/k3s-ansible.git
|
||||||
type: git
|
type: git
|
||||||
version: master
|
version: master
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -56,16 +56,16 @@ dependencies:
|
|||||||
kubernetes.core: '*'
|
kubernetes.core: '*'
|
||||||
|
|
||||||
# The URL of the originating SCM repository
|
# The URL of the originating SCM repository
|
||||||
repository: https://github.com/timothystewart6/k3s-ansible
|
repository: https://github.com/techno-tim/k3s-ansible
|
||||||
|
|
||||||
# The URL to any online docs
|
# The URL to any online docs
|
||||||
documentation: https://github.com/timothystewart6/k3s-ansible
|
documentation: https://github.com/techno-tim/k3s-ansible
|
||||||
|
|
||||||
# The URL to the homepage of the collection/project
|
# The URL to the homepage of the collection/project
|
||||||
homepage: https://www.youtube.com/watch?v=CbkEWcUZ7zM
|
homepage: https://www.youtube.com/watch?v=CbkEWcUZ7zM
|
||||||
|
|
||||||
# The URL to the collection issue tracker
|
# The URL to the collection issue tracker
|
||||||
issues: https://github.com/timothystewart6/k3s-ansible/issues
|
issues: https://github.com/techno-tim/k3s-ansible/issues
|
||||||
|
|
||||||
# A list of file glob-like patterns used to filter any files or directories that should not be included in the build
|
# A list of file glob-like patterns used to filter any files or directories that should not be included in the build
|
||||||
# artifact. A pattern is matched from the relative path of the file or directory of the collection directory. This
|
# artifact. A pattern is matched from the relative path of the file or directory of the collection directory. This
|
||||||
|
|||||||
@@ -34,18 +34,6 @@ cilium_bgp_peer_asn: "64512"
|
|||||||
cilium_bgp_peer_address: 192.168.30.1
|
cilium_bgp_peer_address: 192.168.30.1
|
||||||
cilium_bgp_lb_cidr: 192.168.31.0/24 # cidr for cilium loadbalancer ipam
|
cilium_bgp_lb_cidr: 192.168.31.0/24 # cidr for cilium loadbalancer ipam
|
||||||
|
|
||||||
# enable kube-vip ARP broadcasts
|
|
||||||
kube_vip_arp: true
|
|
||||||
|
|
||||||
# enable kube-vip BGP peering
|
|
||||||
kube_vip_bgp: false
|
|
||||||
|
|
||||||
# bgp parameters for kube-vip
|
|
||||||
kube_vip_bgp_routerid: "127.0.0.1" # Defines the router ID for the BGP server
|
|
||||||
kube_vip_bgp_as: "64513" # Defines the AS for the BGP server
|
|
||||||
kube_vip_bgp_peeraddress: "192.168.30.1" # Defines the address for the BGP peer
|
|
||||||
kube_vip_bgp_peeras: "64512" # Defines the AS for the BGP peer
|
|
||||||
|
|
||||||
# apiserver_endpoint is virtual ip-address which will be configured on each master
|
# apiserver_endpoint is virtual ip-address which will be configured on each master
|
||||||
apiserver_endpoint: 192.168.30.222
|
apiserver_endpoint: 192.168.30.222
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
dest: /etc/netplan/55-flannel-ipv4.yaml
|
dest: /etc/netplan/55-flannel-ipv4.yaml
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: "0644"
|
mode: 0644
|
||||||
register: netplan_template
|
register: netplan_template
|
||||||
|
|
||||||
- name: Apply netplan configuration
|
- name: Apply netplan configuration
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#
|
#
|
||||||
ansible-compat==4.1.11
|
ansible-compat==4.1.11
|
||||||
# via molecule
|
# via molecule
|
||||||
ansible-core==2.18.0
|
ansible-core==2.17.2
|
||||||
# via
|
# via
|
||||||
# -r requirements.in
|
# -r requirements.in
|
||||||
# ansible-compat
|
# ansible-compat
|
||||||
@@ -114,7 +114,7 @@ python-dateutil==2.8.2
|
|||||||
# via kubernetes
|
# via kubernetes
|
||||||
python-vagrant==1.0.0
|
python-vagrant==1.0.0
|
||||||
# via molecule-plugins
|
# via molecule-plugins
|
||||||
pyyaml==6.0.2
|
pyyaml==6.0.1
|
||||||
# via
|
# via
|
||||||
# -r requirements.in
|
# -r requirements.in
|
||||||
# ansible-compat
|
# ansible-compat
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Manage the downloading of K3S binaries
|
|
||||||
options:
|
|
||||||
k3s_version:
|
|
||||||
description: The desired version of K3S
|
|
||||||
required: true
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
extra_agent_args: ""
|
|
||||||
group_name_master: master
|
|
||||||
systemd_dir: /etc/systemd/system
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Setup k3s agents
|
|
||||||
options:
|
|
||||||
apiserver_endpoint:
|
|
||||||
description: Virtual ip-address configured on each master
|
|
||||||
required: true
|
|
||||||
|
|
||||||
extra_agent_args:
|
|
||||||
description: Extra arguments for agents nodes
|
|
||||||
|
|
||||||
group_name_master:
|
|
||||||
description: Name of the master group
|
|
||||||
default: master
|
|
||||||
|
|
||||||
k3s_token:
|
|
||||||
description: Token used to communicate between masters
|
|
||||||
|
|
||||||
proxy_env:
|
|
||||||
type: dict
|
|
||||||
description:
|
|
||||||
- Internet proxy configurations.
|
|
||||||
- See https://docs.k3s.io/advanced#configuring-an-http-proxy for details
|
|
||||||
default: ~
|
|
||||||
options:
|
|
||||||
HTTP_PROXY:
|
|
||||||
description: HTTP internet proxy
|
|
||||||
required: true
|
|
||||||
HTTPS_PROXY:
|
|
||||||
description: HTTPS internet proxy
|
|
||||||
required: true
|
|
||||||
NO_PROXY:
|
|
||||||
description: Addresses that will not use the proxies
|
|
||||||
required: true
|
|
||||||
|
|
||||||
systemd_dir:
|
|
||||||
description: Path to systemd services
|
|
||||||
default: /etc/systemd/system
|
|
||||||
@@ -12,7 +12,7 @@ ExecStart=/usr/local/bin/k3s agent \
|
|||||||
--server https://{{ apiserver_endpoint | ansible.utils.ipwrap }}:6443 \
|
--server https://{{ apiserver_endpoint | ansible.utils.ipwrap }}:6443 \
|
||||||
{% if is_pxe_booted | default(false) %}--snapshotter native \
|
{% if is_pxe_booted | default(false) %}--snapshotter native \
|
||||||
{% endif %}--token {{ hostvars[groups[group_name_master | default('master')][0]]['token'] | default(k3s_token) }} \
|
{% endif %}--token {{ hostvars[groups[group_name_master | default('master')][0]]['token'] | default(k3s_token) }} \
|
||||||
{{ extra_agent_args }}
|
{{ extra_agent_args | default("") }}
|
||||||
KillMode=process
|
KillMode=process
|
||||||
Delegate=yes
|
Delegate=yes
|
||||||
LimitNOFILE=1048576
|
LimitNOFILE=1048576
|
||||||
|
|||||||
6
roles/k3s_custom_registries/defaults/main.yml
Normal file
6
roles/k3s_custom_registries/defaults/main.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
# Indicates whether custom registries for k3s should be configured
|
||||||
|
# Possible values:
|
||||||
|
# - present
|
||||||
|
# - absent
|
||||||
|
state: present
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Configure the use of a custom container registry
|
|
||||||
options:
|
|
||||||
custom_registries_yaml:
|
|
||||||
description:
|
|
||||||
- YAML block defining custom registries.
|
|
||||||
- >
|
|
||||||
The following is an example that pulls all images used in
|
|
||||||
this playbook through your private registries.
|
|
||||||
- >
|
|
||||||
It also allows you to pull your own images from your private
|
|
||||||
registry, without having to use imagePullSecrets in your
|
|
||||||
deployments.
|
|
||||||
- >
|
|
||||||
If all you need is your own images and you don't care about
|
|
||||||
caching the docker/quay/ghcr.io images, you can just remove
|
|
||||||
those from the mirrors: section.
|
|
||||||
required: true
|
|
||||||
@@ -1,29 +1,13 @@
|
|||||||
---
|
---
|
||||||
extra_server_args: ""
|
# If you want to explicitly define an interface that ALL control nodes
|
||||||
|
# should use to propagate the VIP, define it here. Otherwise, kube-vip
|
||||||
k3s_kubectl_binary: k3s kubectl
|
# will determine the right interface automatically at runtime.
|
||||||
|
|
||||||
group_name_master: master
|
|
||||||
|
|
||||||
kube_vip_arp: true
|
|
||||||
kube_vip_iface:
|
kube_vip_iface:
|
||||||
kube_vip_cloud_provider_tag_version: main
|
# Enables ARP broadcasts from Leader
|
||||||
kube_vip_tag_version: v0.7.2
|
kube_vip_arp: true
|
||||||
|
|
||||||
kube_vip_bgp: false
|
# Name of the master group
|
||||||
kube_vip_bgp_routerid: 127.0.0.1
|
group_name_master: master
|
||||||
kube_vip_bgp_as: "64513"
|
|
||||||
kube_vip_bgp_peeraddress: 192.168.30.1
|
|
||||||
kube_vip_bgp_peeras: "64512"
|
|
||||||
|
|
||||||
kube_vip_bgp_peers: []
|
|
||||||
kube_vip_bgp_peers_groups: ['k3s_master']
|
|
||||||
|
|
||||||
metal_lb_controller_tag_version: v0.14.3
|
|
||||||
metal_lb_speaker_tag_version: v0.14.3
|
|
||||||
metal_lb_type: native
|
|
||||||
|
|
||||||
retry_count: 20
|
|
||||||
|
|
||||||
# yamllint disable rule:line-length
|
# yamllint disable rule:line-length
|
||||||
server_init_args: >-
|
server_init_args: >-
|
||||||
@@ -35,6 +19,4 @@ server_init_args: >-
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
--token {{ k3s_token }}
|
--token {{ k3s_token }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ extra_server_args }}
|
{{ extra_server_args | default('') }}
|
||||||
|
|
||||||
systemd_dir: /etc/systemd/system
|
|
||||||
|
|||||||
@@ -1,135 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Setup k3s servers
|
|
||||||
options:
|
|
||||||
apiserver_endpoint:
|
|
||||||
description: Virtual ip-address configured on each master
|
|
||||||
required: true
|
|
||||||
|
|
||||||
cilium_bgp:
|
|
||||||
description:
|
|
||||||
- Enable cilium BGP control plane for LB services and pod cidrs.
|
|
||||||
- Disables the use of MetalLB.
|
|
||||||
type: bool
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
cilium_iface:
|
|
||||||
description: The network interface used for when Cilium is enabled
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
extra_server_args:
|
|
||||||
description: Extra arguments for server nodes
|
|
||||||
default: ""
|
|
||||||
|
|
||||||
group_name_master:
|
|
||||||
description: Name of the master group
|
|
||||||
default: master
|
|
||||||
|
|
||||||
k3s_create_kubectl_symlink:
|
|
||||||
description: Create the kubectl -> k3s symlink
|
|
||||||
default: false
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
k3s_create_crictl_symlink:
|
|
||||||
description: Create the crictl -> k3s symlink
|
|
||||||
default: false
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
kube_vip_arp:
|
|
||||||
description: Enables kube-vip ARP broadcasts
|
|
||||||
default: true
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
kube_vip_bgp:
|
|
||||||
description: Enables kube-vip BGP peering
|
|
||||||
default: false
|
|
||||||
type: bool
|
|
||||||
|
|
||||||
kube_vip_bgp_routerid:
|
|
||||||
description: Defines the router ID for the kube-vip BGP server
|
|
||||||
default: "127.0.0.1"
|
|
||||||
|
|
||||||
kube_vip_bgp_as:
|
|
||||||
description: Defines the AS for the kube-vip BGP server
|
|
||||||
default: "64513"
|
|
||||||
|
|
||||||
kube_vip_bgp_peeraddress:
|
|
||||||
description: Defines the address for the kube-vip BGP peer
|
|
||||||
default: "192.168.30.1"
|
|
||||||
|
|
||||||
kube_vip_bgp_peeras:
|
|
||||||
description: Defines the AS for the kube-vip BGP peer
|
|
||||||
default: "64512"
|
|
||||||
|
|
||||||
kube_vip_bgp_peers:
|
|
||||||
description: List of BGP peer ASN & address pairs
|
|
||||||
default: []
|
|
||||||
|
|
||||||
kube_vip_bgp_peers_groups:
|
|
||||||
description: Inventory group in which to search for additional kube_vip_bgp_peers parameters to merge.
|
|
||||||
default: ['k3s_master']
|
|
||||||
|
|
||||||
kube_vip_iface:
|
|
||||||
description:
|
|
||||||
- Explicitly define an interface that ALL control nodes
|
|
||||||
- should use to propagate the VIP, define it here.
|
|
||||||
- Otherwise, kube-vip will determine the right interface
|
|
||||||
- automatically at runtime.
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
kube_vip_tag_version:
|
|
||||||
description: Image tag for kube-vip
|
|
||||||
default: v0.7.2
|
|
||||||
|
|
||||||
kube_vip_cloud_provider_tag_version:
|
|
||||||
description: Tag for kube-vip-cloud-provider manifest when enabled
|
|
||||||
default: main
|
|
||||||
|
|
||||||
kube_vip_lb_ip_range:
|
|
||||||
description: IP range for kube-vip load balancer
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
metal_lb_controller_tag_version:
|
|
||||||
description: Image tag for MetalLB
|
|
||||||
default: v0.14.3
|
|
||||||
|
|
||||||
metal_lb_speaker_tag_version:
|
|
||||||
description: Image tag for MetalLB
|
|
||||||
default: v0.14.3
|
|
||||||
|
|
||||||
metal_lb_type:
|
|
||||||
choices:
|
|
||||||
- frr
|
|
||||||
- native
|
|
||||||
default: native
|
|
||||||
description: Use FRR mode or native. Valid values are `frr` and `native`
|
|
||||||
|
|
||||||
proxy_env:
|
|
||||||
type: dict
|
|
||||||
description:
|
|
||||||
- Internet proxy configurations.
|
|
||||||
- See https://docs.k3s.io/advanced#configuring-an-http-proxy for details
|
|
||||||
default: ~
|
|
||||||
options:
|
|
||||||
HTTP_PROXY:
|
|
||||||
description: HTTP internet proxy
|
|
||||||
required: true
|
|
||||||
HTTPS_PROXY:
|
|
||||||
description: HTTPS internet proxy
|
|
||||||
required: true
|
|
||||||
NO_PROXY:
|
|
||||||
description: Addresses that will not use the proxies
|
|
||||||
required: true
|
|
||||||
|
|
||||||
retry_count:
|
|
||||||
description: Amount of retries when verifying that nodes joined
|
|
||||||
type: int
|
|
||||||
default: 20
|
|
||||||
|
|
||||||
server_init_args:
|
|
||||||
description: Arguments for server nodes
|
|
||||||
|
|
||||||
systemd_dir:
|
|
||||||
description: Path to systemd services
|
|
||||||
default: /etc/systemd/system
|
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
block:
|
block:
|
||||||
- name: Verify that all nodes actually joined (check k3s-init.service if this fails)
|
- name: Verify that all nodes actually joined (check k3s-init.service if this fails)
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} get nodes -l 'node-role.kubernetes.io/master=true' -o=jsonpath='{.items[*].metadata.name}'" # yamllint disable-line rule:line-length
|
cmd: k3s kubectl get nodes -l "node-role.kubernetes.io/master=true" -o=jsonpath="{.items[*].metadata.name}"
|
||||||
register: nodes
|
register: nodes
|
||||||
until: nodes.rc == 0 and (nodes.stdout.split() | length) == (groups[group_name_master | default('master')] | length) # yamllint disable-line rule:line-length
|
until: nodes.rc == 0 and (nodes.stdout.split() | length) == (groups[group_name_master | default('master')] | length) # yamllint disable-line rule:line-length
|
||||||
retries: "{{ retry_count | default(20) }}"
|
retries: "{{ retry_count | default(20) }}"
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
|
|
||||||
- name: Configure kubectl cluster to {{ endpoint_url }}
|
- name: Configure kubectl cluster to {{ endpoint_url }}
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} config set-cluster default
|
k3s kubectl config set-cluster default
|
||||||
--server={{ endpoint_url }}
|
--server={{ endpoint_url }}
|
||||||
--kubeconfig {{ ansible_user_dir }}/.kube/config
|
--kubeconfig {{ ansible_user_dir }}/.kube/config
|
||||||
changed_when: true
|
changed_when: true
|
||||||
@@ -141,14 +141,12 @@
|
|||||||
src: /usr/local/bin/k3s
|
src: /usr/local/bin/k3s
|
||||||
dest: /usr/local/bin/kubectl
|
dest: /usr/local/bin/kubectl
|
||||||
state: link
|
state: link
|
||||||
when: k3s_create_kubectl_symlink | default(true) | bool
|
|
||||||
|
|
||||||
- name: Create crictl symlink
|
- name: Create crictl symlink
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
src: /usr/local/bin/k3s
|
src: /usr/local/bin/k3s
|
||||||
dest: /usr/local/bin/crictl
|
dest: /usr/local/bin/crictl
|
||||||
state: link
|
state: link
|
||||||
when: k3s_create_crictl_symlink | default(true) | bool
|
|
||||||
|
|
||||||
- name: Get contents of manifests folder
|
- name: Get contents of manifests folder
|
||||||
ansible.builtin.find:
|
ansible.builtin.find:
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
---
|
---
|
||||||
- name: Set _kube_vip_bgp_peers fact
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_kube_vip_bgp_peers: "{{ lookup('community.general.merge_variables', '^kube_vip_bgp_peers__.+$', initial_value=kube_vip_bgp_peers, groups=kube_vip_bgp_peers_groups) }}" # yamllint disable-line rule:line-length
|
|
||||||
|
|
||||||
- name: Create manifests directory on first master
|
- name: Create manifests directory on first master
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /var/lib/rancher/k3s/server/manifests
|
path: /var/lib/rancher/k3s/server/manifests
|
||||||
|
|||||||
@@ -27,9 +27,7 @@ spec:
|
|||||||
- manager
|
- manager
|
||||||
env:
|
env:
|
||||||
- name: vip_arp
|
- name: vip_arp
|
||||||
value: "{{ 'true' if kube_vip_arp | default(true) | bool else 'false' }}"
|
value: "{{ 'true' if kube_vip_arp | bool else 'false' }}"
|
||||||
- name: bgp_enable
|
|
||||||
value: "{{ 'true' if kube_vip_bgp | default(false) | bool else 'false' }}"
|
|
||||||
- name: port
|
- name: port
|
||||||
value: "6443"
|
value: "6443"
|
||||||
{% if kube_vip_iface %}
|
{% if kube_vip_iface %}
|
||||||
@@ -56,29 +54,6 @@ spec:
|
|||||||
value: "2"
|
value: "2"
|
||||||
- name: address
|
- name: address
|
||||||
value: {{ apiserver_endpoint }}
|
value: {{ apiserver_endpoint }}
|
||||||
{% if kube_vip_bgp | default(false) | bool %}
|
|
||||||
{% if kube_vip_bgp_routerid is defined %}
|
|
||||||
- name: bgp_routerid
|
|
||||||
value: "{{ kube_vip_bgp_routerid }}"
|
|
||||||
{% endif %}
|
|
||||||
{% if _kube_vip_bgp_peers | length > 0 %}
|
|
||||||
- name: bgppeers
|
|
||||||
value: "{{ _kube_vip_bgp_peers | map(attribute='peer_address') | zip(_kube_vip_bgp_peers| map(attribute='peer_asn')) | map('join', ',') | join(':') }}" # yamllint disable-line rule:line-length
|
|
||||||
{% else %}
|
|
||||||
{% if kube_vip_bgp_as is defined %}
|
|
||||||
- name: bgp_as
|
|
||||||
value: "{{ kube_vip_bgp_as }}"
|
|
||||||
{% endif %}
|
|
||||||
{% if kube_vip_bgp_peeraddress is defined %}
|
|
||||||
- name: bgp_peeraddress
|
|
||||||
value: "{{ kube_vip_bgp_peeraddress }}"
|
|
||||||
{% endif %}
|
|
||||||
{% if kube_vip_bgp_peeras is defined %}
|
|
||||||
- name: bgp_peeras
|
|
||||||
value: "{{ kube_vip_bgp_peeras }}"
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
image: ghcr.io/kube-vip/kube-vip:{{ kube_vip_tag_version }}
|
image: ghcr.io/kube-vip/kube-vip:{{ kube_vip_tag_version }}
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
name: kube-vip
|
name: kube-vip
|
||||||
|
|||||||
@@ -1,32 +1,6 @@
|
|||||||
---
|
---
|
||||||
k3s_kubectl_binary: k3s kubectl
|
# Timeout to wait for MetalLB services to come up
|
||||||
|
|
||||||
bpf_lb_algorithm: maglev
|
|
||||||
bpf_lb_mode: hybrid
|
|
||||||
|
|
||||||
calico_blockSize: 26 # noqa var-naming
|
|
||||||
calico_ebpf: false
|
|
||||||
calico_encapsulation: VXLANCrossSubnet
|
|
||||||
calico_natOutgoing: Enabled # noqa var-naming
|
|
||||||
calico_nodeSelector: all() # noqa var-naming
|
|
||||||
calico_tag: v3.27.2
|
|
||||||
|
|
||||||
cilium_bgp: false
|
|
||||||
cilium_exportPodCIDR: true # noqa var-naming
|
|
||||||
cilium_bgp_my_asn: 64513
|
|
||||||
cilium_bgp_peer_asn: 64512
|
|
||||||
cilium_bgp_neighbors: []
|
|
||||||
cilium_bgp_neighbors_groups: ['k3s_all']
|
|
||||||
cilium_bgp_lb_cidr: 192.168.31.0/24
|
|
||||||
cilium_hubble: true
|
|
||||||
cilium_mode: native
|
|
||||||
|
|
||||||
cluster_cidr: 10.52.0.0/16
|
|
||||||
enable_bpf_masquerade: true
|
|
||||||
kube_proxy_replacement: true
|
|
||||||
group_name_master: master
|
|
||||||
|
|
||||||
metal_lb_mode: layer2
|
|
||||||
metal_lb_available_timeout: 240s
|
metal_lb_available_timeout: 240s
|
||||||
metal_lb_controller_tag_version: v0.14.3
|
|
||||||
metal_lb_ip_range: 192.168.30.80-192.168.30.90
|
# Name of the master group
|
||||||
|
group_name_master: master
|
||||||
|
|||||||
@@ -1,153 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Configure k3s cluster
|
|
||||||
options:
|
|
||||||
apiserver_endpoint:
|
|
||||||
description: Virtual ip-address configured on each master
|
|
||||||
required: true
|
|
||||||
|
|
||||||
bpf_lb_algorithm:
|
|
||||||
description: BPF lb algorithm
|
|
||||||
default: maglev
|
|
||||||
|
|
||||||
bpf_lb_mode:
|
|
||||||
description: BPF lb mode
|
|
||||||
default: hybrid
|
|
||||||
|
|
||||||
calico_blockSize:
|
|
||||||
description: IP pool block size
|
|
||||||
type: int
|
|
||||||
default: 26
|
|
||||||
|
|
||||||
calico_ebpf:
|
|
||||||
description: Use eBPF dataplane instead of iptables
|
|
||||||
type: bool
|
|
||||||
default: false
|
|
||||||
|
|
||||||
calico_encapsulation:
|
|
||||||
description: IP pool encapsulation
|
|
||||||
default: VXLANCrossSubnet
|
|
||||||
|
|
||||||
calico_natOutgoing:
|
|
||||||
description: IP pool NAT outgoing
|
|
||||||
default: Enabled
|
|
||||||
|
|
||||||
calico_nodeSelector:
|
|
||||||
description: IP pool node selector
|
|
||||||
default: all()
|
|
||||||
|
|
||||||
calico_iface:
|
|
||||||
description: The network interface used for when Calico is enabled
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
calico_tag:
|
|
||||||
description: Calico version tag
|
|
||||||
default: v3.27.2
|
|
||||||
|
|
||||||
cilium_bgp:
|
|
||||||
description:
|
|
||||||
- Enable cilium BGP control plane for LB services and pod cidrs.
|
|
||||||
- Disables the use of MetalLB.
|
|
||||||
type: bool
|
|
||||||
default: false
|
|
||||||
|
|
||||||
cilium_bgp_my_asn:
|
|
||||||
description: Local ASN for BGP peer
|
|
||||||
type: int
|
|
||||||
default: 64513
|
|
||||||
|
|
||||||
cilium_bgp_peer_asn:
|
|
||||||
description: BGP peer ASN
|
|
||||||
type: int
|
|
||||||
default: 64512
|
|
||||||
|
|
||||||
cilium_bgp_peer_address:
|
|
||||||
description: BGP peer address
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
cilium_bgp_neighbors:
|
|
||||||
description: List of BGP peer ASN & address pairs
|
|
||||||
default: []
|
|
||||||
|
|
||||||
cilium_bgp_neighbors_groups:
|
|
||||||
description: Inventory group in which to search for additional cilium_bgp_neighbors parameters to merge.
|
|
||||||
default: ['k3s_all']
|
|
||||||
|
|
||||||
cilium_bgp_lb_cidr:
|
|
||||||
description: BGP load balancer IP range
|
|
||||||
default: 192.168.31.0/24
|
|
||||||
|
|
||||||
cilium_exportPodCIDR:
|
|
||||||
description: Export pod CIDR
|
|
||||||
type: bool
|
|
||||||
default: true
|
|
||||||
|
|
||||||
cilium_hubble:
|
|
||||||
description: Enable Cilium Hubble
|
|
||||||
type: bool
|
|
||||||
default: true
|
|
||||||
|
|
||||||
cilium_iface:
|
|
||||||
description: The network interface used for when Cilium is enabled
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
cilium_mode:
|
|
||||||
description: Inner-node communication mode
|
|
||||||
default: native
|
|
||||||
choices:
|
|
||||||
- native
|
|
||||||
- routed
|
|
||||||
|
|
||||||
cluster_cidr:
|
|
||||||
description: Inner-cluster IP range
|
|
||||||
default: 10.52.0.0/16
|
|
||||||
|
|
||||||
enable_bpf_masquerade:
|
|
||||||
description: Use IP masquerading
|
|
||||||
type: bool
|
|
||||||
default: true
|
|
||||||
|
|
||||||
group_name_master:
|
|
||||||
description: Name of the master group
|
|
||||||
default: master
|
|
||||||
|
|
||||||
kube_proxy_replacement:
|
|
||||||
description: Replace the native kube-proxy with Cilium
|
|
||||||
type: bool
|
|
||||||
default: true
|
|
||||||
|
|
||||||
kube_vip_lb_ip_range:
|
|
||||||
description: IP range for kube-vip load balancer
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
metal_lb_available_timeout:
|
|
||||||
description: Wait for MetalLB resources
|
|
||||||
default: 240s
|
|
||||||
|
|
||||||
metal_lb_ip_range:
|
|
||||||
description: MetalLB ip range for load balancer
|
|
||||||
default: 192.168.30.80-192.168.30.90
|
|
||||||
|
|
||||||
metal_lb_controller_tag_version:
|
|
||||||
description: Image tag for MetalLB
|
|
||||||
default: v0.14.3
|
|
||||||
|
|
||||||
metal_lb_mode:
|
|
||||||
description: Metallb mode
|
|
||||||
default: layer2
|
|
||||||
choices:
|
|
||||||
- bgp
|
|
||||||
- layer2
|
|
||||||
|
|
||||||
metal_lb_bgp_my_asn:
|
|
||||||
description: BGP ASN configurations
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
metal_lb_bgp_peer_asn:
|
|
||||||
description: BGP peer ASN configurations
|
|
||||||
default: ~
|
|
||||||
|
|
||||||
metal_lb_bgp_peer_address:
|
|
||||||
description: BGP peer address
|
|
||||||
default: ~
|
|
||||||
@@ -31,21 +31,21 @@
|
|||||||
block:
|
block:
|
||||||
- name: Deploy Tigera Operator
|
- name: Deploy Tigera Operator
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} create -f /tmp/k3s/tigera-operator.yaml"
|
cmd: kubectl create -f /tmp/k3s/tigera-operator.yaml
|
||||||
register: create_operator
|
register: create_operator
|
||||||
changed_when: "'created' in create_operator.stdout"
|
changed_when: "'created' in create_operator.stdout"
|
||||||
failed_when: "'Error' in create_operator.stderr and 'already exists' not in create_operator.stderr"
|
failed_when: "'Error' in create_operator.stderr and 'already exists' not in create_operator.stderr"
|
||||||
rescue:
|
rescue:
|
||||||
- name: Replace existing Tigera Operator
|
- name: Replace existing Tigera Operator
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} replace -f /tmp/k3s/tigera-operator.yaml"
|
cmd: kubectl replace -f /tmp/k3s/tigera-operator.yaml
|
||||||
register: replace_operator
|
register: replace_operator
|
||||||
changed_when: "'replaced' in replace_operator.stdout"
|
changed_when: "'replaced' in replace_operator.stdout"
|
||||||
failed_when: "'Error' in replace_operator.stderr"
|
failed_when: "'Error' in replace_operator.stderr"
|
||||||
|
|
||||||
- name: Wait for Tigera Operator resources
|
- name: Wait for Tigera Operator resources
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait {{ item.type }}/{{ item.name }}
|
k3s kubectl wait {{ item.type }}/{{ item.name }}
|
||||||
--namespace='tigera-operator'
|
--namespace='tigera-operator'
|
||||||
--for=condition=Available=True
|
--for=condition=Available=True
|
||||||
--timeout=30s
|
--timeout=30s
|
||||||
@@ -63,14 +63,14 @@
|
|||||||
block:
|
block:
|
||||||
- name: Deploy custom resources for Calico
|
- name: Deploy custom resources for Calico
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} create -f /tmp/k3s/custom-resources.yaml"
|
cmd: kubectl create -f /tmp/k3s/custom-resources.yaml
|
||||||
register: create_cr
|
register: create_cr
|
||||||
changed_when: "'created' in create_cr.stdout"
|
changed_when: "'created' in create_cr.stdout"
|
||||||
failed_when: "'Error' in create_cr.stderr and 'already exists' not in create_cr.stderr"
|
failed_when: "'Error' in create_cr.stderr and 'already exists' not in create_cr.stderr"
|
||||||
rescue:
|
rescue:
|
||||||
- name: Apply new Calico custom resource manifest
|
- name: Apply new Calico custom resource manifest
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} apply -f /tmp/k3s/custom-resources.yaml"
|
cmd: kubectl apply -f /tmp/k3s/custom-resources.yaml
|
||||||
register: apply_cr
|
register: apply_cr
|
||||||
changed_when: "'configured' in apply_cr.stdout or 'created' in apply_cr.stdout"
|
changed_when: "'configured' in apply_cr.stdout or 'created' in apply_cr.stdout"
|
||||||
failed_when: "'Error' in apply_cr.stderr"
|
failed_when: "'Error' in apply_cr.stderr"
|
||||||
@@ -78,12 +78,12 @@
|
|||||||
- name: Wait for Calico system resources to be available
|
- name: Wait for Calico system resources to be available
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{% if item.type == 'daemonset' %}
|
{% if item.type == 'daemonset' %}
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait pods
|
k3s kubectl wait pods
|
||||||
--namespace='{{ item.namespace }}'
|
--namespace='{{ item.namespace }}'
|
||||||
--selector={{ item.selector }}
|
--selector={{ item.selector }}
|
||||||
--for=condition=Ready
|
--for=condition=Ready
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait {{ item.type }}/{{ item.name }}
|
k3s kubectl wait {{ item.type }}/{{ item.name }}
|
||||||
--namespace='{{ item.namespace }}'
|
--namespace='{{ item.namespace }}'
|
||||||
--for=condition=Available
|
--for=condition=Available
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
- name: Patch Felix configuration for eBPF mode
|
- name: Patch Felix configuration for eBPF mode
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: >
|
cmd: >
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} patch felixconfiguration default
|
kubectl patch felixconfiguration default
|
||||||
--type='merge'
|
--type='merge'
|
||||||
--patch='{"spec": {"bpfKubeProxyIptablesCleanupEnabled": false}}'
|
--patch='{"spec": {"bpfKubeProxyIptablesCleanupEnabled": false}}'
|
||||||
register: patch_result
|
register: patch_result
|
||||||
|
|||||||
@@ -116,8 +116,7 @@
|
|||||||
when: ping_result.rc != 0
|
when: ping_result.rc != 0
|
||||||
|
|
||||||
- name: Test for existing Cilium install
|
- name: Test for existing Cilium install
|
||||||
ansible.builtin.command: |
|
ansible.builtin.command: k3s kubectl -n kube-system get daemonsets cilium
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} -n kube-system get daemonsets cilium
|
|
||||||
register: cilium_installed
|
register: cilium_installed
|
||||||
failed_when: false
|
failed_when: false
|
||||||
changed_when: false
|
changed_when: false
|
||||||
@@ -172,17 +171,17 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
--helm-set k8sServiceHost="127.0.0.1"
|
--helm-set k8sServiceHost="127.0.0.1"
|
||||||
--helm-set k8sServicePort="6444"
|
--helm-set k8sServicePort="6444"
|
||||||
--helm-set routingMode={{ cilium_mode }}
|
--helm-set routingMode={{ cilium_mode | default("native") }}
|
||||||
--helm-set autoDirectNodeRoutes={{ "true" if cilium_mode == "native" else "false" }}
|
--helm-set autoDirectNodeRoutes={{ "true" if cilium_mode == "native" else "false" }}
|
||||||
--helm-set kubeProxyReplacement={{ kube_proxy_replacement }}
|
--helm-set kubeProxyReplacement={{ kube_proxy_replacement | default("true") }}
|
||||||
--helm-set bpf.masquerade={{ enable_bpf_masquerade }}
|
--helm-set bpf.masquerade={{ enable_bpf_masquerade | default("true") }}
|
||||||
--helm-set bgpControlPlane.enabled={{ cilium_bgp | default("false") }}
|
--helm-set bgpControlPlane.enabled={{ cilium_bgp | default("false") }}
|
||||||
--helm-set hubble.enabled={{ "true" if cilium_hubble else "false" }}
|
--helm-set hubble.enabled={{ "true" if cilium_hubble else "false" }}
|
||||||
--helm-set hubble.relay.enabled={{ "true" if cilium_hubble else "false" }}
|
--helm-set hubble.relay.enabled={{ "true" if cilium_hubble else "false" }}
|
||||||
--helm-set hubble.ui.enabled={{ "true" if cilium_hubble else "false" }}
|
--helm-set hubble.ui.enabled={{ "true" if cilium_hubble else "false" }}
|
||||||
{% if kube_proxy_replacement is not false %}
|
{% if kube_proxy_replacement is not false %}
|
||||||
--helm-set bpf.loadBalancer.algorithm={{ bpf_lb_algorithm }}
|
--helm-set bpf.loadBalancer.algorithm={{ bpf_lb_algorithm | default("maglev") }}
|
||||||
--helm-set bpf.loadBalancer.mode={{ bpf_lb_mode }}
|
--helm-set bpf.loadBalancer.mode={{ bpf_lb_mode | default("hybrid") }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
environment:
|
environment:
|
||||||
KUBECONFIG: "{{ ansible_user_dir }}/.kube/config"
|
KUBECONFIG: "{{ ansible_user_dir }}/.kube/config"
|
||||||
@@ -193,12 +192,12 @@
|
|||||||
- name: Wait for Cilium resources
|
- name: Wait for Cilium resources
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{% if item.type == 'daemonset' %}
|
{% if item.type == 'daemonset' %}
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait pods
|
k3s kubectl wait pods
|
||||||
--namespace=kube-system
|
--namespace=kube-system
|
||||||
--selector='k8s-app=cilium'
|
--selector='k8s-app=cilium'
|
||||||
--for=condition=Ready
|
--for=condition=Ready
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait {{ item.type }}/{{ item.name }}
|
k3s kubectl wait {{ item.type }}/{{ item.name }}
|
||||||
--namespace=kube-system
|
--namespace=kube-system
|
||||||
--for=condition=Available
|
--for=condition=Available
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -221,10 +220,6 @@
|
|||||||
- name: Configure Cilium BGP
|
- name: Configure Cilium BGP
|
||||||
when: cilium_bgp
|
when: cilium_bgp
|
||||||
block:
|
block:
|
||||||
- name: Set _cilium_bgp_neighbors fact
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
_cilium_bgp_neighbors: "{{ lookup('community.general.merge_variables', '^cilium_bgp_neighbors__.+$', initial_value=cilium_bgp_neighbors, groups=cilium_bgp_neighbors_groups) }}" # yamllint disable-line rule:line-length
|
|
||||||
|
|
||||||
- name: Copy BGP manifests to first master
|
- name: Copy BGP manifests to first master
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: cilium.crs.j2
|
src: cilium.crs.j2
|
||||||
@@ -235,7 +230,7 @@
|
|||||||
|
|
||||||
- name: Apply BGP manifests
|
- name: Apply BGP manifests
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} apply -f /tmp/k3s/cilium-bgp.yaml"
|
cmd: kubectl apply -f /tmp/k3s/cilium-bgp.yaml
|
||||||
register: apply_cr
|
register: apply_cr
|
||||||
changed_when: "'configured' in apply_cr.stdout or 'created' in apply_cr.stdout"
|
changed_when: "'configured' in apply_cr.stdout or 'created' in apply_cr.stdout"
|
||||||
failed_when: "'is invalid' in apply_cr.stderr"
|
failed_when: "'is invalid' in apply_cr.stderr"
|
||||||
@@ -249,8 +244,8 @@
|
|||||||
- name: Test for BGP config resources
|
- name: Test for BGP config resources
|
||||||
ansible.builtin.command: "{{ item }}"
|
ansible.builtin.command: "{{ item }}"
|
||||||
loop:
|
loop:
|
||||||
- "{{ k3s_kubectl_binary | default('k3s kubectl') }} get CiliumBGPPeeringPolicy.cilium.io"
|
- k3s kubectl get CiliumBGPPeeringPolicy.cilium.io
|
||||||
- "{{ k3s_kubectl_binary | default('k3s kubectl') }} get CiliumLoadBalancerIPPool.cilium.io"
|
- k3s kubectl get CiliumLoadBalancerIPPool.cilium.io
|
||||||
changed_when: false
|
changed_when: false
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item }}"
|
label: "{{ item }}"
|
||||||
|
|||||||
@@ -12,14 +12,14 @@
|
|||||||
ansible.builtin.shell: |-
|
ansible.builtin.shell: |-
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
REPLICAS=$({{ k3s_kubectl_binary | default('k3s kubectl') }} --namespace='metallb-system' get replicasets \
|
REPLICAS=$(k3s kubectl --namespace='metallb-system' get replicasets \
|
||||||
-l 'component=controller,app=metallb' \
|
-l 'component=controller,app=metallb' \
|
||||||
-o jsonpath='{.items[0].spec.template.spec.containers[0].image}, {.items[0].metadata.name}' 2>/dev/null || true)
|
-o jsonpath='{.items[0].spec.template.spec.containers[0].image}, {.items[0].metadata.name}' 2>/dev/null || true)
|
||||||
REPLICAS_SETS=$(echo ${REPLICAS} | grep -v '{{ metal_lb_controller_tag_version }}' | sed -e "s/^.*\s//g")
|
REPLICAS_SETS=$(echo ${REPLICAS} | grep -v '{{ metal_lb_controller_tag_version }}' | sed -e "s/^.*\s//g")
|
||||||
if [ -n "${REPLICAS_SETS}" ] ; then
|
if [ -n "${REPLICAS_SETS}" ] ; then
|
||||||
for REPLICAS in "${REPLICAS_SETS}"
|
for REPLICAS in "${REPLICAS_SETS}"
|
||||||
do
|
do
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} --namespace='metallb-system' \
|
k3s kubectl --namespace='metallb-system' \
|
||||||
delete rs "${REPLICAS}"
|
delete rs "${REPLICAS}"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@@ -40,14 +40,14 @@
|
|||||||
|
|
||||||
- name: Test metallb-system namespace
|
- name: Test metallb-system namespace
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} -n metallb-system
|
k3s kubectl -n metallb-system
|
||||||
changed_when: false
|
changed_when: false
|
||||||
with_items: "{{ groups[group_name_master | default('master')] }}"
|
with_items: "{{ groups[group_name_master | default('master')] }}"
|
||||||
run_once: true
|
run_once: true
|
||||||
|
|
||||||
- name: Wait for MetalLB resources
|
- name: Wait for MetalLB resources
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait {{ item.resource }}
|
k3s kubectl wait {{ item.resource }}
|
||||||
--namespace='metallb-system'
|
--namespace='metallb-system'
|
||||||
{% if item.name | default(False) -%}{{ item.name }}{%- endif %}
|
{% if item.name | default(False) -%}{{ item.name }}{%- endif %}
|
||||||
{% if item.selector | default(False) -%}--selector='{{ item.selector }}'{%- endif %}
|
{% if item.selector | default(False) -%}--selector='{{ item.selector }}'{%- endif %}
|
||||||
@@ -99,14 +99,14 @@
|
|||||||
|
|
||||||
- name: Test metallb-system webhook-service endpoint
|
- name: Test metallb-system webhook-service endpoint
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} -n metallb-system get endpoints {{ metallb_webhook_service_name }}
|
k3s kubectl -n metallb-system get endpoints {{ metallb_webhook_service_name }}
|
||||||
changed_when: false
|
changed_when: false
|
||||||
with_items: "{{ groups[group_name_master | default('master')] }}"
|
with_items: "{{ groups[group_name_master | default('master')] }}"
|
||||||
run_once: true
|
run_once: true
|
||||||
|
|
||||||
- name: Apply metallb CRs
|
- name: Apply metallb CRs
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} apply -f /tmp/k3s/metallb-crs.yaml
|
k3s kubectl apply -f /tmp/k3s/metallb-crs.yaml
|
||||||
--timeout='{{ metal_lb_available_timeout }}'
|
--timeout='{{ metal_lb_available_timeout }}'
|
||||||
register: this
|
register: this
|
||||||
changed_when: false
|
changed_when: false
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
|
|
||||||
- name: Test metallb-system resources for Layer 2 configuration
|
- name: Test metallb-system resources for Layer 2 configuration
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} -n metallb-system get {{ item }}
|
k3s kubectl -n metallb-system get {{ item }}
|
||||||
changed_when: false
|
changed_when: false
|
||||||
run_once: true
|
run_once: true
|
||||||
when: metal_lb_mode == "layer2"
|
when: metal_lb_mode == "layer2"
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
|
|
||||||
- name: Test metallb-system resources for BGP configuration
|
- name: Test metallb-system resources for BGP configuration
|
||||||
ansible.builtin.command: >-
|
ansible.builtin.command: >-
|
||||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} -n metallb-system get {{ item }}
|
k3s kubectl -n metallb-system get {{ item }}
|
||||||
changed_when: false
|
changed_when: false
|
||||||
run_once: true
|
run_once: true
|
||||||
when: metal_lb_mode == "bgp"
|
when: metal_lb_mode == "bgp"
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ spec:
|
|||||||
calicoNetwork:
|
calicoNetwork:
|
||||||
# Note: The ipPools section cannot be modified post-install.
|
# Note: The ipPools section cannot be modified post-install.
|
||||||
ipPools:
|
ipPools:
|
||||||
- blockSize: {{ calico_blockSize }}
|
- blockSize: {{ calico_blockSize | default('26') }}
|
||||||
cidr: {{ cluster_cidr }}
|
cidr: {{ cluster_cidr | default('10.52.0.0/16') }}
|
||||||
encapsulation: {{ calico_encapsulation }}
|
encapsulation: {{ calico_encapsulation | default('VXLANCrossSubnet') }}
|
||||||
natOutgoing: {{ calico_natOutgoing }}
|
natOutgoing: {{ calico_natOutgoing | default('Enabled') }}
|
||||||
nodeSelector: {{ calico_nodeSelector }}
|
nodeSelector: {{ calico_nodeSelector | default('all()') }}
|
||||||
nodeAddressAutodetectionV4:
|
nodeAddressAutodetectionV4:
|
||||||
interface: {{ calico_iface }}
|
interface: {{ calico_iface }}
|
||||||
linuxDataplane: {{ 'BPF' if calico_ebpf else 'Iptables' }}
|
linuxDataplane: {{ 'BPF' if calico_ebpf else 'Iptables' }}
|
||||||
|
|||||||
@@ -7,19 +7,6 @@ spec: # CiliumBGPPeeringPolicySpec
|
|||||||
- localASN: {{ cilium_bgp_my_asn }}
|
- localASN: {{ cilium_bgp_my_asn }}
|
||||||
exportPodCIDR: {{ cilium_exportPodCIDR | default('true') }}
|
exportPodCIDR: {{ cilium_exportPodCIDR | default('true') }}
|
||||||
neighbors: # []CiliumBGPNeighbor
|
neighbors: # []CiliumBGPNeighbor
|
||||||
{% if _cilium_bgp_neighbors | length > 0 %}
|
|
||||||
{% for item in _cilium_bgp_neighbors %}
|
|
||||||
- peerAddress: '{{ item.peer_address + "/32"}}'
|
|
||||||
peerASN: {{ item.peer_asn }}
|
|
||||||
eBGPMultihopTTL: 10
|
|
||||||
connectRetryTimeSeconds: 120
|
|
||||||
holdTimeSeconds: 90
|
|
||||||
keepAliveTimeSeconds: 30
|
|
||||||
gracefulRestart:
|
|
||||||
enabled: true
|
|
||||||
restartTimeSeconds: 120
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
- peerAddress: '{{ cilium_bgp_peer_address + "/32"}}'
|
- peerAddress: '{{ cilium_bgp_peer_address + "/32"}}'
|
||||||
peerASN: {{ cilium_bgp_peer_asn }}
|
peerASN: {{ cilium_bgp_peer_asn }}
|
||||||
eBGPMultihopTTL: 10
|
eBGPMultihopTTL: 10
|
||||||
@@ -29,7 +16,6 @@ spec: # CiliumBGPPeeringPolicySpec
|
|||||||
gracefulRestart:
|
gracefulRestart:
|
||||||
enabled: true
|
enabled: true
|
||||||
restartTimeSeconds: 120
|
restartTimeSeconds: 120
|
||||||
{% endif %}
|
|
||||||
serviceSelector:
|
serviceSelector:
|
||||||
matchExpressions:
|
matchExpressions:
|
||||||
- {key: somekey, operator: NotIn, values: ['never-used-value']}
|
- {key: somekey, operator: NotIn, values: ['never-used-value']}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Configure LXC
|
|
||||||
options:
|
|
||||||
custom_reboot_command:
|
|
||||||
default: ~
|
|
||||||
description: Command to run on reboot
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Prerequisites
|
|
||||||
options:
|
|
||||||
system_timezone:
|
|
||||||
description: Timezone to be set on all nodes
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Proxmox LXC settings
|
|
||||||
options:
|
|
||||||
proxmox_lxc_ct_ids:
|
|
||||||
description: Proxmox container ID list
|
|
||||||
type: list
|
|
||||||
required: true
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Adjust some Raspberry Pi specific requisites
|
|
||||||
options:
|
|
||||||
state:
|
|
||||||
default: present
|
|
||||||
description:
|
|
||||||
- Indicates whether the k3s prerequisites for Raspberry Pi should be
|
|
||||||
- set up (possible values are `present` and `absent`)
|
|
||||||
@@ -11,4 +11,3 @@
|
|||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name: linux-modules-extra-raspi
|
name: linux-modules-extra-raspi
|
||||||
state: present
|
state: present
|
||||||
when: ansible_distribution_version is version('24.04', '<')
|
|
||||||
|
|||||||
@@ -3,4 +3,3 @@
|
|||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name: linux-modules-extra-raspi
|
name: linux-modules-extra-raspi
|
||||||
state: absent
|
state: absent
|
||||||
when: ansible_distribution_version is version('24.04', '<')
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
systemd_dir: /etc/systemd/system
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Reset all nodes
|
|
||||||
options:
|
|
||||||
systemd_dir:
|
|
||||||
description: Path to systemd services
|
|
||||||
default: /etc/systemd/system
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
argument_specs:
|
|
||||||
main:
|
|
||||||
short_description: Proxmox LXC settings
|
|
||||||
options:
|
|
||||||
proxmox_lxc_ct_ids:
|
|
||||||
description: Proxmox container ID list
|
|
||||||
type: list
|
|
||||||
required: true
|
|
||||||
Reference in New Issue
Block a user