Artifactory Terrafrom plugin來了!
前言
隨著多雲環境和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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自建Maven倉庫 - ArtifactoryMaven
- 來了來了,CSS 版的冰墩墩來了……CSS
- 它來了 它來了。Laravel Reverb 到來了Laravel
- 來了,來了,你們要的Nginx教程來了Nginx
- 一個為了讓console.log寫起來更偷懶的webpack-pluginWebPlugin
- 使用JFrog Artifactory Open Source 搭建私服
- Artifactory使用命令列構建整合命令列
- 使用Prometheus、Grafana監控Artifactory實踐PrometheusGrafana
- SpringAI 她來了,真的來了SpringAI
- 它來了,它來了,HarmonyOS應用開發線上體驗來了
- 他來了! 他來了! 他帶著 Gopher 專屬衛衣來了~Go
- JQuery Plugin 2 - Passing Options into Your PluginjQueryPlugin
- maven assembly plugin,maven dependency plugin的使用MavenPlugin
- RPM索引在Artifactory中是如何工作索引
- Artifactory & GitLab CI持續整合實踐Gitlab
- 繞開Docker Hub下載限制:JFrog ArtifactoryDocker
- 它來了它終於來了- Beego 1.12.2Go
- Maven - No plugin found for prefix 'war' in the current project and in the plugin groupsMavenPluginProject
- 使用Artifactory叢集作為檔案共享中心
- 如何使用Nginx對Artifactory進行http應用NginxHTTP
- Webpack的pluginWebPlugin
- Vue 3.0 來了!Vue
- Angular 6 來了Angular
- 哇!React 來了。。React
- Angular 5 來了!Angular
- Artifactory製品庫的密碼管理及策略配置密碼
- 用artifactory搭建maven2內部伺服器Maven伺服器
- 使用Maven打包你的應用——maven-jar-plugin & maven-assembly-plugin & maven-shade-pluginMavenJARPlugin
- chrome extension/plugin pathChromePlugin
- Framework + plugin架構FrameworkPlugin架構
- React 18 Beta來了React
- Swift 5 要來了!Swift
- JAVA的春天來了Java
- Java EE 8 來了Java
- ituring,我來了
- Angular 19 "要" 來了⚡Angular
- JDK 12又來了,我學不動了...JDK
- PHP 7 來了,PHP 6 去哪兒了?PHP