首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用with_items循环安装时为软件包设置友好名称

使用with_items循环安装时为软件包设置友好名称
EN

Stack Overflow用户
提问于 2020-04-16 04:09:15
回答 1查看 58关注 0票数 1

我有一个Ansible任务,它通过一个直接的RPM链接安装几个包:

代码语言:javascript
复制
- name: Install packages by a direct RPM
  become: true
  package: name={{ item }} state=present
  with_items:
    - https://go.skype.com/skypeforlinux-64.rpm
    - https://zoom.us/client/latest/zoom_x86_64.rpm

当我运行它时,输出如下:

代码语言:javascript
复制
TASK [Install packages by a direct RPM] *******************************
ok: [localhost] => (item=https://go.skype.com/skypeforlinux-64.rpm)
ok: [localhost] => (item=https://zoom.us/client/latest/zoom_x86_64.rpm)

有没有可能改变它,使输出将打印一个友好的包的名称,如"Skype",“缩放”等,而不是URL?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 07:00:56

虽然这不是你实际应该做的(见下文),但这可以通过adding control to your loop和稍微修改一下你的包列表来实现。

代码语言:javascript
复制
- name: Install packages by a direct RPM
  become: true
  package:
    name: "{{ item.link }}"
    state: present
  with_items:
    - link: https://go.skype.com/skypeforlinux-64.rpm
      name: Skype
    - link: https://zoom.us/client/latest/zoom_x86_64.rpm
      name: Zoom
  loop_control:
    label: "{{ item.name }}"

同时,在这种情况下,这仍然是不好的做法,因为您不应该循环遍历不可知论的package和类似的特定yumapt……模块。您可以在name选项中直接传递要安装的包的列表。package缺少这方面的文档,但在特定的模块页面上有明确的解释。

这就是如何通过更好的性能(对系统上的yum/dnf的一次调用)和更少的潜在错误(列表中的包之间的交叉依赖关系...)来实现与上面相同的结果。

代码语言:javascript
复制
- name: Install Skype and Zoom by direct RPM
  become: true
  package:
    name:
      - https://go.skype.com/skypeforlinux-64.rpm
      - https://zoom.us/client/latest/zoom_x86_64.rpm
    state: present

如果您仍然希望名称和链接列表是动态的,以防您以后想要向任务添加更多的包,这里有一个可能的处理方法的示例:

代码语言:javascript
复制
- name: Install from rpm link ({{ packages | map(attribute='name') | join(', ') }})
  vars:
    packages:
      - link: https://go.skype.com/skypeforlinux-64.rpm
        name: Skype
      - link: https://zoom.us/client/latest/zoom_x86_64.rpm
        name: Zoom
  package:
    name: "{{ packages | map(attribute='link') | list }}"
    state: present
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61237738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档