【问题标题】:What is the right way to do add-apt-repository via Chef?通过 Chef 执行 add-apt-repository 的正确方法是什么?
【发布时间】:2012-03-23 11:37:20
【问题描述】:

我正在学习 Chef,我现在要为 Ubuntu 学习:

execute "add-apt-repository ppa:#{node[:some_repo]}" do
  user "root"
end

execute "apt-get update" do
  user "root"
end

但可能有更好的(“厨师风格”?)方法来做到这一点。另外,我担心有时 add-apt-repository 会在执行时等待“Enter”键,因此这种方法可能无法正常工作。正确的做法是什么?

编辑:我只有以下格式的 ppa 链接:ppa:something/user

【问题讨论】:

    标签: ubuntu apt-get chef-infra


    【解决方案1】:

    添加另一个答案,因为我刚刚发现自己回到这里。 如果您只有密钥的 URL 而没有密钥签名,您可以简单地在 key 属性中指定 URL:

    apt_repository 'some_repo' do
      uri          'http://some_url/ubuntu/precise/amd64/'
      arch         'amd64'
      distribution 'precise'
      components   ['contrib']
      key          'https://some_key_url.com/debian/release.key'
    end
    

    来自the documentation

    【讨论】:

      【解决方案2】:

      如果您使用chef v12.9 及以上版本,请使用 apt_repository 资源来管理 apt 存储库。如果你使用低于 v12.8 的 chef,你可以使用APT Cookbook provided by Chef Software, Inc。这本食谱提供相同的LWRP 以下是资源的使用示例:

      apt_repository "nginx-php" do
        uri "http://ppa.launchpad.net/nginx/php5/ubuntu"
        distribution node['lsb']['codename']
        components ["main"]
        keyserver "keyserver.ubuntu.com"
        key "C300EE8C"
      end
      

      【讨论】:

      • 如果我只有 PPA 名称/用户名,如何找出什么是密钥服务器和密钥?
      • 我不知道你是如何得到密钥的,但是我几乎可以肯定的keyserver和上面的一样:“keyserver.ubuntu.com”
      • 将代码放在哪里?我可以把它放在我自己的食谱中吗?例如,它可以做很多其他的事情?
      • 哦,你需要安装 lsb-release 包。这不包括在 Debian 最小 :(
      • 链接的文档非常有用。 supermarket.chef.io/cookbooks/apt 我只是用它来添加一个稍微不标准格式的 repo。 A++ 会再次购买 ;-)
      【解决方案3】:

      另外一个注意事项是,一旦你添加了 apt 食谱,你应该在你的食谱中添加一个依赖声明。 更新 metadata.rb(应该在你的食谱目录的基础中)

      depends 'apt', '>= 2.7.0'
      

      这将防止节点无法更新的故障模式,因为它的运行列表中没有 apt 食谱。

      【讨论】:

        【解决方案4】:

        还有一个第三方 apt cookbook 提供了ppa 方法:

        ppa "user/repo"
        

        https://github.com/sometimesfood/chef-apt-repo

        理想情况下,应该将此功能添加到 opscode apt 食谱中。

        【讨论】:

        • ppa 方法对上面 Leo Gamas 回答中提到的 apt_repository LWRP 有什么功能?
        • 我们以前也建自己的内部。最近将其全部转移到利用社区食谱。在 aptitude 和有效地发现存储库方面有太多的边缘案例需要关心。 :) 在这种情况下,您只需提供完整的启动板 URL 到 repo 而不仅仅是user/repo,它将与apt_repository 一起使用。
        猜你喜欢
        • 1970-01-01
        • 2017-09-04
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 2012-02-25
        • 2017-07-12
        相关资源
        最近更新 更多