Chuyển đến nội dung chính

Cách viết và dùng một terraform module.

 

Chắc hẵn các bạn đã nghe qua terraform module, terraform module là những modun mà việc sử dụng lại module đó cho nhiều component khác nhau. 

Ví dụ bạn muốn tạo nhiều keyvault khác nhau nhưng thay vì mỗi khi tạo keyvault bạn phải viết nguyên một cái resource dài nhằng, bạn có thể viết một module rồi phía ngoài bạn muốn tạo bao nhiêu keyvault khác nhau bạn chỉ cần khai báo tên và các parameter kèm theo của keyvault đó. 

Vậy cấu trúc khi viết một mudun trong terraform như thế nào. 



Hình trên là cấu trúc thư mục và file của một modun terraform điển hình. 

Các file main.tf và variables.tf của modun được bỏ vào thư mục Modules và thư mục con là tên của một resource. Trong hình trên modun đó là Resource_Group trong Azure Cloud. 

Vậy trong file main.tf có gì. 

Trước tiên bạn muốn viết resource group có những parameter nào thì bạn lên trang terraform: 

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group

resource "azurerm_resource_group" "example_rg" {

    name     = var.resource_group_name

    location = var.location

    tags     = var.tags

Trong đó biến name và location là bắt buộc, biến tags thì là option. 

Như vậy 3 biến trên đều khai trong file variables.tf 

variable "resource_group_name" {

    description = "The name of the module demo resource group in which the resources will be created"

    type = string

    default     = "example_module_rg"

}

variable "location" {

    description = "The location where module demo resource group will be created"

    type = string

    default     = "East Us"

}

variable "tags" {

    description = "A map of the tags to use for the module demo resources that are deployed"

    type        = map(string)

    default = {

        environment = "Example"

        Owner = "vcloud-lab.com"

    }

}

Các giá trị type là phải khai báo trong file variables.tf của modun terraform.

Hai file main.tf và variables.tf trên được bỏ trong thư mục Modules > Resource_Group 

Phía ngoài file main.tf mình khai báo trỏ vào thư mục module như sau: 


# Configure the Microsoft Azure Provider

provider "azurerm" {

  features {}

}


module "Demo_Azure_Module_RG" {

    source = "./Modules/Resource_Group"

    resource_group_name = "demo_RG"

    location = "West US"

    tags = {

        environment = "DemoRG"

        Owner = "http://vcloud-lab.com"

    }

}

Biến source = được trỏ tới Resource_Group trong folder modun. Và 3 parameters trong file variables.tf trong modun cần phải được khai báo trong file main.tf phía ngoài. 

Và trong trường hợp bạn muốn tao nhiều hơn 1 Resource group thì mình define theo sau: 

module "Demo_Azure_Module_RG_2" {

    source = "./Modules/Resource_Group"

    resource_group_name = "demo_RG_2"

    location = "West US"

    tags = {

        environment = "DemoRG"

        Owner = "http://devopstechhub.com"

    }

}

Như vậy ta có thể tạo 2 resource group dùng chung 1 modun duy nhất. 


Nhận xét

Bài đăng phổ biến từ blog này

Trang web medium.com chết, vì sao ?

 Medium.com là trang web có những bài viết về IT, phần mềm và công nghệ nói chung rất phổ biến và chất lượng.  Nhưng khoảng 1 tuần nay không vào được bằng cả mạng viettel và 4G của Mobi phone.  Dân It thường tham khảo các bài viết trên trang này. Nhiều bài viết hay và chất lượng. là một cơ sở dữ liệu lớn cho dân IT nhưng đã bị chặn.  Các bài viết này thường thì có tính quy chuẩn và dài hơn, các topic có chất lượng hơn so với stackoverflow.  Nhưng các subdomain thì vẫn truy cập được như:  https://about.medium.com Bạn có thể tham khảo lý do vì sao medium.com bị chặn ở Việt nam. tại trang tinh tế:  Nói chung mình không thích điều này.  https://tinhte.vn/thread/website-medium-khong-truy-cap-duoc-la-do-website-chet-hay-chan-ip-viet-nam-nhi.3231608/

GitHub Actions là gì ? Làm quen với GitHub Actions.

  Như ta đã biết github là nới chứa source code nổi tiếng thế giới hiện nay, ngoài github còn có gitlab, bitbucket, codecommit, ... Cơ bản github miễn phí cho người dùng developer, nếu nhu cầu sử dụng nhiều repo cũng như project có nhiều thanh viên developer tham gia thì bạn có thể mua bản nâng cao.  Về tiến trình CI/CD process, chúng ta có thể biết tới như Jenkins, Team City, Codepipeline trên AWS, ...  GitHub Actions mới ra đời gần đây , ngày 13 tháng 11 năm 2019, GitHub Actions ra phiên bản đầu tiên, trước đó khoảng 1 năm bản beta ra đời.  Tham khảo tại đây : https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/ GitHub Actions khá đơn giản, khi tiến trình build, test và deploy được viết trong một file có định dạng yaml nằm trong thư mục .github/workflows/ trong chính source code của bạn.  GitHub Actions là một event-driven nghĩa là chương trình chạy một loạt các dòng lệnh khi bạn nhận được 1 event, ví dụ mỗi lần một developer nào đó tạo một pull request cho một repositor

Cách sử dụng sys.argv trong python.

Cách sử dụng sys.argv trong python. sys.argv là môt danh sách [list] trong python, nó được sư dụng khi bạn chạy một lệnh command-line nào đó trên hệ thống. Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh. Ví dụ: python sys.argv arg1 arg2 Trước tiên bạn phải import mô đun sys trong script. import sys print "This is the name of the script: " , sys . argv [ 0 ] print "Number of arguments: " , len ( sys . argv ) print "The arguments are: " , str ( sys . argv ) Tên của script này : sysargv.py Số lượng arg là : 1 Arg là : ['sysargv.py'] python test1020.py 111 This is the name of the script:  test1020.py Number of arguments:  2 The arguments are:  ['test1020.py', '111']