ссылка на переменную: невозможно прочитать stdout_lines из переменной реестра после команды ssh и команды - PullRequest
0 голосов
/ 25 октября 2019

Team, моя задача выполняется, она выдаст команды на хосты, которые извлекаются из зарегистрированной переменной. В настоящее время два хозяина, но будет 100 в производстве. Я не могу прочитать stdout или stdout_lines. моя задача и выход ниже. Его отправка на сервер удаления, а затем выполнение команды df -h и сохранение выходных данных.

фактический вывод (с некоторыми текстами, но без скобок)

ok: [localhost] => {
        "raid_info.results": [
            {
                "ansible_loop_var": "item", 
                "changed": true, 
                "cmd": "ssh -F /home/svcngcctal.net \"df -kh /raid/\"", 
                "delta": "0:00:02.095839", 
                "end": "2019-10-24 22:55:38.323679", 
                "failed": false, 
                "failed_when_result": false, 
                "invocation": {
                    "module_args": {
                        "_raw_params": "ssh -F /home/metal.net \"df -kh /raid/\"", 
                        "_uses_shell": true, 
                        "warn": true
                    }
                }, 
                "item": {
                    "nodeType": "4.15.0-45-generic", 
                    "node_name": "hostB"
                }, 
                "rc": 0, 
                "start": "2019-10-24 22:55:36.227840", 
                "stderr": "Warning: Permanently***", 
                "stderr_lines": [
                    "Warning:asd"
                ], 
                "stdout": "Filesystem      Size  Used Avail Use% Mounted on\n/dev/sdb1       7.0T  175G  6.5T   3% /raid", 
                "stdout_lines": [
                    "Filesystem      Size  Used Avail Use% Mounted on", 
                    "/dev/sdb1       7.0T  175G  6.5T   3% /raid"
                ]
            }, 
            {
                "ansible_loop_var": "item", 
                "changed": true, 
                "cmd": "ssh -F /home/svcngcc/jenkinstal.net \"df -kh /raid/\"", 
                "delta": "0:00:02.115591",
                "invocation": {
                    "module_args": {
                        "_raw_params": "ssh -F /home/sal.net \"df -kh /raid/\"", 

                        "warn": true
                    }
                }, 
                "item": {
                    "nodeType": "4.15.0-45-generic", 
                    "node_name": "hostA"
                }, 
                "rc": 0, 
                "start": "2019-10-24 22:55:38.467007", ", 
                "stderr_lines": [
                    "Warning: Permanently "
                ], 
                "stdout": "Filesystem      Size  Used Avail Use% Mounted on\n/dev/sdb1       7.0T  176G  6.5T   3% /raid", 
                "stdout_lines": [
                    "Filesystem      Size  Used Avail Use% Mounted on", 
                    "/dev/sdb1       7.0T  176G  6.5T   3% /raid"
                ]
            }
        ]
    }

вывод не выполненчитать строки stdout для проверки точки монтирования ..

задача:

      - name: "RAID mount check for fscache on GPU Nodes"
        shell: ssh -F {{ ssh_cfg_path.stdout }} {{ item.node_name }}.{{ ssh_host }} "df -kh /raid/"
        ignore_errors: no
        register: raid_info
        failed_when: raid_info.rc != 0
        with_items: "{{ gpu_nodes }}"

      - name: raid_info results1_stdout_lines
        debug:
          var: raid_info.results[1].stdout_lines

ничего не выводит ..

1 Ответ

1 голос
/ 25 октября 2019

Я не могу воспроизвести ваши результаты - я полагаю, что вы оставили какую-то информацию при публикации.

Например, могут ли ваши задачи случайно выполняться на разных хостах? Переменная "raid_info" регистрируется для каждого хоста, поэтому, если ваши задачи выполняются на разных хостах, это может вызвать вашу проблему.

Мой тест с похожим циклом: - playbook.yml

---
- hosts: localhost
  gather_facts: false
  vars_files:
    - packages.yml

  tasks:
  - name: Run a command
    command: "echo {{item}}"
    register: my_output
    loop: 
    - 10.10.80.193
    - 10.10.80.194

  - name: Print the results
    debug:
      var: my_output

  - name: Print only the second item in the list
    debug:
      var: my_output.results[1].stdout_lines
  • результат:
# ansible-playbook -i inventory.yml playbook.yml 

PLAY [localhost] *************************************************************************************************************************

TASK [Run a command] *********************************************************************************************************************
changed: [localhost] => (item=10.10.80.193)
changed: [localhost] => (item=10.10.80.194)

TASK [Print the results] *****************************************************************************************************************
ok: [localhost] => {
    "my_output": {
        "changed": true, 
        "msg": "All items completed", 
        "results": [ 
            { <snip>
            }, 
            { <snip>
            }
        ]
    }
}

TASK [Print only the second item in the list] ********************************************************************************************
ok: [localhost] => {
    "my_output.results[1].stdout_lines": [
        "10.10.80.194"
    ]
}

PLAY RECAP *******************************************************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

...