Automation Ansible中的results.vars仅在第二次启动时可用

Automation Ansible中的results.vars仅在第二次启动时可用,automation,ansible,Automation,Ansible,我想把一些rpm软件包放到“{{playbook_dir}}/files/目录中,然后复制并安装这些软件包。据我所知,我可以通过使用register.results变量来实现它。这是我的playbook的一部分: - name: Copy packages copy: src={{ item }} dest=/root/ with_fileglob: - "{{ playbook_dir }}/files/*.rpm" register: my_pkgs loop_control

我想把一些rpm软件包放到“{{playbook_dir}}/files/目录中,然后复制并安装这些软件包。据我所知,我可以通过使用register.results变量来实现它。这是我的playbook的一部分:

- name: Copy packages
  copy: src={{ item }} dest=/root/
  with_fileglob:
- "{{ playbook_dir }}/files/*.rpm"
  register: my_pkgs
  loop_control:
    label: "Copy {{ item | basename }}"

- name: Install packages
  yum: name={{ item.path }} state=present
  with_items: "{{ my_pkgs.results }}"
  loop_control:
    label: "Install {{ item.path | basename }}"
在我第一次发射时

TASK [my-role : Install packages] *******************************************************
fatal: [my-host]: FAILED! => {"failed": true, "msg": "the field 'args' has \
an invalid value, which appears to include a variable that is undefined. The \
error was: 'dict object' has no attribute 'path'\n\nThe error appears to have \
been in '/root/ansible/test/roles/my-role/tasks/main.yml': line 9, column 3, but \
may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe \
offending line appears to be:\n\n\n- name: Install packages\n  ^ here\n"}
但是在第二天

TASK [my-role : Install packages] *******************************************************
changed: [my-host] => (item=Install package1.rpm)
changed: [my-host] => (item=Install package2.rpm)
我不明白:我是否遗漏了什么?是一个bug还是一个特性

UPD:ansible-2.3.1.0-1


@techraf是对的:没有
path
变量,只有在第一次运行时才有。在第二次运行时,会出现
path
变量,因此我将使用
dest
来处理我的情况。

您不需要在第一个任务中注册任何内容。您可以在两个任务中使用相同的循环

- name: Copy packages
  copy: src={{ item }} dest=/root/
  with_fileglob:
  - "{{ playbook_dir }}/files/*.rpm"
  loop_control:
    label: "Copy {{ item | basename }}"

- name: Install packages
  yum: name=/root/{{ item | basename }} state=present
  with_fileglob:
  - "{{ playbook_dir }}/files/*.rpm"
  loop_control:
    label: "Install {{ item | basename }}"

除了您,没有人能告诉我。请显示
my_pkgs
的值。此外,我在
copy
模块的返回值中看不到
path
。有一个键调用sd
dest
,但不是
path