Cách xây dựng máy chủ Hashicorp Vault bằng Packer và TerraForm trên DigitalOcean

Tác giả chọn miễn phí và Quỹ Open Source để nhận quyên góp như một phần của Viết cho chương trình tài trợ.

Giới thiệu

Vault, bởi Hashicorp, là một công cụ nguồn mở để lưu trữ bí mật an toàn và dữ liệu nhạy cảm trong môi trường đám mây động. Nó cung cấp mã hóa dữ liệu mạnh mẽ, truy cập dựa trên danh tính bằng cách sử dụng các chính sách tùy chỉnh và cho thuê bí mật và thu hồi, cũng như nhật ký kiểm toán chi tiết được ghi lại mọi lúc. Vault cũng có API HTTP, làm cho nó trở thành lựa chọn lý tưởng để lưu trữ thông tin đăng nhập trong các triển khai định hướng dịch vụ rải rác, chẳng hạn như Kubernetes.

Packer và Terrauform, cũng được phát triển bởi Hashicorp, có thể được sử dụng cùng nhau để tạo và triển khai hình ảnh của Vault. Trong quy trình làm việc này, các nhà phát triển có thể sử dụng trình đóng gói để viết hình ảnh bất biến cho các nền tảng khác nhau từ một tệp cấu hình duy nhất, chỉ định những gì hình ảnh nên chứa. Terraform sau đó sẽ triển khai nhiều phiên bản tùy chỉnh của hình ảnh đã tạo khi cần thiết.

Trong hướng dẫn này, bạn sẽ sử dụng Packer để tạo một ảnh chụp nhanh của hệ thống với Vault được cài đặt và phối hợp triển khai của nó bằng cách sử dụng TerraForm. Cuối cùng, bạn sẽ có một hệ thống tự động để triển khai Vault tại chỗ, cho phép bạn tập trung vào việc làm việc với chính Vault và không theo quy trình cài đặt và cung cấp cơ bản.

Điều kiện tiên quyết

  • Packer được cài đặt trên máy cục bộ của bạn. Để được hướng dẫn, hãy truy cập tài liệu chính thức.
  • Terrauform cài đặt trên máy cục bộ của bạn. Để đạt được điều này, hãy theo Bước 1 về cách sử dụng Terraform với hướng dẫn DigitalOcean.
  • Mã thông báo truy cập cá nhân [khóa API] với quyền đọc và ghi cho tài khoản DigitalOcean của bạn. Để tìm hiểu cách tạo một, hãy truy cập Cách tạo mã thông báo truy cập cá nhân từ tài liệu.
  • Khóa SSH bạn sẽ sử dụng để xác thực với các giọt Vault được triển khai, có sẵn trên máy cục bộ của bạn và được thêm vào tài khoản DigitalOcean của bạn. Bạn cũng sẽ cần dấu vân tay của nó, mà bạn có thể sao chép từ trang bảo mật của tài khoản của mình sau khi bạn đã thêm nó. Xem tài liệu DigitalOcean để biết hướng dẫn chi tiết hoặc cách thiết lập hướng dẫn về khóa SSH.

Bước 1 - Tạo một mẫu đóng gói

Trong bước này, bạn sẽ viết một tệp cấu hình đóng gói, được gọi là Mẫu , điều đó sẽ hướng dẫn đóng gói về cách xây dựng một hình ảnh Chứa Vault được cài đặt sẵn. Bạn sẽ viết cấu hình ở định dạng JSON, định dạng tệp cấu hình có thể đọc được con người thường được sử dụng. template, that will instruct Packer on how to build an image that contains Vault pre-installed. Youll be writing the configuration in JSON format, a commonly used human-readable configuration file format.

Đối với mục đích của hướng dẫn này, bạn sẽ lưu trữ tất cả các tệp trong ~ / Vault-dàn dựng . Tạo thư mục bằng cách chạy lệnh sau:

  • MKDIR ~ / Vault-Orchestration

