Невозможно получить групповой IPv4-адрес в ANSIBLE с шаблоном - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь перечислить мой eth0 адрес (установлен по умолчанию, потому что я где-то читал, что eth0 не всегда доступен ..). В моем шаблоне я пытаюсь вызвать его из группы следующим образом ...

[Unit]
Description=Kubernetes Kube Proxy
Documentation=https://github.com/GoogleCloudPlatform/kubernetes

[Service]
ExecStart=/usr/bin/kube-proxy \
  --master=https://{{ groups[controller][0]['ansible_default_ipv4']['address'] }}:6443 \
  --kubeconfig=/var/lib/kubelet/kubeconfig \
  --proxy-mode=iptables \
  --v=2

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Похоже, что это должно быть доступно, как при сбросе с -debug var=groups Я получаю ....

[18.234.92.196] => {
    "groups": {

      ......

        "controller": [
            "54.86.253.135",
            "52.205.43.24",
            "54.210.213.10"
        ],
        "controller.0": [
            "54.86.253.135"
        ],
        "controller.1": [
            "52.205.43.24"
        ],
        "controller.2": [
            "54.210.213.10"
        ],

        ......

        "name_controller-0": [
            "54.86.253.135"
        ],
        "name_controller-1": [
            "52.205.43.24"
        ],
        "name_controller-2": [
            "54.210.213.10"
        ],

        ......

    }
}

Странно, когда я пытаюсь отладить с var=groups[controller] Я получаю ...

TASK [worker : debug] *******************************************************************************************************************************************
ok: [34.207.172.100] => {
    "groups[controller]": "VARIABLE IS NOT DEFINED!: 'controller' is undefined"
}

.....

TASK [worker : Add Kubelet configuration] ***********************************************************************************************************************
fatal: [34.207.172.100]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'controller' is undefined"}

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 09 ноября 2018

Понял, нужно сначала указать IP через группы и использовать его в качестве индекса.

Кроме того, ansible_default_ipv4, кажется, не существует, так что поменялся местами на public_ip, что то же самое.

- name: Print hostvars
  debug:
    msg: "{{ hostvars[groups.controller.0].public_ip }}"
...