Để cài đặt Terraform bằng Ansible và phân biệt biến và cấu hình thành hai file riêng, chúng ta có thể sử dụng một số module và cấu trúc thư mục của Ansible như sau:
- Tạo thư mục
terraform
để chứa các file Ansible cho việc cài đặt Terraform. Sử dụng lệnh sau để tạo thư mục này:
mkdir terraform
- Tạo hai thư mục
vars
vàtasks
bên trong thư mụcterraform
. Thư mụcvars
sẽ chứa các biến được sử dụng trong cấu hình, và thư mụctasks
sẽ chứa các nhiệm vụ được thực thi để cài đặt Terraform. Sử dụng lệnh sau để tạo các thư mục này:
cd terraform
mkdir vars tasks
- Trong thư mục
vars
, tạo một filemain.yml
để định nghĩa các biến cho cấu hình Terraform. Ví dụ:
---
terraform_version: "1.0.11"
terraform_url: "https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip"
- Trong ví dụ này, chúng ta đang định nghĩa hai biến
terraform_version
vàterraform_url
. Biếnterraform_version
chứa phiên bản Terraform cần cài đặt, và biếnterraform_url
chứa URL để tải về file zip của Terraform. - Trong thư mục
tasks
, tạo một filemain.yml
để định nghĩa các nhiệm vụ để cài đặt Terraform. Ví dụ:
---
- name: Install unzip package
apt:
name: unzip
state: present
- name: Download Terraform
get_url:
url: "{{ terraform_url }}"
dest: "/tmp/terraform.zip"
- name: Install Terraform
unarchive:
src: "/tmp/terraform.zip"
dest: "/usr/local/bin/"
remote_src: yes
creates: "/usr/local/bin/terraform"
Trong ví dụ trên, chúng ta sử dụng Ansible để cài đặt Terraform trên một số máy chủ được liệt kê trong file inventory. Đầu tiên, chúng ta đã khai báo biến terraform_version
để xác định phiên bản Terraform cần được cài đặt, và biến terraform_download_url
để chỉ định URL để tải xuống gói cài đặt.
Tiếp theo, chúng ta đã sử dụng module get_url
để tải xuống gói cài đặt Terraform từ URL đã chỉ định và lưu trữ nó tại đường dẫn cục bộ /tmp/terraform.zip
. Sau đó, chúng ta đã sử dụng module unarchive
để giải nén gói cài đặt đó và lưu trữ nó tại đường dẫn cục bộ /tmp/terraform
.
Cuối cùng, chúng ta đã sử dụng module copy
để sao chép file thực thi Terraform vào thư mục /usr/local/bin/
để có thể sử dụng từ bất kỳ thư mục nào trên hệ thống.
Chúng ta đã tách biến và cấu hình thành các file riêng biệt và sử dụng đường dẫn tương đối để trỏ đến các file này, giúp cho quá trình quản lý và bảo trì mã Ansible trở nên dễ dàng hơn.