Điều hướng đến nó:

  • CD ~ / Vault-dàn dựng

Bạn sẽ lưu trữ các tệp cấu hình cho Packer và Terraform riêng, trong các thư mục con khác nhau. Tạo chúng bằng lệnh sau:

  • MKDIR Packer TerraForm.

Bởi vì trước tiên bạn sẽ làm việc với Packer, điều hướng đến thư mục của nó:

  • CD Packer.

Sử dụng biến mẫu

Lưu trữ dữ liệu riêng tư và bí mật ứng dụng trong một tệp biến riêng biệt là cách lý tưởng để giữ chúng khỏi mẫu của bạn. Khi xây dựng hình ảnh, Packer sẽ thay thế các biến được tham chiếu với các giá trị của chúng. Các giá trị bí mật mã hóa cứng vào mẫu của bạn là rủi ro bảo mật, đặc biệt nếu nó sẽ được chia sẻ với các thành viên trong nhóm hoặc đưa lên các trang web công cộng, chẳng hạn như GitHub.

Bạn sẽ lưu trữ chúng trong Packer thư mục con, trong một tệp có tên biến.json < / a> . Tạo nó bằng trình soạn thảo văn bản yêu thích của bạn: packer subdirectory, in a file called variables.json. Create it using your favorite text editor:

  • biến nano.json.

Thêm các dòng sau:

~/vault-orchestration/packer/variables.json

