云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

Artifactory为管理Puppet模块提供了全面支持,确保了对Puppet模块的最佳和可靠访问傀儡伪造通过将多个Puppet存储库聚合在一个虚拟存储库Artifactory下允许通过一个URL上传和下载所有的Puppet模块。

作为一个羽翼丰满的Puppet存储库,在其功能之上高级工件管理, Artifactory的支持木偶提供:

  1. 为所有存储库类型从Artifactory提供Puppet模块到Puppet命令行工具的能力。
  2. 为托管在Artifactory本地存储库中的Puppet模块计算元数据。
  3. 访问远程Puppet存储库,例如https://forgeapi.puppetlabs.com/,使用远程存储库它提供代理和缓存功能。
  4. 从一个URL访问多个Puppet存储库虚拟存储库.这克服了Puppet客户端每次只能访问一个注册表的限制。

  5. 支持灵活的木偶存储库布局允许您组织您的Puppet模块,并根据项目或开发团队分配访问权限。

Puppet版本支持

Puppet在4.9.1版本之前不支持上下文路径,我们建议使用带有Puppet版本的Artifactory4.9.2及以上。如果您正在使用,请参见下面Puppet 4.9.1及以下版本

配置

本地Puppet存储库

若要启用本地存储库中的Puppet模块元数据计算,请从政府模块转到存储库|存储库|当地的设置包类型木偶当您创建存储库时。

页面内容

仓库布局

Artifactory允许您为您的Puppet存储库定义任何布局。要根据自定义布局上传模块,您需要使用Puppet模块构建。

这将创建一个gz然后你可以上传到本地Puppet存储库中的任何路径。

远程Puppet存储库

一个远程存储库在Artifactory中定义的缓存代理,用于在远程URL管理的存储库,例如https://forgeapi.puppetlabs.com/

工件(例如tar.gz从远程存储库请求的文件)根据需要缓存。您可以从远程存储库缓存中删除下载的工件,但是,您不能手动将工件部署到远程Puppet存储库。

要定义一个远程存储库来代理远程Puppet资源,请遵循以下步骤:

  1. 政府模块,在存储库|存储库|远程,点击新的远程存储库
  2. 在“新建远程存储库”对话框中,设置包类型木偶,设置库的关键属性中指定远程存储库的URLURL字段,如下所示。
  3. 点击保存&完成

虚拟木偶存储库

一个虚拟在Artifactory中,存储库聚合了这两个模块当地的而且远程存储库。

这允许您通过为虚拟存储库定义的单个URL访问本地托管的Puppet模块和来自远程代理的Puppet存储库的模块。
若要定义虚拟Puppet存储库,请从政府模块,选择存储库|存储库|虚拟,设置包类型傀儡,并选择底层本地和远程Puppet存储库,以包括在基本设置选项卡。

点击保存&完成创建存储库。


使用Puppet命令行

当通过Artifactory访问Puppet存储库时,存储库URL路径必须加上前缀api /木偶

这适用于所有Puppet命令,包括木偶模块安装而且木偶模块搜索。

例如,如果你单独使用Artifactory或作为本地服务,你可以使用下面的URL访问你的Puppet存储库:

http://localhost: 8081 / artifactory / api /木偶/ < REPO_KEY >

或者,如果您正在使用Artifactory Cloud, URL将是:


https:// < server name > .jfrog.io artifactory / api /木偶/ < REPO_KEY >

要使用Puppet命令行,您需要确保在客户端上安装了Puppet。

创建了Puppet存储库之后,可以在应用模块| Artifactory | Artifacts树浏览器,单击给我介绍按钮以获取有用的代码片段。中更改Puppet存储库URLpuppet.conf文件,并使用Puppet命令行工具解析模块。

替换默认存储库

要将默认存储库替换为指向Artifactory中的Puppet存储库的URL,请在您的puppet.conf文件:

注意:本例使用带有密钥的存储库木偶

[主要]module_repository = http://localhost: 8080 / artifactory / api /木偶傀儡

提示我们建议将虚拟存储库URL引用为存储库。这使您可以灵活地重新配置和聚合其他外部源和部署的Puppet模块的本地存储库。
注意,如果这样做,还可以使用——module_repository参数指定在使用Puppet模块安装命令时要从中解析模块的本地存储库。

一旦配置了Puppet命令行工具,每个木偶模块安装命令将从上面指定的Puppet存储库中获取包。例如:


