日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab

發布時間:2023/11/8 C# 40 coder
生活随笔 收集整理的這篇文章主要介紹了 快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Walrus 是一款基于平臺工程理念的開源應用管理平臺,致力于解決應用交付領域的深切痛點。借助 Walrus 將云原生的能力和最佳實踐擴展到非容器化環境,并支持任意應用形態統一編排部署,降低使用基礎設施的復雜度,為研發和運維團隊提供易用、一致的應用管理和部署體驗,進而構建無縫協作的軟件交付流程。
?

在本篇文章中,我們將手把手帶您創建 AWS GitLab 模板,并使用 Walrus 在 AWS EC2 實例上部署一個 GitLab 服務器。
?

使用前提

  1. 用于存儲模板的 GitHub 或 Gitlab 倉庫。

  2. 安裝 Walrus(https://seal-io.github.io/docs/zh/deploy/standalone)。
    ?

在 GitHub 上新建倉庫

  1. 在 GitHub 上新建一個倉庫,這里我們使用的是 demo 版本庫。

  2. 將版本庫克隆到本地。

?

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 http://169.254.169.254/latest/meta-data/public-ipv4)
                    curl -fsSL https://get.docker.com | 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 = "http://${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"
}

# @hidden
variable "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 = "http://${aws_instance.gitlab.public_ip}"
  }

?

README.md文件是對模板的描述。在使用該模板創建服務時,它將顯示給用戶。
?

在此,我們可以使用 terraform-docs 工具生成模板說明。你需要根據項目文檔在筆記本電腦上安裝該工具,然后運行以下命令為模板生成 README.md 文件。

 terraform-docs markdown . > README.md

?

生成的 README.md 文件內容如下:

# Gitlab on AWS

This 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 上創建一個模板

  1. 在瀏覽器中打開 Walrus 并登錄。

  2. 選擇 Operations Hub 中的 Template ,然后選擇我們最近創建的模板來制作一個新模板。這里我們將此模板命名為 gitlab-on-aws
    ?


?

Walrus 同步模板后,可以在 Operations Hub 中看到此模板。

?

導入任務完成后,可以發現模板顯示在列表中。需要注意的是該模板有兩個版本:v0.0.1v0.0.2。


?

在 AWS 上部署 Gitlab 服務器

Operations HubConnectors 中添加 AWS。


?

在環境中添加 connector。

?

利用 gitlab-on-aws 模板創建服務。UI 表單中的分組和標簽是根據我們之前定義的模板變量中對應的注釋動態生成的。輸入變量在模板的 variables.tf 文件中列出。為確保網絡流量管理,EC2 實例需要一個安全組。我們可以創建一個名為all-open的安全組來允許所有網絡流量,為了增強安全性,可以根據需要自定義規則。
?


?

在 AWS 目標區域創建安全組后,就可以保存和應用服務了。


?

部署完成后,Gitlab 實例就能在 AWS 上成功配置了。

?

GitLab URL 將顯示在輸出結果中。獲得 URL 后,就可以訪問 GitLab 服務器了。

?

總 結

以上就是在 Walrus 中創建模板的全步驟,我們借助 Walrus 大大簡化了部署流程。此外,Walrus 還兼容 Terraform 社區的大量成熟模板,只需輕輕一點,即可輕松采用最佳實踐。
?

歡迎小伙伴們試用 Walrus,如果您喜歡我們的項目,可以在 GitHub 上為我們點亮星星??
?

項目地址:https://github.com/seal-io/walrus
?

總結

以上是生活随笔為你收集整理的快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。