User data¶
Hướng dẫn sử dụng¶
I. Định nghĩa¶
User Data là tính năng cho phép người dùng tùy chỉnh một số thông tin của Server trên hạ tầng Cloud hiện đang được triển khai và chạy trên Server đó. Nếu khi khởi tạo server người dùng active tính năng này thì họ có thể tùy chỉnh một số thông tin theo nhu cầu của họ.
Sunteco cho phép người dùng sử dụng nhiều loại dữ liệu khác nhau. Thông thường, mỗi loại dữ liệu sẽ được xác định bởi dòng đầu tiên:
Hiện tại, các nội dung được hỗ trợ bao gồm:
Batch
PowerShell
Bash
Python
Cloud config
Khởi tạo UserData khi kích hoạt vServer
Gợi ý điền câu lệnh cho UserData
II. Chi tiết các nội dung hỗ trợ¶
1.Batch¶
File được thực thi ở cmd.exe (có thể được thay bằng biến môi trường COMSPEC.
2. PowerShell
#ps1 or #ps1_sysnative (system native)
#ps1_x86 (Windows On Windows 32bit)
Câu lệnh PowerShell sử dụng để thực thi như mong muốn.
3. Bash
Để sử dụng tính năng này, ta cần cài đặt Bash Shell trên hệ thống và sẵn có trên hệ thống môi trường PATH.
4. Python
#!/usr/bin/env python
Mặc dù Python đã có sẵn theo mặc định khi cài đặt, nhưng nó cũng phải có trong hệ thống môi trường PATH.
5. Cloud config
Cấu hình YAML được hỗ trợ ( trừ các nội dung dành riêng cho Linux). Các cấu hình được hỗ trợ bao gồm các cấu hình sau:
5.1. write_files: Xác định một tập hợp các file sẽ được tạo ra trên hệ thống file nội bộ. Nó có thể là danh sách các items hoặc chỉ một item với các thuộc tính sau:
path: đường dẫn trên ổ đĩa, nơi mà nội dung sẽ được ghi
content: nội dung sẽ được ghi vào file đã cho
permissions: số nguyên đại diện cho quyền truy cập
encoding: mã hóa dư liệu trong nội dung. Các mã hóa được hỗ trợ là:
b64, base64 dành cho các nội dung được mã hóa base64;
gz, gzip dành cho các nội dung nén gzip;
gz+b64,gz+base64,gzip+b64,gzip+base64 danh cho các nội dung gzip được mã hóa base64.
Ví dụ:
#cloud-config
write_files:
encoding: b64
content: NDI=
path: C:\test
permissions: '0o466'
#cloud-config
write_files:
- encoding: b64
content: NDI=
path: C:\b64
permissions: '0644'
- encoding: base64
content: NDI=
path: C:\b64_1
permissions: '0644'
- encoding: gzip
content: !!binary |
H4sIAGUfoFQC/zMxAgCIsCQyAgAAAA==
path: C:\gzip
permissions: '0644'
5.2. Set_timezone: Thay đổi múi giờ của hệ thống
Ví dụ:
#cloud-config
set_timezone: Asia/Tbilisi
5.3. set_hostname: Thay đổi tên máy chủ
Ví dụ:
#cloud-config
set_hostname: newhostname
5.4 groups: Tạo nhóm nội bộ và thêm những user đang tồn tại vào nhóm đó
Yêu cầu định dạng của khi tạo nhóm như sau:
<group_name>: [<user1>,<user2>]
Danh sách user có thể để trống, nên có thể tạo một nhóm mà không có user nào.
Ví dụ:
groups:
- windows-group: [user1, user2]
- cloud-users
5.5. users: Tạo và cấu hình user nội bộ
Mỗi user có thể được xác định bởi những thuộc tính sau:
name: (bắt buộc điền) - là tên đăng nhập username;
gecos: mô tả ngắn gọn về user
primary_group: nhóm chính của user
groups: danh sách nhóm của user. Trên Windows, primary_group và groups được ràng buộc nhau.
passwd: Mật khẩu của user. Trên Linux, mật khẩu được lưu trữ ở dạng chuỗi băm, trong khi đó trên Windows thì mật khẩu được lưu trữ dưới dạng văn bản thuần. Nếu không xác định được mật khẩu, hệ thống sẽ đặt mật khẩu ngẫu nhiên.
inactive: giá trị Boolean (true/false) cho biết trạng thái hoạt động của user, mặc định là False. Nếu thiết lập là True, user sẽ bị vô hiệu quá.
expiredate: Ngày hết hạn của tài khoản user, định dạng là chuỗi <year>-<month>-<day>. Ví dụ: 2020-10-01.
ssh_authorized_keys: Danh sách các public keySSH mà sẽ được thiết lập trong ở ~/.ssh/authorized_keys cho phép user đó đăng nhập bằng SSH.
Ví dụ:
users:
- name: Admin
- name: brian
gecos: 'Brian Cohen'
primary_group: Users
groups: cloud-users
passwd: StrongPassw0rd
inactive: False
expiredate: 2020-10-01
ssh_authorized_keys:
- ssh-rsa AAAB...byV
- ssh-rsa AAAB...ctV
5.6. ntp: Cấu hình NTP Server, (Network Time Protocol), được định nghĩa với các thuộc tính sau:
enabled: Giá trị Boolean (True/False), mặc định là True, để cấu hình tắt bật NTP;
servers: Danh sách các máy chủ NTP;
pools: Danh sách các nhóm máy chủ NTP;
Server và pools được gộp chung lại, server là được ưu tiên trước trong danh sách. Trên Windows, không có khác biệt giữa một NTP pool hay server
Ví dụ:
#cloud-config
ntp:
enabled: True
servers: ['my.ntp.server.local', '192.168.23.2']
pools: ['0.company.pool.ntp.org', '1.company.pool.ntp.org']
5.7. runcmd: Được chỉ dẫn là nơi có thể chứa danh sách các câu lệnh mà sẽ được thực thi, theo thứ tự được xác định.
Một câu lệnh có thể được xác định là một chuỗi ký tự hay một danh sách chuỗi ký tự, với phần tử đầu tiênlà đường dẫn đến tập tin thực thi.
Trên Windows, các dòng lệnh được tập hợp lại trong một file và được thực thi với cmd.exe.
Ví dụ:
#cloud-config
runcmd:
- 'dir C:\\'
- ['echo', '1']
Cloud config được thực thi theo thứ tự mặc định như sau:
write_files: Tạo và ghi nội dung vào file được xác định;
set_timezone: Cài đặt múi giờ;
set_hostname: Thay đổi tên máy chủ của Server;
ntp: Cấu hình mấy chủ NTP để đồng bộ hóa thời gian
groups: Tạo vả quản lý nhóm user nội bộ;
users: Tạo và cấu hình tài khoản người dùng nội bộ;
runcmd: Chạy các lệnh được cung cấp trong quá trình khởi tạo
Có thể dùng tùy chọn là cloud_config_plugins để lọc hoặc thay đổi thứ tự các plugin cloud-config.
Việc thực thi việc đổi tên máy chủ set_hostname hay chạy các câu lệnh runcmd có thể cần được khổi động lại Server nếu cần. Việc khởi động lại sẽ được thực hiện sau khi tất cả các chỉ thị được thực thi.
CÂU LỆNH MẪU DÀNH CHO LINUX
Lưu ý với Linux sẽ sử dụng script dạng Cloud base init. Câu lệnh mẫu để setup username/password như sau:
#cloud-config
password: password
chpasswd:
expire: False
——————————————————————————————————
Reference: https://cloudbase-init.readthedocs.io/en/latest/userdata.html
Windown: https://cloudbase-init.readthedocs.io/en/latest/index.html
Linux: using cloudbase-init : Documents : https://cloudinit.readthedocs.io/en/latest/