【问题标题】:How to install ansible yum packages in order如何按顺序安装ansible yum包
【发布时间】:2021-07-01 16:03:13
【问题描述】:

我有:

  ignore_errors: false
  become: yes
  become_method: sudo
  yum:
    name: ["epel-release", "clamav"]
    state: present
    update_cache: yes

它抱怨找不到包,但我需要先安装 epel-release 才能安装 clamav,因为它位于 epel repo 中。有没有办法保证订单?除了分成 2 节之外,还有哪些选择?谢谢。

【问题讨论】:

    标签: ansible yum


    【解决方案1】:

    虽然使用@Haldum 提出的循环应该可以有效地解决您的问题,但在yum module documentation 中不鼓励使用它。由于您肯定需要在使用之前添加 epel 存储库,因此我将创建两个任务,您最终可以在第二个任务中安装多个包。

    - name: install my things
      hosts: my_hostgroup
      become: true
    
      vars:
        my_packages:
          - clamav
          # - some other package maybe
    
      tasks:
        - name: Install prerequisite epel repo
          yum:
            name: epel-release
            state: present
    
        - name: Install required packages
          yum:
            name: "{{ my_packages }}"
            state: present
    

    【讨论】:

      【解决方案2】:

      Ansible 循环可以像下面这样解决。

      ignore_errors: false
      become: yes
      become_method: sudo
      yum:
        name: "{{ item }}"
        state: present
        update_cache: yes
      loop:
        - "epel-release"
        - "clamav"
      

      【讨论】:

      • 由于我是 SO 新手,我无法评论 @Zeitounator 的答案,所以我在这里发表评论。他的观点是正确的。由于文档的原因,循环效率较低,甚至下面的注释也能准确回答您的问题。 yum module documentation _但是,如果其中一个软件包添加了其他软件包来自的新 yum 存储库(例如 epel-release),则该软件包需要安装在单独的任务中。 _
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2016-11-14
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      相关资源
      最近更新 更多