$ puppet module install——module_repository=http://localhost:8080/artifactory/api/puppet/puppet puppetlabs-mysql注意:准备安装到/Users/jainishs/。puppetlabs / etc /代码/模块……注意:从http://localhost:8080/artifactory/api/puppet/puppet下载…注意:正在安装—请勿中断…/用户/ jainishs /。木偶labs/etc/code/modules └── puppetlabs-mysql (v3.10.0)



使用librarian-puppet

librarian-puppet是您的Puppet基础设施的捆绑器。从版本5.4.5开始,您可以使用带有Artifactory的library - Puppet作为Puppet存储库管理基础设施所依赖的Puppet模块。

要配置library -puppet从Artifactory获取模块,a将下列文件寄给贵公司Puppetfile


打造“http:// < ARTIFACTORY_HOST_NAME >: < ARTIFACTORY_PORT > / artifactory / api /木偶/ < REPO_KEY >”

例如,使用librarian-puppet的Puppetfile可能看起来像这样:

伪造“http://localhost:8080/artifactory/api/puppet/puppet-local”mod 'puppetlabs-mysql', '3.7.0' mod 'puppetlabs-apache', '1.5.0'

使用实例从Artifactory中获取并安装Puppet模块。

library -puppet install——no-use-v1-api

使用r10k

r10k是一个Puppet环境和模块部署工具。从版本5.4.5开始,您可以使用r10k从Artifactory Puppet存储库中获取Puppet环境和模块以进行部署。

要配置r10k从Artifactory获取模块,a将下列文件寄给贵公司r10k.yaml文件:

forge: baseurl: 'http://:/artifactory/api/puppet/'

例如:

Forge: baseurl: 'http://localhost:8080/artifactory/api/puppet/puppet-local'

使用实例从Artifactory中获取并安装Puppet模块。

R10k puppetfile安装


Puppet发布(部署模块)

设置证书

要支持身份验证,您需要将Artifactory凭据添加到您的puppet.conf文件:
注意:您的证书应格式化为用户名:密码作为一个Base64编码的字符串

您的Artifactory凭据,已格式化用户名:密码作为Base64编码的字符串。
例如:

[主要]module_repository = http://admin: AP7eCk6M6JokQpjXbkGytt7r4sf@localhost: 8080 / artifactory / api /木偶/ puppet-local

确保您有一个Artifactory用户,以便发布模块。

部署模块

有两种方法将包部署到本地存储库:

  1. 使用Artifactory UI
    一旦创建了Puppet存储库,就可以在Tree Browser中选择它并单击部署上传Puppet模块。
    选择您的模块,然后单击部署



  2. 使用Artifactory REST API
    例如:
    curl -uadmin:AP7eCk6M6JokQpjXbkGytt7r4sf -XPUThttp://localhost: 8080 / artifactory / puppet-local / < TARGET_FILE_PATH> -t < path_to_file > . txt

在没有匿名访问的情况下使用Artifactory

默认情况下,Artifactory允许匿名访问Puppet存储库。定义在政府模块下安全|一般.详情请参阅允许匿名访问

控件,以便能够跟踪用户如何与存储库交互,需要取消选中允许匿名访问设置。这意味着用户将需要输入所述的用户名和密码设置证书以上。


木偶的搜索

Artifactory支持多种搜索工件的方法。详情请参阅搜索Artifacts_OLD.但是,由于以下原因,一个模块在发布后可能不能立即可用:

  • 当将模块发布到本地存储库时,Artifactory会异步计算搜索索引,并等待为新发布的模块建立索引。
  • 由于虚拟存储库可能包含本地存储库,因此由于相同的原因,新发布的包可能不会立即可用。
  • 在远程存储库的情况下,只有当Artifactory根据检索缓存周期设置。

Artifactory用两个属性注释每个部署或缓存的Puppet模块:puppet.name而且puppet.version

您可以使用属性搜索根据Puppet包的名称或版本搜索Puppet包。


清理本地傀儡缓存

Puppet客户端保存已下载模块的缓存,以及它们的JSON元数据响应(称为.cache.json).

JSON元数据缓存文件包含Puppet模块元数据。

我们建议在第一次使用Artifactory之前删除Puppet缓存,包括模块和元数据。这是为了确保您的缓存只包含来自Artifactory请求的元素,而不是直接来自Artifactory的https://forge.puppet.com


查看单个木偶模块信息

Artifactory允许您直接从UI查看选定的Puppet模块元数据。

树浏览器并选择tar.gz文件中要检查的元数据木偶的信息选项卡。


使用Puppet 4.9.1及以下版本

在4.9.1版本之前,Puppet客户端不支持远程Puppet Forge存储库的上下文路径。因此,我们建议使用Artifactory和Puppet 4.9.2及以上版本。

