Ansible получение значения ключа Stdout - PullRequest
1 голос
/ 28 мая 2020

Мне нужна помощь относительно того, как получить определенное значение c с помощью Ansible

Моя задача:

- name: 'check Describe Information'
  debug: 
  var: describeresult.stdout

Мне нужно значение IP-адреса из стандартного вывода, что должно Я ввел отладочную переменную для получения IP-адреса

TASK [check Describe Information] **********************************************
task path: /home/tom/Getipaddress.yml:28
ok: [127.0.0.1] => {
    "describeresult.stdout": {
        "failures": [], 
        "tasks": [
            {
                "attachments": [
                    {
                        "details": [
                            {
                                "name": "subnetId", 
                                "value": "subnet-xxxxxxxxxxxxxx"
                            }, 
                            {
                                "name": "networkInterfaceId", 
                                "value": "eni-xxxxxxxxxxxxxxxx"
                            }, 
                            {
                                "name": "macAddress", 
                                "value": "xxxxxxxxxxxxxxxxxx"
                            }, 
                            {
                                "name": "privateIPv4Address", 
                                "value": "xxxxxxxxxxxxxxxxxx"
                            }

Плюс я использую команду AWS ECS для генерации вышеуказанного вывода с --output как JSON не знаю, как использовать --query для фильтр или выборка только выше IP-адреса

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Используйте json_query . Например,

    - set_fact:
        my_privateIPv4Address: "{{ describeresult.stdout.tasks|
                                   json_query(query) }}"
      vars:
        query: "[].attachments[].details[?name=='privateIPv4Address'].value"

json_query по умолчанию возвращает список.

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

Вы можете использовать что-то подобное только для получения частного IP-адреса. "{{describeresult.stdout['tasks'][0]['attachments'][0]['details'][3]['value']}}"

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

Я сделал что-то подобное ранее для ec2_group_info модуль в ansible

Вы можете начать с генерации вывода по частям describeresult.stdout['tasks'] должен вернуть JSON для атрибута задачи. [0] указывает на первый элемент, когда есть квадратная скобка для JSON, подразумевающая более одного элемента / списка. Дай мне знать, как дела.

...