快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab
Walrus 是一款基於平臺工程理念的開源應用管理平臺,致力於解決應用交付領域的深切痛點。藉助 Walrus 將
雲原生的能力和
有效實踐擴充套件到非容器化環境,並
支援任意應用形態統一編排部署,降低使用基礎設施的複雜度,為研發和運維團隊提供易用、一致的應用管理和部署體驗,進而構建無縫協作的軟體交付流程。
在本篇文章中,我們將手把手帶您建立 AWS GitLab 模板,並使用 Walrus 在 AWS EC2 例項上部署一個 GitLab 伺服器。
使用前提
-
用於儲存模板的 GitHub 或 Gitlab 倉庫。
-
安裝 Walrus(
在 GitHub 上新建倉庫
-
在 GitHub 上新建一個倉庫,這裡我們使用的是 demo 版本庫。
-
將版本庫克隆到本地。
git clone git@gitlab.com:seal-eyod/gitlab-on-aws.git
建立模板檔案
開啟克隆的版本庫目錄。
cd gitlab-on-aws
在該目錄下建立檔案,如下所示:
- gitlab-on-aws - main.tf - outputs.tf - variables.tf - README.md
main.tf
檔案定義了要建立的資源。在這裡,我們為模板定義了建立 AWS EC2 例項並在其上執行 Gitlab 伺服器的資源。
data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"] } filter { name = "virtualization-type" values = ["hvm"] } owners = ["099720109477"] # Canonical } data "aws_security_group" "selected" { name = var.security_group_name } data "aws_subnets" "selected" { filter { name = "vpc-id" values = [data.aws_security_group.selected.vpc_id] } } resource "aws_instance" "gitlab" { ami = data.aws_ami.ubuntu.id instance_type = var.instance_type subnet_id = data.aws_subnets.selected.ids.0 vpc_security_group_ids = [data.aws_security_group.selected.id] key_name = var.key_name user_data = <<-EOF #!/bin/bash set -ex; public_ip=$(curl ) curl -fsSL | bash && sudo usermod -aG docker ubuntu docker run -d --privileged --restart=always -p 80:80 -p 443:443 \ -e GITLAB_ROOT_PASSWORD="${var.gitlab_root_password}" \ "${var.gitlab_image}" EOF tags = { "Name" = "${var.gitlab_metadata_application_instance_name}-gitlab" } root_block_device { volume_size = var.disk_size } } resource "null_resource" "gitlab_health_check" { depends_on = [ aws_instance.gitlab, ] triggers = { always_run = timestamp() } provisioner "local-exec" { command = "for i in `seq 1 100`; do curl -k -s $ENDPOINT >/dev/null && exit 0 || true; sleep 5; done; echo TIMEOUT && exit 1" interpreter = ["/bin/sh", "-c"] environment = { ENDPOINT = "{aws_instance.gitlab.public_ip}" } } }
variables.tf
檔案定義了模板中使用的變數。Walrus 將使用這些變數生成供使用者填寫的表單。
Walrus 使用
@label
和
@group
來定義變數的標籤和組。可選的
@options
用於定義變數的下拉選項,如果未定義
@options
,變數將在表單中顯示為文字框。
在本示例中,我們定義了兩個組:
Basic
組和
AWS
組。使用此模板建立服務時,表單中將顯示為兩個選項卡。
# @group "Basic"variable "gitlab_image" { type = string description = "gitlab image" default = "gitlab/gitlab-ce"} # @group "Basic"variable "gitlab_root_password" { type = string description = "gitlab root password" default = "seal123456" sensitive = true} # @group "AWS"# @options ["t3.medium", "c5.xlarge"] variable "instance_type" { type = string description = "Instance type" default = "t3.medium"} # @group "AWS"variable "disk_size" { type = number description = "Root disk size in GiB" default = 50} # @group "AWS"variable "key_name" { type = string description = "AWS key name" default = "xueying"} # @group "AWS"variable "security_group_name" { type = string description = "Security group Name" default = "all-open"} # @hiddenvariable "gitlab_metadata_application_instance_name" { type = string description = "gitlab metadata application instance name." default = "bar"}
outputs.tf
檔案定義了服務建立後將顯示給使用者的模板輸出。服務模板的輸出也可以被其他服務引用。在本例中,我們定義了輸出
gitlab_url
,它是 Gitlab 例項的 URL。
output "gitlab_url" { description = "The URL of the GitLab instance" value = "{aws_instance.gitlab.public_ip}" }
README.md
檔案是對模板的描述。在使用該模板建立服務時,它將顯示給使用者。
在此,我們可以使用 terraform-docs 工具生成模板說明。你需要根據專案文件在膝上型電腦上安裝該工具,然後執行以下命令為模板生成
README.md
檔案。
terraform-docs markdown . > README.md
生成的
README.md
檔案內容如下:
# Gitlab on AWSThis is a terraform module that will create a Gitlab instance on AWS.## Providers| Name | Version | |------|---------|| aws | n/a | ## Inputs | Name | Description | Type | Default | Required | |-------------------------------------------|--------------------------------------------|:--------:|:--------------------:|:--------:|| gitlab_image | Gitlab image | `string` | `"gitlab/gitlab-ce"` | no || gitlab_root_password | Gitlab root password | `string` | `"seal123456"` | no || instance\_type | Instance type | `string` | `"t3.medium"` | no || disk\_size | Root disk size in GiB | `number` | `50` | no || security\_group\_name | Security group Name | `string` | `"all-open"` | no || gitlab_metadata_application_instance_name | gitlab metadata application instance name. | `string` | `"bar"` | no |## Outputs| Name | Description | |------------|-------------|| gitlab_url | Gitlab URL |
提交和標記版本
git add . git commit -m "add template files" git push -u origin main
為模板版本建立一個標籤。
git tag v0.0.1 git push --tags
在 Walrus 上建立一個模板
-
在瀏覽器中開啟 Walrus 並登入。
-
選擇
Operations Hub
中的Template
,然後選擇我們最近建立的模板來製作一個新模板。這裡我們將此模板命名為gitlab-on-aws
。
Walrus 同步模板後,可以在 Operations Hub 中看到此模板。
匯入任務完成後,可以發現模板顯示在列表中。需要注意的是該模板有兩個版本:
v0.0.1
和
v0.0.2
。
在 AWS 上部署 Gitlab 伺服器
在
Operations Hub
的
Connectors
中新增 AWS。
在環境中新增 connector。
利用
gitlab-on-aws
模板建立服務。UI 表單中的分組和標籤是根據我們之前定義的模板變數中對應的註釋動態生成的。輸入變數在模板的
variables.tf
檔案中列出。為確保網路流量管理,EC2 例項需要一個安全組。我們可以建立一個名為
all-open
的安全組來允許所有網路流量,為了增強安全性,可以根據需要自定義規則。
在 AWS 目標區域建立安全組後,就可以儲存和應用服務了。
部署完成後,Gitlab 例項就能在 AWS 上成功配置了。
GitLab URL 將顯示在輸出結果中。獲得 URL 後,就可以訪問 GitLab 伺服器了。
總 結
以上就是在 Walrus 中建立模板的全步驟,我們藉助 Walrus 大大簡化了部署流程。此外,Walrus 還相容 Terraform 社群的大量成熟模板,只需輕輕一點,即可輕鬆採用
有效實踐。
歡迎小夥伴們試用 Walrus,如果您喜歡我們的專案,可以在 GitHub 上為我們點亮星星?
專案地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026925/viewspace-2993439/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Walrus 實用教程|Walrus + Gitlab,打通CI/CD 自動化交付!Gitlab
- 使用 Terraform 在 AWS 上快速部署 MQTT 叢集ORMMQQT
- 在aws ec2上使用root使用者登入
- AWS CodePipeline部署Maven專案至EC2Maven
- AWS EC2 上安裝 Docker 的示例Docker
- Udemy AWS SAA - EC2
- AWS EC2 Linux | ssh 使用密碼登入Linux密碼
- Gitlab自動部署之四:使用Gitlab-runner部署Gitlab的專案Gitlab
- 如何在AWS上構建Apache DolphinSchedulerApache
- 如何將應用一鍵部署至多個環境?丨Walrus教程
- AWS雲建立EC2與使用注意事項-踩坑記錄
- 使用docker快速搭建gitlab私服DockerGitlab
- OpenVino快速落地部署教程
- 如何在spring boot 使用 gitlab的ApiSpring BootGitlabAPI
- 部署 packagist私服 搭配gitlab 私服使用Gitlab
- AWS EC2 例項型別命名規則型別
- 將AWS EC2資源下載到本地
- 如何從阿里雲ECS遷移到AWS EC2?阿里
- AWS(amazon ec2)伺服器流量查詢伺服器
- 在 K8s 中快速部署使用 GitLab 並構建 DevOps 專案K8SGitlabdev
- CentOS7系統GitLab安裝部署教程。CentOSGitlab
- AWS Amplify Console:賦予應用程式快速部署的能力
- 在AWS上的架構部署與設計架構
- 企業級GitLab在Docker部署使用GitlabDocker
- 基於ARM的AWS EC2例項上的PG跑起來效能怎麼樣?
- 使用 Terraform 在阿里雲上快速部署 MQTT 叢集ORM阿里MQQT
- docker快速部署DNS,實現快速上線DockerDNS
- PDF Expert使用教程:如何在Mac上使用PDF Expert編輯PDFMac
- DevOps GitLab CICD 實踐1——GitLab 部署devGitlab
- AWS釋出針對Amazon EC2的Apple macOS例項APPMac
- Docker Compose部署GitLabDockerGitlab
- 部署gitlab-01Gitlab
- 如何從 AWS CodeCommit 遷移到極狐GitLab?MITGitlab
- 萬字乾貨! 使用docker部署jenkins和gitlabDockerJenkinsGitlab
- 如何在Mac上快速顯示桌面以便快速訪問Mac
- 后羿 - TenSunS v1.1.0 支援對接AWS的EC2、RDS、ElastiCacheAST
- 使用 KubeSphere 快速部署 Chaos Mesh
- 如何在Mac上OCR PDF教程安利~Mac