前言

随着多云环境和DevOps遍及,越来多的DevOps工程师要面临云上与云下资源的自动化治理问题。 作为寰球当先的Artifact Managenment软件供应商,JFrog的Artifactory也被泛滥知名企业采纳,成为以后最风行的devops工具之一。那么通过什么办法可能在咱们的云环境中疾速部署一套Artifactory呢?置信大家都会立即想起另外一个出名的IaC工具terraform。 JFrog正式提供了terraform插件,能够让大家通过IaC的形式疾速部署Artifactory。

Terraform新增Artifactory插件

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

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

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

通过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配置Artifactory 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...