【问题标题】:Ansible -playbook when deb not installed install未安装 deb 时安装 Ansible -playbook
【发布时间】:2019-10-03 11:33:39
【问题描述】:

我正在尝试编写剧本,我想检查是否安装了 deb 包,如果未安装则安装

到目前为止,我已经尝试使用 package_facts 模块,但我无法弄清楚

   - name: Gather package facts
     package_facts:
       manager: auto

   - name: Debug if package is present
     debug:
       msg: 'yes, mypackage is present'
     when: '"besagent" in ansible_facts.packages'
     register: besagent

   - name: Debug if package is absent
     debug:
       msg: 'no, mypackage is absent'
     when: '"besagent" not in ansible_facts.packages'

这是安装deb的命令

- name: Install_BigFix_DEB
     apt: deb="/usr/BigFix/BESAgent-9.5.11.191-debian6.amd64.deb"
     sudo: true

所以我看看是否安装了包,我有一个安装包的命令,但我如何让它自动发生。 如果没有安装 BigFix 代理 那么安装代理呢?

感谢您的帮助!

【问题讨论】:

    标签: ansible


    【解决方案1】:

    Ansible 操作本质上是幂等的。如果您使用的是 Ansible 模块,则无需检查是否安装了 deb 包。 Ansible 会处理它。如果未安装该软件包,它将安装。否则会跳过。

    可以直接使用

    - name: Install_BigFix_DEB
      apt: deb="/usr/BigFix/BESAgent-9.5.11.191-debian6.amd64.deb"
      sudo: true
    

    根据 Ansible document: 如果一个操作执行一次的结果与没有任何干预动作的重复执行的结果完全相同,则该操作是幂等的。

    【讨论】:

    • 感谢重播!!我会检查并更新!
    【解决方案2】:

    你不需要检查包是否已经安装。

    apt 模块负责处理。

    如果软件包已经安装,apt 将什么都不做并返回一个status: ok

    如果没有,它将安装它并返回一个status: changed

    【讨论】:

      猜你喜欢
      • 2013-05-02
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 2020-03-28
      • 2016-08-18
      • 1970-01-01
      • 2018-01-04
      相关资源
      最近更新 更多