【问题标题】:Generic way to list installed packages using Ansible使用 Ansible 列出已安装包的通用方法
【发布时间】:2018-11-16 07:14:52
【问题描述】:

现在,在我当前的设置中,我将 Ansible 与 CentOs 主机一起使用。 其中一项任务包含以下行:

command: yum list installed somepackagename

如上所示,该任务仅适用于支持 yum 的主机,但如果我想在 Ubuntu 或其他 Linux 发行版上运行它怎么办?
在网上研究了一下后,我发现有一个通用的包管理器,叫做package。有了这个,我安装/卸载软件包而不用担心底层主机,但不会像上面看到的那样做list它们。 是否有任何模块或任何方法可以在不创建多个 whens 的情况下以通用方式实现这一目标?

【问题讨论】:

    标签: linux shell ansible


    【解决方案1】:

    问:使用 Ansible 列出已安装包的通用方法

    A:使用模块package_facts。该模块在 ansible_facts.packages

    中返回事实
    - name: Gather the package facts
      package_facts:
    - name: Print the package facts
      debug:
        var: ansible_facts.packages
    

    问:有一个通用的包管理器叫做 package ... 安装/卸载包而不用担心底层主机

    答:如何不完全“担心底层主机”的一个选项是在变量中包含特定于操作系统的包。例如:

        - name: vars
          include_vars:
            file: "{{ item }}"
          with_first_found:
            - files:
                - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
                - "{{ ansible_distribution }}.yml"
                - "{{ ansible_os_family }}.yml"
                - "default.yml"
              paths: '{{ role_path }}/vars'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多