Получение volume_id некорневого устройства в Ansible - PullRequest
0 голосов
/ 28 мая 2018

Как отфильтровать (при условии использования когда) тома ebs, которые не являются «dev / sda1»?

Например, книга воспроизведения:

- name:                     List Volumes
  ec2_vol:
    region:                 "{{ aws_vars.region }}"
    instance:               "{{ ec2.instances[0].instance_id }}"
    state:                  list
  register:                 volumes
  when:                     volumes.device_name != '/dev/sda1'
- debug:                    msg="{{ volumes.volumes | map(attribute='id') | list }}"

Этоне работает.

var для томов выглядит примерно так:

[
        {
            "attachment_set": {
                "attach_time": "2018-05-28T11:17:56.000Z",
                "deleteOnTermination": "false",
                "device": "xvdf",
                "instance_id": "i-00ac0585d1d4974aa",
                "status": "attached"
            },
            "create_time": "2017-07-18T14:54:28.969Z",
            "encrypted": false,
            "id": "vol-0506598d250ffe3d3",
            "iops": 450,
            "size": 150,
            "snapshot_id": "snap-0ce6832b64cfa093d",
            "status": "in-use",
            "tags": {
                "Site Desktop 1": "IIS",
                "project-group": "DEV"
            },
            "type": "gp2",
            "zone": "eu-central-1b"
        }

1 Ответ

0 голосов
/ 28 мая 2018

Оператор when выполняется перед задачей (она решает, должна ли задача выполняться или нет), поэтому ее нельзя использовать для фильтрации результатов.

Использование set_fact module Вы можете редактировать результаты задачи и сохранять их в новой переменной.Я использовал это в сочетании с фильтром запросов j son :

  - name:                     List Volumes
    ec2_vol:
      region:                 "eu-west-1"
      instance:               "i-0f7gd2b0090924864"
      state:                  list
    register:                 volumes
  - set_fact: filtered="{{ volumes.volumes | json_query('[?attachment_set.device!=`/dev/sda1`]') }}"
  - debug:                    msg="{{ filtered }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...