代码之家  ›  专栏  ›  技术社区  ›  Jared Smith

告诉ansible playbook是否正在直接运行

  •  0
  • Jared Smith  · 技术社区  · 6 年前

    我当然可以在每一个缓存中都添加一个任务来更新apt缓存,但这似乎是浪费。

    是否有任何条件检查playbook是否在另一个playbook内运行或直接从命令行运行?或者检查缓存在全局范围内的var和基于它的条件中是否是最新的?

    2 回复  |  直到 6 年前
        1
  •  1
  •   mdaniel    6 年前

    或者检查缓存在全局范围内的var和基于此的条件中是否是最新的

    Vagrantfile /etc/ansible/facts.d ,通过花费精力在命令行上声明一个额外的var,通过检查与VM对应的NIC供应商(在我的例子中是VBox),或者虚拟化方法,或者。

    另外,还欢迎您实际声明一个“过时”阈值,并运行 apt-get update 如果 /var/lib/apt/lists/partial 比秒/分钟等的数字要老,这听起来更接近你真正想要的东西,而不是让事物在流浪中以一种方式表现,在现实中以另一种方式表现。

        2
  •  0
  •   Jared Smith    6 年前

    tasks:
      - name: Get the apt-cache stat
        stat: path=/var/lib/apt/lists/partial
        register: cachage
    
      - name: Update apt cache
        apt: update_cache=yes
        when: '{{ (ansible_date_time.epoch|float - cachage.stat.mtime) > 1800.0 }}'