Как запустить сериализуемые задания - PullRequest
0 голосов
/ 27 октября 2018

Я в странной ситуации, я не могу обернуть голову.

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

Моя проблема будет решена, если я выполню сериализованные задачи 1 и 2 для каждого фрукта, но, увы!первая задача - собрать все фрукты в виде списка объектов, прежде чем перейти к задаче 2.

vars:
  fruit:
     - name: banana
       color: yellow

     - name: apple
       color: green

     - name: tomato:
       color: red

tasks:
  - name: Task 1 - Get my hostname
    shell: "hostname -f"
    register: variable

  - name: Task 2 - print my hostname and the fruit

    debug: 
      msg: "hostname.stdout has value {{ variable.stdout }}, the fruits got is: {{ fruit.name }}"

Теперь я не уверен, какой цикл «с _» я должен выбрать для описанной выше ситуации.

fruit - это словарь, пара ключ + значение.«variable.stdout» не уверен, что это за тип объекта, так как мы получили 3 объекта fruit, теперь .stdout содержит 3 результата команды оболочки, которую мы здесь выполняем:

ok: [localhost] => {
    "variable": {
        "changed": true, 
        "cmd": "hostname -f", 
        "delta": "0:00:00.008597", 
        "end": "2018-10-27 13:37:00.123456", 
        "rc": 0, 
        "end": "2018-10-27 13:37:01.123456", 
        "stderr": "", 
        "stderr_lines": [], 
        "stdout": "pinapplepie.my.lan.domain", 
        "stdout_lines": [
            "pinapplepie.my.lan.domain", 
        ]
    }
}
  1. Как мнезапустить сериализованные мои задачи?
  2. Какой цикл "with_" мне следует использовать?

Спасибо за ваше время.Помощь очень ценится.

1 Ответ

0 голосов
/ 27 октября 2018

Вы можете выполнять итерации следующим образом (обратите внимание, что fruit - это не словарь, а список словарей):

---
- name: test
  hosts: localhost
  vars:
    fruit:
       - name: banana
         color: yellow

       - name: apple
         color: green

       - name: tomato
         color: red

  tasks:
    - name: Task 1 - Get my hostname
      shell: "hostname -f"
      register: variable

    - name: Task 2 - print my hostname and the fruit
      debug: 
        msg: "hostname.stdout has value {{ variable.stdout }}, the fruits got is: {{ item.name }}"
      with_items: "{{ fruit }}"
...