Artifactory Terrafrom plugin來了!

前言
隨着多雲環境和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 = "[email protected]"
groups = ["logged-in-users", "readers", “fe-dev”]
password = ${var.artifactory_default_pw}
}
resource "artifactory_user" "fe-user-dev1" {
name = "sanjayr"
email = "[email protected]"
groups = ["logged-in-users", "readers", “fe-dev”]
password = ${var.artifactory_default_pw}
}
resource "artifactory_user" "fe-user-dev2" {
name = "ericb"
email = "[email protected]"
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章