Artifactory Terrafrom plugin来了!

Tommy744
• 阅读 1135

前言

随着多云环境和DevOps普及,越来多的DevOps工程师要面临云上与云下资源的自动化管理问题。 作为全球领先的Artifact Managenment软件供应商,JFrog的Artifactory也被众多知名企业采用,成为当前最流行的devops工具之一。那么通过什么方法能够在我们的云环境中快速部署一套Artifactory呢?相信大家都会立刻想起另外一个知名的IaC工具terraform。 JFrog正式提供了terraform插件,可以让大家通过IaC的方式快速部署Artifactory。

T****erraform****新增Artifactory插件****

Terraform是HashiCorp提供的基础架构即代码工具,可用于以安全,可重复的方式构建,更改和管理基础架构。 使用称为HashiCorp配置语言(HCL)的配置语言,操作员和基础架构团队可以通过易于理解的自动化部署来管理环境。

Terraform的Artifactory Provider是一个免费插件,该插件扩展了HCL以能够构建Artifactory实例。它使基础架构管理员可以通过Terraform脚本配置Artifactory信息库,权限等。

一旦能够自动完成Artifactory的配置,便可以在多个Artifactory实例或数百个Artifactory实例中可靠地复制这些配置。

Artifactory Terrafrom plugin来了!

通过Terraform Provider加载Artifacotry配置

可以通过将以下代码段添加到.tf文件中来在Terraform脚本中启用该插件。 required_providers声明将自动从Terraform注册表中加载插件。

terraform {

required_providers {

artifactory = {

source = “jfrog/artifactory”

version = “2.2.4”

}

}

}

variable “artifactory_url” {

description = “The base URL of the Artifactory deployment”

type = string

}

variable “artifactory_username” {

description = “The username for the Artifactory administrator”

type = string

}

variable “artifactory_password” {

description = “The password for the Artifactory administrator”

type = string

}

provider “artifactory” {

# Configuration options

url = “${var.artifactory_url}”

username = “${var.artifactory_username}”

password = “${var.artifactory_password}”

}

