Tôi đang quay vòng các thùng chứa nhẹ trên Máy chủ Linux bằng LXD/LXC.
Mục đích duy nhất của các vùng chứa này là lưu trữ "Ứng dụng lõi Dotnet & Dotnet"
Tôi đã sử dụng Ansible được một thời gian, nhưng gần đây tôi thấy rằng tôi thực sự có thể nhúng tập lệnh init vào dữ liệu người dùng của cấu hình vùng chứa và cloud-init sẽ thực thi tập lệnh đó.
Điều này thật tuyệt và cho phép tôi thiết lập một vùng chứa nhất định với chính xác các gói mà nó cần ngoại trừ một vấn đề.
Microsoft
(Tôi biết, tôi biết... hãy để dành những trò đùa và những lời nói tục tĩu :-D)
Không giống như hầu hết các nhà cung cấp gói bên thứ 3, MS đóng gói toàn bộ phần bổ sung nguồn gỡ lỗi và khóa GPG của họ trong một tệp gói dpkg độc lập, tệp gói này không được liệt kê qua các kho lưu trữ thông thường, do đó, về cơ bản, nó phải được "quên" tải xuống và sau đó cài đặt sử dụng lệnh dpkg thông thường.
Ngay bây giờ, đây là cách tôi đang làm mọi việc:
#cloud-config
# áp dụng các bản cập nhật bằng cách sử dụng apt
gói_update: đúng
gói_upgrade: đúng
# đặt tên máy chủ
tên máy chủ: ****
fqdn: ****
quản lý_etc_hosts: đúng
# Cài đặt kho phần mềm của bên thứ 3
# LƯU Ý: Điều này được thực hiện bằng cách sử dụng lệnh chạy do cách microsoft phân phối mọi thứ bằng dpkg thô
chạy cmd:
- [wget, "https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb", -O, /root/packages-microsoft-prod.deb]
- dpkg -i /root/packages-microsoft-prod.deb
- rm /root/packages-microsoft-prod.deb
- cập nhật thích hợp
- apt-get cài đặt dotnet-sdk-3.1 -y
- apt-get cài đặt dotnet-sdk-5.0 -y
# Cài đặt gói tiêu chuẩn
gói:
- apt-transport-https
- trăn3
- python-là-python3
- mc
- gnupg
- nginx
- git
# Thêm người dùng
người dùng:
- Tên: ****
ssh-ủy quyền-key:
- ssh-rsa **** rsa-key-BLAH
sudo: ['****']
nhóm: sudo
vỏ: /bin/bash
tin nhắn cuối cùng:
- "Hoàn tất khởi tạo vùng chứa."
Phần quan trọng là phần "runcmd".
Bởi vì tôi đang sử dụng "runcmd", phần này chạy SAU mọi thứ khác, kể cả phần cài đặt gói thông thường nơi tôi đặt tất cả các gói tiêu chuẩn mà tôi cần sử dụng.
Điều tôi lý tưởng nhất là THÍCH làm, là cài đặt tệp dpkg, sau đó chỉ cần thêm tên gói sẽ được cài đặt trong phần gói thông thường, chẳng hạn
# Một cái gì đó ở đây để tải xuống và cài đặt dpkg
# Cài đặt gói tiêu chuẩn
gói:
- apt-transport-https
- trăn3
- python-là-python3
- mc
- gnupg
- nginx
- git
- dotnet-sdk-3.1
- dotnet-sdk-5.0
Tôi đã thử CHỈ đưa bit đó vào runcmd, nhưng vì nó chạy ở bước cuối cùng nên nó khiến phần gói bị lỗi do không cài đặt repo cho dotnet.
Tôi cũng đã thử sử dụng mô-đun "Apt" để cài đặt "microsoft-prod.list" vào "/etc/apt/sources.list.d" nhưng điều đó cũng không thành công vì MS không xuất bản khóa GPG của họ và bổ sung của nguồn gây ra lỗi khi cập nhật apt được thực hiện do đó là nguồn không đáng tin cậy.
Tôi đã tìm kiếm các tài liệu mô-đun cho cloud-init và tôi không thể tìm thấy bất kỳ thứ gì gợi ý rằng có thể tải xuống và thêm tệp dpkg thông thường, do đó tại sao tôi lại hỏi ở đây :-)