Chạy mã python trong địa hình

Lưu ý rằng đây là trường hợp sử dụng khác với trường hợp thực thi tập lệnh bash/powershell trên máy ảo quay vòng. Trên AWS, bạn sẽ sử dụng Trình quản lý hệ thống hoặc trường dữ liệu người dùng trên EC2. Trên GCP, bạn sẽ sử dụng metadata_startup_script (Tôi đã viết một vài bài về tập lệnh khởi động siêu dữ liệu của GCP tại đây)

Cũng đọc, Mô-đun có thể tái sử dụng và mô-đun gọi từ cơ quan đăng ký địa hình công khai

Bước 1 – Chính của bạn. tf cần một định nghĩa tài nguyên như hình dưới đây

(Giả sử bạn đã tạo một thư mục tập lệnh chứa tệp hello. sh. Giữ cho nó đơn giản, xin chào. sh chỉ có tiếng vang “Xin chào Terraform”)

resource "null_resource" "execfile" { provisioner "local-scripts" { command = "${path.module}/hello.sh" interpreter = ["/bin/bash"] } }

Mẹo 1 – Lưu ý trình thông dịch (bash). Bạn cũng có thể làm powershell trong đó hoặc python

Mẹo 2 – Để định cấu hình đường dẫn liên quan đến tệp trình bao của bạn , chúng tôi sử dụng  đường dẫn. mô-đun

Bước 2 - Gọi mô-đun từ cấu hình địa hình của bạn

module "execfile" { source = "../Modules/scripts" }

Bước 3 – Chạy terraform (sau khi đã chỉnh sửa cấu hình như hình trên)

Sau đó, trong bước 3, chúng tôi đã viết cấu hình Terraform gọi mô-đun này. Cuối cùng, trong bước 4, chúng tôi chạy Terraform trên mã này và chúng tôi nhận được kết quả sau

Bước này viết ra cấu hình có thể được sử dụng để chạy tập lệnh

terraform init terraform plan -out="app.tfplan" terraform apply app.tfplan

Bản tóm tắt

Đó là nó. Thật đơn giản để chạy tập lệnh tùy chỉnh từ bên trong mô-đun. Ngoài ra, hãy nhớ rằng đây là một trường hợp sử dụng khác với việc thực thi các tập lệnh khởi động VM (bash hoặc powershell). Trường hợp sử dụng này được sử dụng để thực hiện một tác vụ – ví dụ:. g. – bạn có thể muốn liên hệ và tìm nạp thông tin xác thực từ một hệ thống bên ngoài, trước khi chạy mô-đun địa hình của mình. Mã tìm nạp đó sẽ đi vào tập lệnh shell của bạn và được gọi bằng kỹ thuật trên

Bước tiếp theo?



Cần một Mạng đám mây có kinh nghiệm hoặc Chuyên gia bảo vệ dữ liệu đám mây? . Thiết lập thời gian với Anuj Varma

Cần trợ giúp với Terraform hoặc PowerShell hoặc nỗ lực tự động hóa khác của bạn? .   

python-terraform là một mô-đun python cung cấp trình bao bọc của công cụ dòng lệnh terraform. Thêm chi tiết tại đây

Cài đặt đơn giản

pip install python-terraform

Bây giờ chúng ta có thể sử dụng tập lệnh python để tương tác với terraform. Trong ví dụ này, chúng tôi sẽ chuyển số lượng phiên bản dưới dạng biến thành tập lệnh python và các phiên bản mới sẽ được tạo

tập lệnh Python

 

#!/bin/python enter = int(input('Enter number of instances: ')) from python_terraform import * tf = Terraform(working_dir='/home/ja/terraform/demo-3', variables={'count':enter}) tf.plan(no_color=IsFlagged, refresh=False, capture_output=True) approve = {"auto-approve": True} print(tf.plan()) print(tf.apply(**approve))

 

biến = {'đếm'. đi vào}

đếm là tên biến được chỉ định trong vars. tf, enter là biến được chỉ định trong tập lệnh python mà chúng ta sẽ chuyển số lượng phiên bản một cách tương tác

Bởi vì biến enter là biến nên dấu ngoặc đơn phải được loại bỏ, nếu không, dấu ngoặc kép cũng cần được đặt xung quanh biến đó

 

Tập lệnh đang chạy ở trên sẽ tạo ra nhiều phiên bản như chúng tôi đã chỉ định tại dấu nhắc

 

Các tệp trong thư mục /home/ja/terraform/demo-3

trường hợp. tf

resource "aws_instance" "example" { ami = "${lookup(var.AMIS, var.AWS_REGION)}" instance_type = "t2.micro" count="${var.count}" tags { Name="${format("test-%01d",count.index+1)}" } output "ime" { value = ["${aws_instance.example.*.tags.Name}","${aws_instance.example.*.public_ip}"] }

 

lọ. tf (tệp biến)

 

variable "AWS_ACCESS_KEY" { } variable "count" { default=2 } variable "AWS_SECRET_KEY" { } variable "AWS_REGION" { default = "eu-west-1" } variable "AMIS" { type = "map" default = { us-east-1 = "ami-13be557e" us-west-2 = "ami-06b94666" eu-west-1 = "ami-844e0bf7" } }

 

các nhà cung cấp. tf

 

provider "aws" { access_key = "${var.AWS_ACCESS_KEY}" secret_key = "${var.AWS_SECRET_KEY}" region = "${var.AWS_REGION}" }

 

Quảng cáo

Chia sẻ cái này

  • Twitter
  • Facebook

Như thế này

Thích Đang tải.

Có liên quan

Bình luận

  1. Ike Kim nói.

    khi tôi thử cách trên, tôi gặp lỗi này sau khi nhập số lượng phiên bản. “Không tìm thấy tệp cấu hình nào. \n\nKế hoạch yêu cầu phải có cấu hình. Lập kế hoạch mà không có cấu hình\nsẽ đánh dấu mọi thứ để phá hủy, điều này thường không phải là điều mong muốn. ”

    Tôi có thể sử dụng Python với địa hình không?

    Terraform đã có bản beta Terraform CDK, cho phép bạn trực tiếp sử dụng Python (hoặc bất kỳ ngôn ngữ lập trình nào khác được hỗ trợ) để khai báo cơ sở hạ tầng của bạn , giúp việc kiểm tra dễ dàng hơn nhiều.

    Địa hình trong Python là gì?

    python-terraform là mô-đun python cung cấp trình bao bọc của công cụ dòng lệnh terraform . terraform là một công cụ được tạo bởi Hashicorp, vui lòng tham khảo https. // địa hình. io/

    terraform script là gì?

    Terraform là công cụ IAC, chủ yếu được các nhóm DevOps sử dụng để tự động hóa các tác vụ cơ sở hạ tầng khác nhau . Chẳng hạn, việc cung cấp tài nguyên đám mây là một trong những trường hợp sử dụng chính của Terraform. Đó là một công cụ cung cấp mã nguồn mở, không phụ thuộc vào đám mây được viết bằng ngôn ngữ Go và được tạo bởi HashiCorp.

    Một vật cố định trong địa hình là gì?

    Đồ đạc Terraform . terraform khởi tạo Terraform trong một không gian làm việc, infra chạy terraform plan và áp dụng terraform để xây dựng cơ sở hạ tầng và terraform_resource lấy ra bản đồ tài nguyên. a dictionary of Terraform resources read from the Terraform state file. terraform initializes Terraform in a workspace, infra runs terraform plan and terraform apply to build the infrastructure, and terraform_resources pulls out the resource map.

Chủ đề