Сохранение сообщения отладки в список переменных - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу создать несколько учетных записей aws одновременно и сохранить разные выходные списки в переменные.

Я пытался с отладкой msg, но, возможно, это неправильный вариант.Идея заключается в следующем:

-
  name: Create accounts.
  hosts: localhost

  vars_prompt:
    - name: "tag_start"
      prompt: "Please set the starting number for the account"
      private: no

    - name: "tag_end"
      prompt: "Please set the ending number for the account"
      private: no

  tasks:
    - name: "Emails"
      debug: 
        msg: "test+{{item}}@gmail.com"
      with_sequence: start={{ tag_start }} end={{ tag_end }}
      register: email

    - name: "Account name"
      debug: 
        msg: "account{{item}}"
      with_sequence: start={{ tag_start }} end={{ tag_end }}
      register: account_name

    - name: "Emails list"
      debug: 
        msg: "{{email}}"

    - name: "Account names"
      debug: 
        msg: "{{account_name}}"

    - name: Create AWS account
      shell: >
        aws organizations create-account --email "{{ item[0] }}" \
        --account-name "{{ item[1] }}" \
        --role-name admin \
        --iam-user-access-to-billing ALLOW \
        --profile default
      with_together: 
        - "{{ email }}"
        - "{{ account_name }}"

Дело в том, что первая и вторая задачи, кажется, работают как ожидалось, показывая только то, что мне нужно:

TASK [Emails] ********************************************************************************************************************************************************************************************************************************************************************************************************
task path: /Users/me/repos/create_aws_account.yaml:15
ok: [localhost] => (item=46) => {
    "msg": "test+46@gmail.com"
}
ok: [localhost] => (item=47) => {
    "msg": "test+47@gmail.com"
}

TASK [Account name] **************************************************************************************************************************************************************************************************************************************************************************************************
task path: /Users/me/create_aws_account.yaml:21
ok: [localhost] => (item=46) => {
    "msg": "account46"
}
ok: [localhost] => (item=47) => {
    "msg": "account47"
}

Но когда я проверяю выводс другой отладочной MSG сохраненных переменных я получаю следующее:

TASK [Emails] ********************************************************************************************************************************************************************************************************************************************************************************************************
task path: /Users/me/create_aws_account.yaml:27
ok: [localhost] => {
    "msg": {
        "changed": false,
        "msg": "All items completed",
        "results": [
            {
                "_ansible_ignore_errors": null,
                "_ansible_item_label": "46",
                "_ansible_item_result": true,
                "_ansible_no_log": false,
                "_ansible_verbose_always": true,
                "changed": false,
                "failed": false,
                "item": "46",
                "msg": "test+46@gmail.com"
            },
            {
                "_ansible_ignore_errors": null,
                "_ansible_item_label": "47",
                "_ansible_item_result": true,
                "_ansible_no_log": false,
                "_ansible_verbose_always": true,
                "changed": false,
                "failed": false,
                "item": "47",
                "msg": "test+47@gmail.com"
            }
        ]
    }
}

TASK [Account names] *************************************************************************************************************************************************************************************************************************************************************************************************
task path: /Users/me/create_aws_account.yaml:31
ok: [localhost] => {
    "msg": {
        "changed": false,
        "msg": "All items completed",
        "results": [
            {
                "_ansible_ignore_errors": null,
                "_ansible_item_label": "46",
                "_ansible_item_result": true,
                "_ansible_no_log": false,
                "_ansible_verbose_always": true,
                "changed": false,
                "failed": false,
                "item": "46",
                "msg": "account46"
            },
            {
                "_ansible_ignore_errors": null,
                "_ansible_item_label": "47",
                "_ansible_item_result": true,
                "_ansible_no_log": false,
                "_ansible_verbose_always": true,
                "changed": false,
                "failed": false,
                "item": "47",
                "msg": "account47"
            }
        ]
    }
}

Так что я могу сделать, чтобы сохранить только MSG или стандартный вывод?Я пробовал также с set_fact, но, похоже, тоже не работает.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Наконец-то нашел то, что я точно искал, и нашел это здесь, это ответ пользователя KaffeeKiffer.(Второй ответ).

Ссылка

В конце приводится следующее:

- set_fact:
    emails: "{{ email.results | map(attribute='msg') | list }}"

- set_fact:
    account_names: "{{ account_name.results | map(attribute='msg') | list }}"

Для полноты информации: |список обязателен, потому что map всегда будет возвращать итератор.

0 голосов
/ 12 февраля 2019

Можно создать списки с set_fact

  vars:
    email: []
    account_name: []
  tasks:
    - set_fact:
        email: "{{ email }} + [ 'test{{ item }}@gmail.com' ]"
        account_name: "{{ account_name }} + [ 'account{{ item }}' ]"
      with_sequence: start="{{ tag_start }}" end="{{ tag_end }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...