Khởi tạo chuỗi kí tự ngẫu nhiên trên Terraform – Cuongquach.com | Khi bạn sử dụng chương trình Terraform để khởi tạo các resource hạ tầng của bạn, thì có những lúc bạn phát sinh nhu cầu muốn khởi tạo một chuỗi kí tự ngẫu nhiên. Có thể dùng trong các mục đích như :
- Tạo ra một resource với tên có tính duy nhất, nên cần kèm theo giá trị chuỗi ngẫu nhiên.
- Tạo ra mật khẩu để setup cho database và in mật khẩu đó ra ở phần ‘output’.
Thật tốt vì Terraform có hỗ trợ ‘resources‘ để bạn thực hiện được việc đó mang tên resources random_string: LINK
Khởi tạo chuỗi kí tự ngẫu nhiên trên Terraform
Giờ ví dụ lab thì mình tạo ra 2 resource giúp khởi tạo một chuỗi kí tự chữ cái viết hoa và chuỗi kí tự toàn số, với độ dài mỗi chuỗi là 10. Mình sẽ tạo ra một máy chủ AWS EC2 Instance và tên của EC2 Instance này sẽ là sự kết hợp 2 chuỗi, còn lại ở phần tag.
Lưu ý:
- Các bạn có thể kích hoạt các option khác nhau để phục vụ nhu cầu khởi tạo chuỗi kí tự khác nhau.
Giờ ta tạo một template Terraform phục vụ nhu cầu lab của chúng ta nào.
# vi ec2.tf provider "aws" { access_key = "xxxxx" secret_key = "xxxxx" region = "ap-southeast-1" } resource "random_string" "rd_upper" { length = 10 upper = true lower = false number = false special = false } resource "random_string" "rd_number" { length = 10 upper = false lower = false number = true special = false } resource "aws_instance" "cuongquachlab" { count = 1 ami = "ami-0e8baaccc62ee0a9f" instance_type = "t2.micro" key_name = "demo-key" tags = { Name = "EC2-${random_string.rd_upper.result}-${random_string.rd_number.result}" Random_Upper = "${random_string.rd_upper.result}" Random_Number = "${random_string.rd_number.result}" } }
Giờ khởi chạy tạo ra resource EC2 Instance với thông tin có chứa chuỗi kí tự ngẫu nhiên nào.
# terraform init # terraform plan # terraform apply -auto-approve
Sau khi khởi tạo xong bạn có thể coi thông tin ở 2 dạng, terraform cli và giao diện EC2 console aws.
# terraform show # aws_instance.cuongquachlab[0]: resource "aws_instance" "cuongquachlab" { ami = "ami-0e8baaccc62ee0a9f" arn = "xxxx" associate_public_ip_address = true availability_zone = "ap-southeast-1b" cpu_core_count = 1 cpu_threads_per_core = 1 disable_api_termination = false ebs_optimized = false get_password_data = false id = "i-070121203d6bfaaaa" instance_state = "running" instance_type = "t2.micro" ipv6_address_count = 0 ipv6_addresses = [] key_name = "demo-key" monitoring = false primary_network_interface_id = "eni-0711c986919dfbe96" private_dns = "ip-172-31-1-44.ap-southeast-1.compute.internal" private_ip = "172.31.1.44" public_dns = "ec2-3-1-6-211.ap-southeast-1.compute.amazonaws.com" public_ip = "3.1.6.199" security_groups = [ "default", ] source_dest_check = true subnet_id = "subnet-55b47aaa" tags = { "Name" = "EC2-YNLLKKKXBL-5098351781" "Random_Number" = "5098351781" "Random_Upper" = "YNLLKKKXBL" } tenancy = "default" volume_tags = {} vpc_security_group_ids = [ "sg-d4399xxx", ] credit_specification { cpu_credits = "standard" } root_block_device { delete_on_termination = true encrypted = false iops = 100 volume_id = "vol-0974c474f5008xxxx" volume_size = 30 volume_type = "gp2" } } # random_string.rd_number: resource "random_string" "rd_number" { id = "5098351781" length = 10 lower = false min_lower = 0 min_numeric = 0 min_special = 0 min_upper = 0 number = true result = "5098351781" special = false upper = false } # random_string.rd_upper: resource "random_string" "rd_upper" { id = "YNLLKKKXBL" length = 10 lower = false min_lower = 0 min_numeric = 0 min_special = 0 min_upper = 0 number = false result = "YNLLKKKXBL" special = false upper = true }
Hoặc trên giao diện AWS EC2 Console.
Thật đơn giản để bạn có thể sử dụng nhu cầu khởi tạo một chuỗi kí tự ngẫu nhiên trên Terraform phải không nào .
Nguồn: https://cuongquach.com/