{ "do_token": " your_do_api_key ", "Base_System_Image": "Ubuntu-20-04-X64", "Vùng": "FRA1", "Kích thước": "S-1VCPU-1GB" Không

Tệp biến bao gồm một từ điển JSON, bản đồ tên biến thành các giá trị của chúng. Bạn sẽ sử dụng các biến này trong mẫu bạn sắp tạo. Nếu bạn muốn, bạn có thể chỉnh sửa các giá trị kích thước hình ảnh, vùng và giọt cơ sở theo các tài liệu của nhà phát triển.

Hãy nhớ thay thế your_do_api_key Với khóa API của bạn, bạn đã tạo như một phần của điều kiện tiên quyết, sau đó lưu và đóng tệp. < / a >.your_do_api_key with your API key, which you created as part of the prerequisites, and then save and close the file.

Tạo người xây dựng và cung cấp

Với tệp biến đã sẵn sàng, bây giờ bạn sẽ tự tạo mẫu Packer.

Bạn sẽ lưu trữ mẫu Packer cho Vault trong một tệp có tên template.json . Tạo nó bằng trình soạn thảo văn bản của bạn:

  • Mẫu Nano.json.

Thêm các dòng sau:

~/vault-orchestration/packer/template.json

{ "do_token": " your_do_api_key ", "Base_System_Image": "Ubuntu-20-04-X64", "Vùng": "FRA1", "Kích thước": "S-1VCPU-1GB" Không

"Loại": "Shell",builders and provisioners. Builders tell Packer how to build the system image [according to their type] and where to store it, while provisioners contain sets of actions Packer should perform on the system before turning it into an immutable image, such as installing or configuring software. Without any provisioners, you would end up with an untouched base system image. Both builders and provisioners expose parameters for further work flow customization.

"nội tuyến": [digitalocean, which means that when ordered to build an image, Packer will use the provided parameters to create a temporary Droplet of the defined size using the provided API key, with the specified base system image and in the specified region. The format for fetching a variable is {{user 'variable_name'}}, where the highlighted part is its name.

"Ngủ 30",

Các dự phòng thuộc loại shell , sẽ thực thi các lệnh đã đưa ra trên mục tiêu. Các lệnh có thể được chỉ định nội tuyến , dưới dạng một loạt các chuỗi hoặc được xác định trong các tệp tập lệnh riêng biệt nếu chèn chúng vào mẫu trở nên khó khăn do kích thước. Các lệnh trong mẫu sẽ đợi 30 giây để hệ thống khởi động và sau đó sẽ tải xuống và giải nén Vault 1.8.4 . Kiểm tra trang tải xuống Vault chính thức và thay thế liên kết vào các lệnh bằng phiên bản mới hơn cho Linux, nếu có.

Khi bạn hoàn tất, lưu và đóng tệp.

Để xác minh tính hợp lệ của mẫu của bạn, hãy chạy lệnh sau:

  • Packer xác thực -Var-file = biến.json template.json

Packer chấp nhận một đường dẫn đến tệp biến thông qua -var-file đối số.

Bạn sẽ thấy đầu ra sau:

Đầu ra.
The configuration is valid.

Nếu bạn gặp lỗi, Packer sẽ chỉ định chính xác nơi xảy ra, vì vậy bạn sẽ có thể sửa nó.

Bây giờ bạn có một mẫu làm việc tạo ra hình ảnh với Vault được cài đặt, với khóa API và các tham số khác được xác định trong một tệp riêng biệt. Bây giờ bạn đã sẵn sàng để gọi người đóng gói và xây dựng ảnh chụp nhanh.

Bước 2 - Xây dựng ảnh chụp nhanh

Trong bước này, bạn sẽ xây dựng một ảnh chụp nhanh DigitalOcean từ mẫu của mình bằng trình đóng gói Build .

Để xây dựng ảnh chụp nhanh của bạn, hãy chạy lệnh sau:

  • đóng gói -var-file = biến.json template.json

Lệnh này sẽ mất một thời gian để hoàn thành. Bạn sẽ thấy rất nhiều đầu ra, tương tự như thế này:

Đầu ra.
Trong bước này, bạn sẽ xây dựng một ảnh chụp nhanh DigitalOcean từ mẫu của mình bằng trình đóng gói Build . DigitalOcean: Đầu ra sẽ có màu này. ==> DigitalOcean: Tạo khóa RSA SSH tạm thời cho ví dụ ... ==> DigitalOcean: Nhập khóa công khai SSH ... ==> DigitalOcean: Tạo giọt ... ==> DigitalOcean: Chờ đợi giọt nhỏ trở nên hoạt động ... ==> DigitalOcean: Sử dụng SSH Communicator để kết nối: ... ==> DigitalOcean: Chờ SSH có sẵn ... ==> DigitalOcean: Đã kết nối với SSH! ==> DigitalOcean: cung cấp với tập lệnh shell: / tmp / packer-shell464972932 DigitalOcean: Hit: 1 //mirrors.digitalocean.com/ubfox Focal InRelease ... ==> DigitalOcean:% tổng% nhận được% xferd tốc độ trung bình thời gian thời gian hiện tại ==> DigitalOcean: Tải lên Tải lên Tỷ lệ Tốc độ trái ==> DigitalOcean: 100 63,5m 100 63,5m 0 0 110m 0 -: -: - -: - -: - -: -: - 110m DigitalOcean: Lưu trữ: Vault.zip DigitalOcean: Bơm hơi: Vault ==> DigitalOcean: Duyên dáng tắt Droplet ... ==> DigitalOcean: Tạo ảnh chụp nhanh: Packer-1635876039 ==> DigitalOcean: Chờ ảnh chụp nhanh ... ==> DigitalOcean: Phá hủy giọt ... DigitalOcean: Đầu ra sẽ có màu này. ==> DigitalOcean: Tạo khóa RSA SSH tạm thời cho ví dụ ... ==> DigitalOcean: Nhập khóa công khai SSH ... ==> DigitalOcean: Tạo giọt ... ==> DigitalOcean: Chờ đợi giọt nhỏ trở nên hoạt động ... ==> DigitalOcean: Sử dụng SSH Communicator để kết nối: ... ==> DigitalOcean: Chờ SSH có sẵn ... ==> DigitalOcean: Đã kết nối với SSH! ==> DigitalOcean: cung cấp với tập lệnh shell: / tmp / packer-shell464972932 DigitalOcean: Hit: 1 //mirrors.digitalocean.com/ubfox Focal InRelease ... ==> DigitalOcean:% tổng% nhận được% xferd tốc độ trung bình thời gian thời gian hiện tại ==> DigitalOcean: Tải lên Tải lên Tỷ lệ Tốc độ trái ==> DigitalOcean: 100 63,5m 100 63,5m 0 0 110m 0 -: -: - -: - -: - -: -: - 110m DigitalOcean: Lưu trữ: Vault.zip DigitalOcean: Bơm hơi: Vault ==> DigitalOcean: Duyên dáng tắt Droplet ... ==> DigitalOcean: Tạo ảnh chụp nhanh: Packer-1635876039 ==> DigitalOcean: Chờ ảnh chụp nhanh ... ==> DigitalOcean: Phá hủy giọt ... DigitalOcean: Đầu ra sẽ có màu này. ==> DigitalOcean: Tạo khóa RSA SSH tạm thời cho ví dụ ... ==> DigitalOcean: Nhập khóa công khai SSH ... ==> DigitalOcean: Tạo giọt ... ==> DigitalOcean: Chờ đợi giọt nhỏ trở nên hoạt động ... ==> DigitalOcean: Sử dụng SSH Communicator để kết nối: ... ==> DigitalOcean: Chờ SSH có sẵn ... ==> DigitalOcean: Đã kết nối với SSH! ==> DigitalOcean: cung cấp với tập lệnh shell: / tmp / packer-shell464972932 DigitalOcean: Hit: 1 //mirrors.digitalocean.com/ubfox Focal InRelease ... ==> DigitalOcean:% tổng% nhận được% xferd tốc độ trung bình thời gian thời gian hiện tại ==> DigitalOcean: Tải lên Tải lên Tỷ lệ Tốc độ trái ==> DigitalOcean: 100 63,5m 100 63,5m 0 0 110m 0 -: -: - -: - -: - -: -: - 110m DigitalOcean: Lưu trữ: Vault.zip DigitalOcean: Bơm hơi: Vault ==> DigitalOcean: Duyên dáng tắt Droplet ... ==> DigitalOcean: Tạo ảnh chụp nhanh: Packer-1635876039 ==> DigitalOcean: Chờ ảnh chụp nhanh ... ==> DigitalOcean: Phá hủy giọt ... DigitalOcean: Đầu ra sẽ có màu này. ==> DigitalOcean: Tạo khóa RSA SSH tạm thời cho ví dụ ... ==> DigitalOcean: Nhập khóa công khai SSH ... ==> DigitalOcean: Tạo giọt ... ==> DigitalOcean: Chờ đợi giọt nhỏ trở nên hoạt động ... ==> DigitalOcean: Sử dụng SSH Communicator để kết nối: ... ==> DigitalOcean: Chờ SSH có sẵn ... ==> DigitalOcean: Đã kết nối với SSH! ==> DigitalOcean: cung cấp với tập lệnh shell: / tmp / packer-shell464972932 DigitalOcean: Hit: 1 //mirrors.digitalocean.com/ubfox Focal InRelease ... ==> DigitalOcean:% tổng% nhận được% xferd tốc độ trung bình thời gian thời gian hiện tại ==> DigitalOcean: Tải lên Tải lên Tỷ lệ Tốc độ trái ==> DigitalOcean: 100 63,5m 100 63,5m 0 0 110m 0 -: -: - -: - -: - -: -: - 110m DigitalOcean: Lưu trữ: Vault.zip DigitalOcean: Bơm hơi: Vault ==> DigitalOcean: Duyên dáng tắt Droplet ... ==> DigitalOcean: Tạo ảnh chụp nhanh: Packer-1635876039 ==> DigitalOcean: Chờ ảnh chụp nhanh ... ==> DigitalOcean: Phá hủy giọt ... DigitalOcean: Đầu ra sẽ có màu này. ==> DigitalOcean: Tạo khóa RSA SSH tạm thời cho ví dụ ... ==> DigitalOcean: Nhập khóa công khai SSH ... ==> DigitalOcean: Tạo giọt ... ==> DigitalOcean: Chờ đợi giọt nhỏ trở nên hoạt động ... ==> DigitalOcean: Sử dụng SSH Communicator để kết nối: ... ==> DigitalOcean: Chờ SSH có sẵn ... ==> DigitalOcean: Đã kết nối với SSH! ==> DigitalOcean: cung cấp với tập lệnh shell: / tmp / packer-shell464972932 DigitalOcean: Hit: 1 //mirrors.digitalocean.com/ubfox Focal InRelease ... ==> DigitalOcean:% tổng% nhận được% xferd tốc độ trung bình thời gian thời gian hiện tại ==> DigitalOcean: Tải lên Tải lên Tỷ lệ Tốc độ trái ==> DigitalOcean: 100 63,5m 100 63,5m 0 0 110m 0 -: -: - -: - -: - -: -: - 110m DigitalOcean: Lưu trữ: Vault.zip DigitalOcean: Bơm hơi: Vault ==> DigitalOcean: Duyên dáng tắt Droplet ... ==> DigitalOcean: Tạo ảnh chụp nhanh: Packer-1635876039 ==> DigitalOcean: Chờ ảnh chụp nhanh ... ==> DigitalOcean: Phá hủy giọt ... DigitalOcean: Đầu ra sẽ có màu này. ==> DigitalOcean: Tạo khóa RSA SSH tạm thời cho ví dụ ... ==> DigitalOcean: Nhập khóa công khai SSH ... ==> DigitalOcean: Tạo giọt ... ==> DigitalOcean: Chờ đợi giọt nhỏ trở nên hoạt động ... ==> DigitalOcean: Sử dụng SSH Communicator để kết nối: ... ==> DigitalOcean: Chờ SSH có sẵn ... ==> DigitalOcean: Đã kết nối với SSH! ==> DigitalOcean: cung cấp với tập lệnh shell: / tmp / packer-shell464972932 DigitalOcean: Hit: 1 //mirrors.digitalocean.com/ubfox Focal InRelease ... ==> DigitalOcean:% tổng% nhận được% xferd tốc độ trung bình thời gian thời gian hiện tại ==> DigitalOcean: Tải lên Tải lên Tỷ lệ Tốc độ trái ==> DigitalOcean: 100 63,5m 100 63,5m 0 0 110m 0 -: -: - -: - -: - -: -: - 110m DigitalOcean: Lưu trữ: Vault.zip DigitalOcean: Bơm hơi: Vault ==> DigitalOcean: Duyên dáng tắt Droplet ... ==> DigitalOcean: Tạo ảnh chụp nhanh: Packer-1635876039 ==> DigitalOcean: Chờ ảnh chụp nhanh ... ==> DigitalOcean: Phá hủy giọt ...

==> DigitalOcean: Xóa khóa SSH tạm thời ... Packer-1635876039 ] và ID của nó trong ngoặc đơn, được đánh dấu màu đỏ. Lưu ý id của bạn về ảnh chụp nhanh, bởi vì bạn sẽ cần nó trong bước tiếp theo.

Xây dựng 'DigitalOcean' đã hoàn thành sau 5 phút 6 giây.

Bạn đã xây dựng một ảnh chụp nhanh DigitalOcean theo mẫu của bạn. Ảnh chụp nhanh có Vault được cài đặt sẵn và ngay bây giờ bạn có thể triển khai các giọt nhỏ với nó như hình ảnh hệ thống của chúng. Trong bước tiếp theo, bạn sẽ viết cấu hình Terraform để tự động hóa các triển khai đó.

==> Đợi đã hoàn thành sau 5 phút 6 giây

Trong bước này, bạn sẽ viết cấu hình TerraForm để tự động triển khai các triển khai của SnapShot chứa Vault bạn vừa xây dựng bằng trình đóng gói.

==> Xây dựng xong. Các tạo tác của các bản dựng thành công là: Terraform Chưa có thư mục con bằng cách chạy:

  • CD ~ / Vault-dàn dựng / Terraform

Packer đăng nhập tất cả các bước cần thiết trong khi xây dựng mẫu của bạn. Dòng cuối cùng chứa tên của ảnh chụp nhanh [chẳng hạn như Packer-1635876039 ] và ID của nó trong ngoặc đơn, được đánh dấu màu đỏ. Lưu ý id của bạn về ảnh chụp nhanh, bởi vì bạn sẽ cần nó trong bước tiếp theo.

  • Nếu quá trình xây dựng không thành công do lỗi API, hãy đợi một vài phút và sau đó thử lại. Bạn đã xây dựng một ảnh chụp nhanh DigitalOcean theo mẫu của bạn. Ảnh chụp nhanh có Vault được cài đặt sẵn và ngay bây giờ bạn có thể triển khai các giọt nhỏ với nó như hình ảnh hệ thống của chúng. Trong bước tiếp theo, bạn sẽ viết cấu hình Terraform để tự động hóa các triển khai đó.

Bước 3 - Viết cấu hình TerraForm

~/vault-orchestration/terraform/do-provider.tf

Trước khi viết cấu hình Terraform thực tế để triển khai Vault từ ảnh chụp nhanh được chế tạo trước đó, trước tiên bạn cần định cấu hình nhà cung cấp DigitalOcean cho nó. Điều hướng đến Sau đó, tạo một tệp có tên Sau đó, tạo một tệp có tên Sau đó, tạo một tệp có tên Sau đó, tạo một tệp có tên

Tệp này khai báo các biến tham số và cung cấp DigitalOcean với khóa API. Sau đó, bạn sẽ sử dụng các biến này trong mẫu Terraform của mình, nhưng trước tiên bạn sẽ cần chỉ định giá trị của chúng. Với mục đích đó, TerraForm hỗ trợ chỉ định các giá trị biến trong tệp định nghĩa biến Tương tự như Packer. Tên tệp phải kết thúc bằng .tfvars hoặc .tfvars.json . Sau đó, bạn sẽ chuyển tệp đó thành Terrauform bằng cách sử dụng -var-file đối số.

Lưu và đóng tập tin.

Tạo tệp định nghĩa biến có tên định nghĩa.tfvars Sử dụng trình soạn thảo văn bản của bạn:

  • định nghĩa nano.tfvars.

Thêm các dòng sau:

~/vault-orchestration/terraform/definitions.tfvars

do_token = " your_do_api_key " " ssh_fingerprint = " your_ssh_key_fingerprint " " do_snapshot_id = your_do_snapshot_id do_name = "Vault" do_region = "fra1" do_size = "S-1VCPU-1GB" instance_count = 1.

Hãy nhớ thay thế your_do_api_key , your_ssh_key_fingerprint , và < / a> your_do_snapshot_id Với khóa API tài khoản của bạn, dấu vân tay của khóa SSH của bạn và ID ảnh chụp tương ứng bạn đã lưu ý từ bước trước đó. do_region và do_size Các tham số phải có cùng giá trị như trong trình đóng gói tập tin biến. Nếu bạn muốn triển khai nhiều phiên bản cùng một lúc, hãy điều chỉnh instance_count Theo giá trị mong muốn của bạn. your_do_api_key, your_ssh_key_fingerprint, and your_do_snapshot_id with your account API key, the fingerprint of your SSH key, and the snapshot ID you noted from the previous step, respectively. The do_region and do_size parameters must have the same values as in the Packer variables file. If you want to deploy multiple instances at once, adjust instance_count to your desired value.

Khi hoàn tất, lưu và đóng tệp.

Để biết thêm thông tin về nhà cung cấp DigitalOcean Terraform, hãy truy cập các tài liệu chính thức.

Bạn sẽ lưu trữ cấu hình triển khai ảnh chụp nhanh trong một tệp có tên triển khai.tf , trong Thư mục Terraform . Tạo nó bằng trình soạn thảo văn bản của bạn: deployment.tf, under the terraform directory. Create it using your text editor:

  • Triển khai Nano.tf.

Thêm các dòng sau:

~/vault-orchestration/terraform/deployment.tf

do_token = "

size = var.do_size.resource of the type digitalocean_droplet named vault. Then, you set its parameters according to the variable values and add a SSH key [using its fingerprint] from your DigitalOcean account to the Droplet resource. Finally, you output the IP addresses of all newly deployed instances to the console.

Lưu và đóng tập tin.

ssh_keys = [

  • var.ssh_fingerprint. Có]

Không

Đầu ra.
Initializing the backend... Initializing provider plugins... - Finding digitalocean/digitalocean versions matching "~> 2.0"... - Installing digitalocean/digitalocean v2.15.0... - Installed digitalocean/digitalocean v2.15.0 [signed by a HashiCorp partner, key ID F82037E524B9C0E8] Partner and community providers are signed by their developers. If you'd like to know more about provider signing, you can read about it here: //www.terraform.io/docs/cli/plugins/signing.html Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.

đầu ra "instance_ip_addr" {

giá trị = {

Ví dụ trong DigitalOcean_Droplet.Vault:

instance.Id => instance.ipv4_address xác thực lệnh . Khi nó xác minh thành công, bạn sẽ Áp dụng Nó và triển khai một giọt nước là kết quả.

Không

  • Mô tả = "Địa chỉ IP của các phiên bản được triển khai, được ghép nối với ID của họ." Không

Không

Đầu ra.
Success! The configuration is valid.

đầu ra "instance_ip_addr" {plan command to see what Terraform will attempt when it comes to provision the infrastructure according to your configuration:

  • giá trị = { Ví dụ trong DigitalOcean_Droplet.Vault:

instance.Id => instance.ipv4_address xác thực lệnh . Khi nó xác minh thành công, bạn sẽ

Không

Đầu ra.
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # digitalocean_droplet.vault[0] will be created + resource "digitalocean_droplet" "vault" { + backups = false + created_at = [known after apply] + disk = [known after apply] + graceful_shutdown = false + id = [known after apply] + image = "94912983" + ipv4_address = [known after apply] + ipv4_address_private = [known after apply] + ipv6 = false + ipv6_address = [known after apply] + locked = [known after apply] + memory = [known after apply] + monitoring = false + name = "vault" + price_hourly = [known after apply] + price_monthly = [known after apply] + private_networking = [known after apply] + region = "fra1" + resize_disk = true + size = "s-1vcpu-1gb" + ssh_keys = [ + "...", ] + status = [known after apply] + urn = [known after apply] + vcpus = [known after apply] + volume_ids = [known after apply] + vpc_uuid = [known after apply] } Plan: 1 to add, 0 to change, 0 to destroy. Changes to Outputs: + instance_ip_addr = [known after apply] ...

đầu ra "instance_ip_addr" {+ on the beginning of the resource "digitalocean_droplet" "vault" line means that Terraform will create a new Droplet called vault, using the parameters that follow. This is correct, so you can now execute the plan by running terraform apply:

  • giá trị = { Ví dụ trong DigitalOcean_Droplet.Vault:

instance.Id => instance.ipv4_address xác thực lệnh . Khi nó xác minh thành công, bạn sẽ

Đầu ra.
. Terrauform đã sử dụng các nhà cung cấp đã chọn để tạo ra kế hoạch thực hiện sau. Các hành động tài nguyên được chỉ định với những điều sau đây Biểu tượng: + Tạo Terrauform sẽ thực hiện các hành động sau: # DigitalOcean_Droplet.Vault [0] sẽ được tạo + Tài nguyên "DigitalOcean_Droplet" "Vault" { ... Không Kế hoạch: 1 để thêm, 0 để thay đổi, 0 để phá hủy. Thay đổi đầu ra: + instance_ip_addr = [đã biết sau khi áp dụng] ... DigitalOcean_Droplet.Vault [0]: Tạo ... DigitalOcean_Droplet.Vault [0]: Vẫn đang tạo ... [10 giây trôi qua] ... DigitalOcean_Droplet.Vault [0]: Sáng tạo hoàn tất sau 44 giây [id = 271950984] Áp dụng hoàn thành! Tài nguyên: 1 Đã thêm, 0 đã thay đổi, 0 bị phá hủy. Đầu ra: instance_ip_addr = { "271950984" = " your_new_server_ip " " Không

Trong đầu ra, Terraform ghi nhật ký những hành động nào đã thực hiện [trong trường hợp này, để tạo một giọt] và hiển thị địa chỉ IP công khai của nó ở cuối. Bạn sẽ sử dụng nó để kết nối với giọt mới của bạn trong bước tiếp theo.

Bạn đã tạo một giọt mới từ ảnh chụp nhanh chứa Vault và hiện đã sẵn sàng để xác minh nó.

Bước 5 - Xác minh giọt nước được triển khai của bạn

Trong bước này, bạn sẽ truy cập chương trình mới của mình bằng SSH và xác minh rằng Vault đã được cài đặt chính xác.

Nếu bạn đang ở trên Windows, bạn có thể sử dụng phần mềm như Kitty hoặc Putty để kết nối với lớp nhỏ bằng phím SSH.

Trên các máy Linux và MacOS, bạn có thể sử dụng lệnh SSH để kết nối:

  • SSH Root @ your_server_ip

Trả lời Có Khi được nhắc. Khi bạn đã đăng nhập, hãy chạy Vault bằng cách thực thi:

  • vault.

Bạn sẽ thấy đầu ra "Trợ giúp" của nó, trông như thế này:

Đầu ra.
Usage: vault [args] Common commands: read Read data and retrieves secrets write Write data, configuration, and secrets delete Delete secrets and configuration list List data or secrets login Authenticate locally agent Start a Vault agent server Start a Vault server status Print seal and HA status unwrap Unwrap a wrapped secret Other commands: audit Interact with audit devices auth Interact with auth methods debug Runs the debug command kv Interact with Vault's Key-Value storage lease Interact with leases namespace Interact with namespaces operator Perform operator-specific tasks path-help Retrieve API help for paths plugin Interact with Vault plugins and catalog policy Interact with policies print Prints runtime configurations secrets Interact with secrets engines ssh Initiate an SSH session token Interact with tokens

Bạn có thể thoát khỏi kết nối bằng cách nhập Thoát .

Bây giờ bạn đã xác minh rằng các giọt mới được triển khai của bạn đã được tạo từ ảnh chụp nhanh mà bạn đã tạo và Vault được cài đặt chính xác.

Để tiêu diệt các tài nguyên được cung cấp, hãy chạy lệnh sau, nhập có Khi được nhắc:

  • Terraform phá hủy -Var-file = "định nghĩa.tfvars".

Phần kết luận

Bây giờ bạn có một hệ thống tự động để triển khai Hashicorp Vault trên các giọt DigitalOcean bằng cách sử dụng TerraForm và Packer. Bây giờ bạn có thể triển khai nhiều máy chủ Vault như bạn cần. Để bắt đầu sử dụng Vault, bạn sẽ cần khởi tạo nó và cấu hình thêm. Để biết hướng dẫn về cách làm điều đó, hãy truy cập các tài liệu chính thức.

Để biết thêm hướng dẫn sử dụng TerraForm, hãy xem trang Nội dung Terraform của chúng tôi và cách quản lý cơ sở hạ tầng với sê-ri Terraform, bao gồm một số chủ đề của Terraform từ lần đầu tiên cài đặt Terraform để quản lý các dự án phức tạp.

Video liên quan

Chủ Đề