关于devops:Artifactory-Terrafrom-plugin来了

6次阅读

共计 3522 个字符,预计需要花费 9 分钟才能阅读完成。

前言

随着多云环境和 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 配置 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…

正文完
 0