Artifactory Terrafrom plugin來了!

JFrog傑蛙科技發表於2020-12-11

前言

隨著多雲環境和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例項中可靠地複製這些配置。

 

 

透過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官方指南:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2741564/,如需轉載,請註明出處,否則將追究法律責任。

相關文章