Форматирование переменной set_fact - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно, чтобы все идентификаторы пользователей были в одной переменной, все разделены \ n.Код такой, как показано ниже.

  - name: Retrieve the user id and instance
    shell: ls -l {{item}} | grep -v total| awk '{print $3}'
    register: find_result_userid
    with_items:
     - /tmp/log/logs/log1
     - /tmp/log/logs/log2
     - /tmp/log/logs/log3


  - name: Combine all userid
    set_fact:
     server_names: "{{ find_result_userid.results | map(attribute='stdout_lines')|list }}"

Вывод такой, как показано ниже.

ok: [localhost] => {
    "ansible_facts": {
        "server_names": [
            [
                "root",
                "root",
                "root"
            ],
            [
                "root",
                "root",
                "root"
            ],
            [
                "root",
                "root",
                "root"
            ]
        ]
    },
    "changed": false
}

Мне нужно что-то вроде ниже: т.е. все идентификаторы, разделенные строкой в ​​одной переменной.

 "server_names": [
            [
                "root",
                "root",
                "root",
                "root",
                "root",
                "root",
                "root",
                "root",
                "root"
            ]

Просьба сообщить.

Ответы [ 3 ]

0 голосов
/ 04 июля 2019

Если число элементов, с которыми вы выполняете итерацию, является статическим, я бы предположил, что вы можете использовать оператор + для добавления ваших результатов

- name: Combine all userid
    set_fact:
     server_names: "{{ find_result_userid.results[0].stdout_lines + find_result_userid.results[1].stdout_lines + find_result_userid.results[2].stdout_lines}}"

В противном случае, если он не является статическим, я думаю, ВладимирБоткас ответ лучше.

0 голосов
/ 04 июля 2019

В сочетании с тем, что предложил Владмир Ботка, чтобы получить результат в одном задании.

  - name: Combine all userid
    set_fact:
      server_names: "{{ find_result_userid.results | map(attribute='stdout_lines')|list | flatten }}"
0 голосов
/ 04 июля 2019

сгладить списки

- set_fact:
    server_names: "{{ server_names|flatten }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...