如果你需要使用Puppet 4.9.1及以下版本,你可以使用NGINX或Apache来重写所有请求/ v3 / */ artifactory / api /木偶/ < repo-name > / v3 / *。

例如,如果您有一个名为puppet-virtual,并且您使用的是Puppet 3.0,您将配置您的代理服务器来重写/ v3 / */ artifactory / api /木偶puppet-virtual / v3 / *

下面的章节展示了NGINX和Apache的ports方法和子域方法的配置示例,以使用名为puppet-virtual

##服务器配置服务器{监听8001;Location ^~/v3 {rewrite ^/v3/(.*) /artifactory/api/puppet/puppet-virtual/v3/$1 break;proxy_redirect;proxy_pass http://localhost: 8080 / artifactory /;}}
##服务器配置服务器{监听443 ssl;80;server_name ~ \(? <回购>。+)。artifactory-cluster artifactory-cluster;If ($http_x_forwarded_proto = ") {set $http_x_forwarded_proto $scheme;} ##应用程序特定日志## access_log /var/log/nginx/artifactory-cluster-access.log计时;/var/log/nginx/artifactory-cluster-error.log;重写^/$ /artifactory/webapp/ redirect;重写^ / artifactory ? (/ webapp) ?$ /artifactory/webapp/ redirect;重写^ / (v1 | v2) / (. *) / artifactory / api /码头工人/回购美元/ 1 / 2美元; rewrite ^/v3/(.*) /artifactory/api/puppet/$repo/v3/$1; chunked_transfer_encoding on; client_max_body_size 0; location /artifactory/ { proxy_read_timeout 900; proxy_pass_header Server; proxy_cookie_path ~*^/.* /; if ( $request_uri ~ ^/artifactory/(.*)$ ) { proxy_pass http://artifactory/artifactory/$1; } proxy_pass http://artifactory/artifactory/; proxy_next_upstream http_503 non_idempotent; proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
########################################################### ## 这个配置是由JFrog Artifactory  ## ########################################################### ## 添加HA条目时HA配置<代理均衡器:/ / artifactory > BalancerMember http://10.6.16.125:8080路线= 14901314097097 ProxySet lbmethod = byrequests ProxySet stickysession = ROUTEID < /代理> < VirtualHost *: 80 > ProxyPreserveHost在ServerName artifactory-cluster ServerAlias *。artifactory-cluster ServerAdmin server@admin ##应用特定日志## ErrorLog ${APACHE_LOG_DIR}/artifactory-cluster-error.log ## CustomLog ${APACHE_LOG_DIR}/artifactory-cluster-access.log combined AllowEncodedSlashes On RewriteEngine On RewriteCond %{SERVER_PORT} (.*) RewriteRule (.*) - [E=my_server_port:%1] ##'REQUEST_SCHEME'报头仅在apache 2.4及以上版本支持RewriteCond %{REQUEST_SCHEME} (.*) RewriteRule (.*) - [E=my_scheme:%1] RewriteCond %{HTTP_HOST} (.*) RewriteRule (.*) - [E=my_custom_host:%1] RewriteRule ^/$ /artifactory/webapp/ [R,L] RewriteRule ^/artifactory(/)?$ /artifactory/webapp/ [R,L] RewriteRule ^/artifactory/webapp$ /artifactory/webapp/ [R,L] RequestHeader set Host %{my_custom_host}e RequestHeader set X-Forwarded-Port %{my_server_port}e ##{my_scheme}需要一个只有apache 2.4及以上版本支持的模块RequestHeader set X-Forwarded-Proto %{my_scheme}e RequestHeader set x - artifactory- overoverride - base - url %{my_scheme}e://artifactory-cluster:%{my_server_port}e/artifactory ProxyPassReverseCookiePath /artifactory/artifactory ProxyRequests off ProxyPreserveHost on ProxyPass /artifactory/ balancer://artifactory/artifactory/ ProxyPassReverse /artifactory/ balancer://artifactory/artifactory/ Header add set - cookie“ROUTEID = e % {BALANCER_WORKER_ROUTE};path=/artifactory/" env=BALANCER_ROUTE_CHANGED  Listen 8001  ProxyPreserveHost On ServerName artifactory-cluster ServerAlias *. .artifactory-cluster ServerAdmin server@admin ##应用特定日志## ErrorLog ${APACHE_LOG_DIR}/artifactory-cluster-error.log ## CustomLog ${APACHE_LOG_DIR}/artifactory-cluster-access.log combined AllowEncodedSlashes On RewriteEngine On RewriteCond %{SERVER_PORT} (.*) RewriteRule (.*) - [E=my_server_port:%1] ##'REQUEST_SCHEME'报头仅在apache 2.4及以上版本支持rewriterond %{REQUEST_SCHEME} (.*) RewriteRule (.*) - [E=my_scheme:%1] rewriterond %{HTTP_HOST} (.*) RewriteRule (.*) - [E=my_custom_host:%1] RewriteRule "^/v3/(.*)$" "/artifactory/api/puppet/puppet-virtual/v3/$1" [P] RewriteRule ^/$ /artifactory/webapp/ [R,L] RewriteRule ^/artifactory(/)?$ /artifactory/webapp/ [R,L] RewriteRule ^/artifactory/webapp$ /artifactory/webapp/ [R,L] RequestHeader set Host %{my_custom_host}e RequestHeader set X-Forwarded-Port %{my_server_port}e ##{my_scheme}需要一个apache 2.4及以上版本支持的模块RequestHeader set x - forward - proto %{my_scheme}e RequestHeader set x - artifactory- overoverride - base - url %{my_scheme}e://artifactory-cluster:%{my_server_port}e/artifactory ProxyPassReverseCookiePath /artifactory/artifactory ProxyPass /artifactory/ balancer://artifactory/artifactory/ ProxyPassReverse /artifactory/ balancer://artifactory/artifactory/ artifactory/ Header add set - cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;path=/artifactory/" env=BALANCER_ROUTE_CHANGED  . path=/artifactory/
########################################################### ## 这个配置是由JFrog Artifactory  ## ########################################################### ## 添加HA条目时HA配置<代理均衡器:/ / artifactory > BalancerMember http://10.6.16.125:8080路线= 14901314097097 ProxySet lbmethod = byrequests ProxySet stickysession = ROUTEID < /代理> < VirtualHost *: 80 > ProxyPreserveHost在ServerName artifactory-cluster ServerAlias *。artifactory-cluster ServerAdmin server@admin ##应用特定日志## ErrorLog ${APACHE_LOG_DIR}/artifactory-cluster-error.log ## CustomLog ${APACHE_LOG_DIR}/artifactory-cluster-access.log combined AllowEncodedSlashes On RewriteEngine On RewriteCond %{SERVER_PORT} (.*) RewriteRule (.*) - [E=my_server_port:%1] ##'REQUEST_SCHEME'报头仅在apache 2.4及以上版本支持RewriteCond %{REQUEST_SCHEME} (.*) RewriteRule (.*) - [E=my_scheme:%1] RewriteCond %{HTTP_HOST} (.*) RewriteRule (.*) - [E=my_custom_host:%1] RewriteCond "%{REQUEST_URI}" "^/(v1|v2|)/" RewriteCond "%{HTTP_HOST}" "^(.*)\。artifactory-cluster$" RewriteRule "^/v3/(.*)$" "/artifactory/api/puppet/%1/v3/$1" [PT] RewriteRule "^/(v1|v2)/(.*)$" /artifactory/api/docker/%1/$1/$2" [PT] RewriteRule ^/$ /artifactory/webapp/ [R,L] RewriteRule ^/artifactory(/)?$ /artifactory/webapp/ [R,L] RewriteRule ^/artifactory/webapp$ /artifactory/webapp/ [R,L] RequestHeader set Host %{my_custom_host}e RequestHeader set X-Forwarded-Port %{my_server_port}e ##{my_scheme}需要一个只有apache 2.4及以上版本支持的模块RequestHeader set X-Forwarded-Proto %{my_scheme}e RequestHeader set x - artifactory- overoverride - base - url %{my_scheme}e://artifactory-cluster:%{my_server_port}e/artifactory ProxyPassReverseCookiePath /artifactory/artifactory ProxyRequests off ProxyPreserveHost on ProxyPass /artifactory/ balancer://artifactory/artifactory/ ProxyPassReverse /artifactory/ balancer://artifactory/artifactory/ Header add set - cookie“ROUTEID = e % {BALANCER_WORKER_ROUTE};path=/artifactory/" env=BALANCER_ROUTE_CHANGED  . path=/artifactory/

一旦配置了反向代理,就可以使用以下命令从Artifactory安装模块:

端口的方法

Puppet模块安装——module_repository http://localhost:8001 puppetlabs-apache


子域法

Puppet模块安装——module_repository http://puppet-virtual.artifactory-cluster puppetlabs-apache

REST API

以下REST API端点可用来促进使用Puppet进行配置管理的自动化。Artifactory还使用这些端点来支持librarian-puppet而且r10k客户:

  • 没有标签
版权所有©2022 JFrog Ltd.