如何强制每个州的pkgrepo刷新一次?

时间:2015-02-26 16:03:08

标签: salt-stack

我在私有debian存储库中有一堆软件包。在salt文档(http://docs.saltstack.com/en/latest/ref/states/all/salt.states.pkgrepo.html)之后,在salt状态下我定义了一个像这样的pkgerepo条目:

my-private-repo:
   pkgrepo.managed:
     - hmanname: My Deb
     - name: deb <url>....
     - dist: my-repo
     - require_in:
       - pkg: pkg1
       - pkg: pkg2
       - pkg: ...

并在每个pkg定义中添加了refresh:True节:

pkg1:
  pkg:
    - latest
    - fromrepo: my-repo
    - refresh: True

现在,它的工作方式是我得到了一个&#34; apt-get update&#34;在安装(升级)每个软件包之前,但是有很多软件包(大约20个),我会得到每个软件包的更新。在回购状态测试后,有没有办法让apt更新一次?

3 个答案:

答案 0 :(得分:2)

Helices和Antstud的答案让我朝着正确的方向前进。无论如何,最后我发现了一些可能对其他人有帮助的有趣事情:

  1. &#34;刷新:真实&#34;与pkg.latest没用,似乎是最新的&#39;暗示&#34;刷新:真&#34;
  2. SaltStack doc中的内容似乎不适用(最后版本为2014.7.1)

      

    require_in:

         

    将此设置为pkg.installed或pkg.latest的列表,以在尝试安装这些软件包之前触发apt-get update的运行。在pkg中设置require将不适用于此。

    我刚刚添加了

  3. - require: - pkgrepo: my_repo

    到我的pkg定义并且它正在工作(使得包括更少的一团糟)。

答案 1 :(得分:1)

我相信您可以使用pkgs:安装多个具有单一状态的软件包。它适用于我,即使使用自定义存储库:

install packages:
  pkg:
    - latest
    - fromrepo: my-repo
    - refresh: True
    - pkgs:
      - pkg1
      - pkg2
      ...

答案 2 :(得分:1)

你可以尝试在每个小兵的支柱中定义pkg列表,然后在状态中获取列表。

install packages:
  pkg:
    - latest
    - fromrepo: my-repo
    - refresh: True
    - pkgs:
      {% for pkg in pillar.get('packages', {}).items() %}
      {{pkg}}
      {% endfor %}