需要注意以上配置文件通过明文存储Artifacotry的登录信息,因此对provider的配置文件建议通过权限设定用户读取的范围。另外也可以参考以下文章官方处理terraform中secrt信息的方法(https://blog.gruntwork.io/a-comprehensive-guide-to-managing-secrets-in-your-terraform-code-1d586955ace1#4df5

并且Artifactory除了使用用户名/密码方式外,还可以使用API key或者access token方式进行访问。

通过resource方法创建****Repositories****

在使用terraform的artifactory 插件后可以resource字段定义一个Artifacotry的仓库,这个也是terraform标准语法对象,完全没有改变terraform玩家的使用习惯

# Create a new repository

resource “artifactory_local_repository” “pypi-libs” {

key = “terraform-pypi-libs”

package_type = “pypi”

repo_layout_ref = “simple-default”

description = “A pypi repository for python packages”

}

这里我们创建了一个名为terraform-pypi-libs的python仓库,同样地这个aritfactory插件同时还能通过resource方法创建remote合virtual类型的仓库。

通过resource配置A****rtifactory Users, Groups, and Permissions****

同样可以将resource添加到Terraform脚本中,以配置可以使用特定权限访问Artifactory存储库的用户和组。例如,您可以编写脚本来为可以访问您创建的存储库的前端开发人员团队创建一组用户。

# Create a new Artifactory group for the team

resource “artifactory_group” “fe-group” {

name = “fe-dev”

description = “Front End Development Team”

admin_privileges = false

}

# Create new Artifactory users for the team

resource “artifactory_user” “fe-user-lead” {

name = “aliyahm”

email = “aliyahm@mycompany.com

groups = [“logged-in-users”, “readers”, “fe-dev”]

password = ${var.artifactory_default_pw}

}

resource “artifactory_user” “fe-user-dev1” {

name = “sanjayr”

email = “sanjayr@mycompany.com

groups = [“logged-in-users”, “readers”, “fe-dev”]

password = ${var.artifactory_default_pw}

}

resource “artifactory_user” “fe-user-dev2” {

name = “ericb”

email = “ericb@mycompany.com

groups = [“logged-in-users”, “readers”, “fe-dev”]

password = ${var.artifactory_default_pw}

}

# Create a new Artifactory permission target called fe-perm

resource “artifactory_permission_target” “fe-perm” {

name = “fe-perm”

repo {

includes_pattern = [“foo/**”]

excludes_pattern = [“bar/**”]

repositories = [“terraform-pypi-libs”]

actions {

users {

name = “markz”

permissions = [“read”, “write”]

}

groups {

name = “fe-dev”

permissions = [“read”, “write”]

}

}

}

}

除了管理存储库和凭证之外,Artifactory Terraform Provider还支持以下内容:

replication配置

您可以通过提供程序创建和管理Artifactory存储库复制。 设施可用于多站点复制配置或单个Artifactory复制。

证书

Artifactory证书资源可用于创建和管理Artifactory证书,以针对远程存储库进行客户端身份验证。

Data source

数据源使数据能够被提取或计算,以在Terraform配置中的其他地方使用。 Artifactory Provider为Artifactory存储库文件和Artifactory存储库中存储的文件的元数据提供了可用的数据源。

最后如果想了解所有Artifacotry terraform Provider的资源可以参考terraform官方指南:https://registry.terraform.io/providers/jfrog/artifactory/latest/docs

本文转自 https://www.kubernetes.org.cn/8702.html,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
11个月前
KubeSphere DevOps 初体验,内置 Jenkins 引擎
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 支持部署在任何基础设施环境,提供在线与离线安装,支持一键升级与扩容集群,并且
Stella981 Stella981
11个月前
DevOps简介
DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。 **DevOps的概念** DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和
Stella981 Stella981
11个月前
DevOps 初学者宝典
**什么是DevOps** 随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发—测试—发布)模式已经不能满足快速交付的需求。2009 年左右 DevOps 应运而生,简单地来说,就是更好的优化开发(DEV)、测试(QA)、运维(OPS)的流程,开发运维一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。 ![DevOps
Stella981 Stella981
11个月前
DevOps简单介绍
jenkins作为测试环境代码发布工具,sonar作为静态代码检查工具,idea作为开发工具,jira作为缺陷管理平台,upstream作为code review工具(正在研究)。DevOps最近比较火热,但是核心貌似都是jenkins DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式
Stella981 Stella981
11个月前
DevOps路线图
随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发—测试—发布)模式已经不能满足快速交付的需求。2009 年左右 DevOps 应运而生,简单地来说,就是更好的优化开发(DEV)、测试(QA)、运维(OPS)的流程,开发运维一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。 过去的一年,越来越多的公司正在转型Dev
Stella981 Stella981
11个月前
DevOps第一讲:什么是DevOps
DevOps概念早先升温于2009年的欧洲,因传统模式的运维之痛而生。 ![](https://static.oschina.net/uploads/img/201707/22121051_DBdW.jpg) DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过DevOps其实包含了四个部分:产品、开发、测试和运维。 !
Stella981 Stella981
11个月前
Android蓝牙连接汽车OBD设备
//设备连接 public class BluetoothConnect implements Runnable {     private static final UUID CONNECT_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
Stella981 Stella981
11个月前
DevOps背景下的分合之事
DevOps倡导“谁开发,谁运维”和开发运维一体化。那么是不是简单地把开发和运维人员放在一起就完事了呢? 01 — “插队”的故事 小明入职时是运维专员,原来隶属于运维部门,负责某业务线系统的应用维护工作。一旦系统的生产环境出现任何故障,或者业务人员在生产环境上有任何请求,都是由小明所在的运维部门先处理,处理不了的,再联系该系
Stella981 Stella981
11个月前
DevOps运维系统:监控管理
ITIL 4的监控管理 ----------- 在DevOps风行的当下,人们越来越关注自动化运维。其中,监控预告警、监控自愈越发流行起来。在《DevOps实践指南》和《持续交付 发布可靠软件的系统方法》两本书中(DevOps的教科书级别),都有涉及讲解监控管理和实施。其实,监控早不是什么新概念,运维界无论在理论还是工具中,一直在不断探索。监控管理虽然在I
3A网络 3A网络
5天前
理解 virt、res、shr 之间的关系(linux 系统篇)
# 理解 virt、res、shr 之间的关系(linux 系统篇) **前言** 想必在 linux 上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题 —— 你的程序在运行时占用了多少内存(物理内存)? 通常我们可以通过 t
3A网络 3A网络
5天前
开发一个不需要重写成 Hive QL 的大数据 SQL 引擎
# 开发一个不需要重写成 Hive QL 的大数据 SQL 引擎 学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。 各种知识表象看杂乱无章,若只是学习