Artiffactory托管的Chef超市+ Chef服务器集成

问题描述 投票:0回答:1

我已经建立了一个Artifactory实例,并在其上建立了一个远程Chef Supermarket,该超市从另一个Artifactory上的本地存储库复制。我对现有的管道感到满意,因为这意味着可以通过推/拉复制将工件的交付自动化地交付给客户。

在客户端,我们还有一个Chef Server,该Chef Server旨在通过根据其角色/环境设置在各种服务器上运行菜谱来编排部署。

ORG:  Artifactory (Local Chef Repo)
-----------------------------------
           |
         <web>
           |
-----------------------------------
CUST: Artifactory (Remote Chef Repo) 
      Chef Server

我有一个空目录,在其中创建.chef / knife.rb,获得了厨师服务器之间的信任并配置了我的超级市场。

knife[:supermarket_site] = 'http://<user>:<api_key>@customer-artifactory:8081/artifactory/api/chef/org-chef'

[当我运行knife supermarket list时,我会获得来自人工超市中托管的Chef Supermarket的所有食谱的列表。但是,我面临的问题是,当我将Chef Server纳入组合时,它无法解析食谱。

user@workstation:~/chef-ops$ knife ssh 'name:vm01' sudo chef-client -x <user> -P <password>
vm01 knife sudo password:
vm01
vm01 Starting Chef Infra Client, version 15.3.14
vm01 resolving cookbooks for run list: ["repository"]
vm01
vm01 ================================================================================
vm01 Error Resolving Cookbooks for Run List:
vm01 ================================================================================
vm01
vm01 Missing Cookbooks:
vm01 ------------------
vm01 The following cookbooks are required by the client but don't exist on the server:
vm01 * repository
vm01
vm01
vm01 Expanded Run List:
vm01 ------------------
vm01 * repository
vm01
vm01 System Info:
vm01 ------------
vm01 chef_version=15.3.14
vm01 platform=ubuntu
vm01 platform_version=18.04
vm01 ruby=ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-linux]
vm01 program_name=/usr/bin/chef-client
vm01 executable=/opt/chef/bin/chef-client
vm01
vm01
vm01 Running handlers:
vm01 [2019-10-11T10:28:05+00:00] ERROR: Running exception handlers
vm01 Running handlers complete
vm01 [2019-10-11T10:28:05+00:00] ERROR: Exception handlers complete
vm01 Chef Infra Client failed. 0 resources updated in 04 seconds
vm01 [2019-10-11T10:28:05+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
vm01 [2019-10-11T10:28:05+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
vm01 [2019-10-11T10:28:05+00:00] FATAL: Net::HTTPServerException: 412 "Precondition Failed"

[我意识到这很可能是因为knife.rb中的设置没有传播到Chef Server,所以我需要配置Chef Server来查看Artifactory。

我已经查看了以下有关使用私人Chef Supermarkets的文档,但是它们似乎不适合我的用例。

查看了这些各种资源(以及更多资源)后,我不确定是否可以将Artifactory和Chef Server设置为实现自动食谱解析。似乎没有任何文档。例如,Chef Server回调URL在Artifactory下会是什么?

  oc_id['applications'] = {
    'supermarket' => {
       'redirect_uri' => 'http://customer-artifactory:8081/artifactory/api/oauth2/???'
     }
  }

我是不是认为Chef Server无法直接从Artifactory解析菜谱,我们是否需要创建某种管道来将Chef Server与Artifactory Chef库同步?

[我唯一看到的选择是创建一个程序,该程序定期执行knife supermarket list,然后遍历结果,从Artifactory超市下载结果,然后定期通过Shell脚本将所有新版本上载到Chef Server (cron工作/詹金斯)。我认为,Che​​f Server最好临时从超级市场请求菜谱,因为它只会在任何给定的时刻请求它的需求。

我以为这就像Artifactory / Chef Server可以/应该为我做的事,我错了吗?

chef artifactory
1个回答
0
投票

AFAIK:未连接Chef Supermarket和Chef Infra Server(书架),因此没有自动食谱解析。您将需要一个将食谱从超级市场/人工工厂上载到Chef服务器的过程,或者使用Policyfiles https://docs.chef.io/policyfile.html方法。

© www.soinside.com 2019 - 2024. All rights reserved.