Như các bạn đã biết chúng ta có thể xây dựng cơ sở hạ tầng thông qua Terraform (các bạn có thể xem lại bài này) . Hôm nay chúng ta sẽ thông qua một sản phẩm của GCP (Deployment Manager) để triển khai một cơ sở hạ tầng nhé. Trong bài này đó là một VM với một firewall đươc lập để người dùng có thể truy cập vào VM đó như là một ứng dụng web.
Trước tiên chúng ta cần bật Cloud Shell ở màn hình GCP console lên để thao tác bằng command line.
1. Tạo script mô tả hạ tầng
Tại màn hình Cloud Shell chúng ta tạo một folder mới để dễ thao tác, và tạo một file có tên config.yaml chứa nội dung mô tả infrastructure.
mkdir khanhvn666
cd khanhvn666
vi config.yaml
Nội dung config.yaml giống như bên dưới. Các bạn chỉ cần copy paste vô.
imports:
- path: instance.jinja
- path: ./startup-script.sh
name: startup-script.sh
resources:
- name: my-instance
type: instance.jinja
properties:
metadata-from-file:
startup-script: startup-script.sh
zone: us-west1-a
File config.yaml trên mô tả cho chúng ta biết nó sẽ sử dụng một file khác có tên instance.jinja và tạo xong VM nó sẽ chạy file startup-script.sh. Ngoài ra máy VM này có zone là us-west1-a.
Tiếp theo ta tạo file instance.jinja có nôi dung như bên dưới.
{% set COMPUTE_URL_BASE = 'https://www.googleapis.com/compute/v1/' %}
{% set BASE_NAME = env['deployment'] + '-' + env['name'] %}
resources:
- name: tcp-firewall-rule
type: compute.v1.firewall
properties:
sourceRanges: ["0.0.0.0/0"]
allowed:
- IPProtocol: TCP
ports: ["80"]
- name: {{ BASE_NAME }}
type: compute.v1.instance
properties:
zone: {{ properties['zone'] }}
machineType: {{ COMPUTE_URL_BASE }}projects/{{ env['project'] }}/zones/{{ properties['zone'] }}/machineTypes/f1-micro
metadata:
items:
{% for key, value in properties['metadata-from-file'].iteritems() %}
- key: {{ key }}
value: |
{{ imports[value]|indent(10) }}
{% endfor %}
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
diskName: {{ BASE_NAME }}-disk
sourceImage: {{ COMPUTE_URL_BASE }}projects/debian-cloud/global/images/family/debian-9
networkInterfaces:
- network: {{ COMPUTE_URL_BASE }}projects/{{ env['project'] }}/global/networks/default
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT
outputs:
- name: vm_ip
value: $(ref.{{ BASE_NAME }}.networkInterfaces[0].accessConfigs[0].natIP)
Và file startup-script.sh có nội dung như bên dưới.
apt-get update
apt-get install -y apache2
cat <<EOF > /var/www/html/index.html
<html><body><h1>Hello World</h1>
<p>This page was generated by a startup script.</p>
</body></html>
EOF
2. Triển khai hạ tầng thông qua Deployment Manager
Chúng ta chạy lệnh sau: gcloud deployment-manager deployments create mydepl –config config.yaml Kết quả ra giống như màn hình dưới phải không nào.
Tiếp theo chúng ta kiểm tra xem thông qua script ta đã triển khai được mấy VM và thông số như thế nào bằng câu lệnh gcloud compute instances list, thông số firewall đã tạo: gcloud compute firewall-rules list
Tiếp theo ta sẽ kiểm tra VM vừa tạo bằng cách truy cập địa chỉ EXTERNAL_IP từ trình duyệt. (Trong hình trên là 35.230.125.202)
Khi thực hành có chỗ nào chưa hiểu, cần support, các bạn hãy liên hệ với các chuyên gia Cloud Ace , hoặc comment ở form comment bên dưới, để nhận được hỗ trợ tốt hơn.