Не удается выполнить утверждение assible роли для переменных, построенных на количестве узлов в группах ресурсов - PullRequest
0 голосов
/ 01 ноября 2019

Team, используя роли не напрямую playbook. Я пытаюсь подсчитать количество хостов в инвентаре по определенным группам и затем подтвердить это значение. но я получаю неопределенное значение ответа на выходе. Кроме того, есть ли лучший способ сделать это?

      - name: "Ensure KUBECONFIG"
        shell: echo $KUBECONFIG
        register: kubeconfig_exists
        failed_when: kubeconfig_exists.rc != 0
      - debug:
          var: kubeconfig_exists.stdout_lines

      - name: "Find $PATH where Ansible looks for binaries on target system"
        register: echo_path
        shell: echo $PATH
      - debug:
          var: echo_path.stdout_lines

      - debug:
        vars:
            gpu_count: "{{ groups['k8s_gpu_nodes'] | length }}"
            cpu_count: "{{ groups['k8s_cpu_nodes'] | length }}"
      - assert:
               that:
                  - "gpu_count | int <= 1"
                  - "cpu_count | int >= 1"
               msg: "Assure k8s_nodes are not empty"

вывод:

TASK [3_validations_on_ssh : Ensure KUBECONFIG] ************
changed: [localhost]

TASK [3_validations_on_ssh : debug] ******************
ok: [localhost] => {
    "msg": "Hello world!"
}

TASK [3_validations_on_ssh : assert] ****************
fatal: [localhost]: FAILED! => {"msg": "The conditional check 'gpu_count | int <= 1' failed. The error was: error while evaluating conditional (gpu_count | int <= 1): 'gpu_count' is undefined"}

inventory.txt

target1 ansible_host='{{ target1_hostip }}' ansible_ssh_pass='{{ target1_pass }}'
[k8s_gpu_nodes]
host1
host2
[k8s_cpu_nodes]
host3
host4

1 Ответ

0 голосов
/ 01 ноября 2019

Вот книга с исправлением одной необходимой задачи:

---
- name: Check nodes in groups
  hosts: localhost
  gather_facts: false

  tasks:
    - name: Check everything is ok
      vars:
        gpu_count: "{{ groups['k8s_gpu_nodes'] | length }}"
        cpu_count: "{{ groups['k8s_cpu_nodes'] | length }}"
      assert:
        that:
          - gpu_count | int > 0
          - cpu_count | int > 0
        msg: "Assure k8s_nodes are not empty"

Когда я играю в эту книгу, используя описанный выше инвентарь, вот результат:

$ ansible-playbook -i inventories/hosts.ini playbook.yml

PLAY [Check nodes in groups] ****************************************************************************************************************************************************************************

TASK [Check everything is ok] ***************************************************************************************************************************************************************************
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}

PLAY RECAP **********************************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...