add roles support for worker nodes

This commit is contained in:
2025-08-09 21:46:23 +03:00
parent 55fdd58f92
commit c2f41356cb
4 changed files with 24 additions and 43 deletions

View File

@@ -4,17 +4,17 @@ credentials:
private_key_file: /Users/georgest/.ssh/id_rsa
hosts:
- hostname: k8s-master-1
ip: "172.16.1.136"
roles: [control_plane, etcd]
master:
- hostname: k8s-master-1
ip: "172.16.1.136"
worker:
- hostname: k8s-worker-1
ip: "172.16.1.135"
# roles: [infra]
- hostname: k8s-worker-1
ip: "172.16.1.135"
roles: [node]
- hostname: k8s-worker-2
ip: "172.16.1.137"
roles: [node]
- hostname: k8s-worker-2
ip: "172.16.1.137"
# roles: [ingress]
orchestrator:
version: "1.32.4"

View File

@@ -29,6 +29,7 @@ type Config struct {
InventoryDir string
Verbose bool
KubeconfigFile string
Forks string `yaml:"forks" env-default:"10"`
InstallationName string `yaml:"installation_name" env-default:"cluster.local"`
Credentials struct {
User string `yaml:"user"`
@@ -37,7 +38,10 @@ type Config struct {
PrivateKeyFile string `yaml:"private_key_file"`
} `yaml:"credentials"`
Hosts []Host `yaml:"hosts"`
Hosts struct {
Masters []Host `yaml:"master"`
Workers []Host `yaml:"worker"`
} `yaml:"hosts"`
Orchestrator Orchestrator `yaml:"orchestrator"`

View File

@@ -67,6 +67,7 @@ func runPlaybook(playbookPath string, tags string) {
"ANSIBLE_DISPLAY_OK_HOSTS": "false",
"ANSIBLE_FORCE_COLOR": "true",
"ANSIBLE_HOST_KEY_CHECKING": "false",
"ANSIBLE_FORKS": config.Forks,
}
playbookOptions := getPlaybookParameters(tags)

View File

@@ -1,47 +1,23 @@
{{- range .Hosts }}
{{- range .Hosts.Masters }}
{{ .Hostname }} ansible_host={{ .Ip }} ip={{ .Ip }} {{ if .User }}ansible_user={{ .User }}{{- end }} {{ if .Password }}ansible_ssh_password={{ .Password }}{{- end }}
{{- end }}
{{- range .Hosts.Workers }}
{{ .Hostname }} ansible_host={{ .Ip }} ip={{ .Ip }} {{ if .User }}ansible_user={{ .User }}{{- end }} {{ if .Password }}ansible_ssh_password={{ .Password }}{{- end }}
{{- end }}
[kube_control_plane]
{{- range .Hosts }}
{{- $search := "control_plane" -}}
{{- $found := false -}}
{{- range .Roles }}
{{- if eq . $search }}
{{- $found = true }}
{{- end }}
{{- end }}
{{- if $found }}
{{- range .Hosts.Masters }}
{{ .Hostname }}
{{- end }}
{{- end }}
[etcd]
{{- range .Hosts }}
{{- $search := "etcd" -}}
{{- $found := false -}}
{{- range .Roles }}
{{- if eq . $search }}
{{- $found = true }}
{{- end }}
{{- end }}
{{- if $found }}
{{- range .Hosts.Masters }}
{{ .Hostname }}
{{- end }}
{{- end }}
[kube_node]
{{- range .Hosts }}
{{- $search := "node" -}}
{{- $found := false -}}
{{- range .Roles }}
{{- if eq . $search }}
{{- $found = true }}
{{- end }}
{{- end }}
{{- if $found }}
{{ .Hostname }}
{{- end }}
{{- range .Hosts.Workers }}
{{ .Hostname }}{{- if .Roles }} node_taints='[{{- range $i, $role := .Roles }}{{- if $i }},{{- end }}"node-role.kubernetes.io/{{ $role }}:NoSchedule"{{- end }}]' node_labels="{ {{- range $i, $role := .Roles }}{{- if $i }},{{- end }}'node-role.kubernetes.io/{{ $role }}': ''{{- end }} }"{{- end }}
{{- end }}
[all:vars]