1. Tổng quan.
Bạn có thể sử dụng công cụ s3fs
để mount container của OpenStack Swift vào Ubuntu theo hướng dẫn https://wiki.hoanghd.com/ceph-phan-9-mount-s3-trong-ceph-vao-linux/ này nhé. Phần này mình chỉ hướng dẫn các bạn lấy các thông số cần thiết để truyền vào s3cmd --configure
mà thôi, vì các bước còn lại bạn thực hiện tương tự khi mount s3 trong Ceph.
2. Lấy thông tin kết nối.
Lấy thông tin Access Key và Secret Key.
Để lấy Access Key (hoặc API Key) từ OpenStack Swift, bạn cần sử dụng OpenStack CLI hoặc OpenStack Dashboard (Horizon).
Dưới đây là cách lấy Access Key thông qua OpenStack CLI.
Đầu tiên, bạn cần cài đặt OpenStack CLI nếu bạn chưa cài đặt.
Bạn có thể cài đặt nó bằng pip:
pip install python-openstackclient
Sau khi cài đặt OpenStack CLI, bạn cần thiết lập các biến môi trường để xác thực. Bạn có thể làm điều này bằng cách chạy các lệnh sau:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
Cuối cùng, bạn có thể lấy Access Key bằng cách chạy lệnh dưới, lệnh này sẽ trả về một Access Key và Secret Key.
Bạn sẽ cần cả hai để xác thực với OpenStack Swift.
shell> openstack ec2 credentials create
+------------+----------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+----------------------------------------------------------------------------------------------------------------------------------+
| access | c298ff3d5eb345f187a1ad1ca8c31a74 |
| links | {'self': 'http://controller:5000/v3/users/11b653515e7b44d7bf531a4b1c17da43/credentials/OS-EC2/c298ff3d5eb345f187a1ad1ca8c31a74'} |
| project_id | ef46fa05202a47fbb80e6fd67dfbd887 |
| secret | d5305784e6314afc9b1f5fd4b27c37df |
| trust_id | None |
| user_id | 11b653515e7b44d7bf531a4b1c17da43 |
+------------+----------------------------------------------------------------------------------------------------------------------------------+
Để xác định Access Key thuộc về tài khoản nào trong OpenStack, bạn cần truy cập vào OpenStack Dashboard (Horizon) hoặc sử dụng OpenStack CLI.
Trong OpenStack Dashboard, bạn có thể xem Access Key trong phần “Access & Security” của mỗi Project.
Nếu bạn sử dụng OpenStack CLI, bạn có thể liệt kê tất cả các Access Key bằng cách sử dụng lệnh sau:
shell> openstack ec2 credentials list
+----------------------------------+----------------------------------+----------------------------------+----------------------------------+
| Access | Secret | Project ID | User ID |
+----------------------------------+----------------------------------+----------------------------------+----------------------------------+
| c298ff3d5eb345f187a1ad1ca8c31a74 | d5305784e6314afc9b1f5fd4b27c37df | ef46fa05202a47fbb80e6fd67dfbd887 | 11b653515e7b44d7bf531a4b1c17da43 |
+----------------------------------+----------------------------------+----------------------------------+----------------------------------+
Lệnh này sẽ trả về danh sách tất cả các Access Key cùng với tên người dùng và tên dự án tương ứng. Bạn cần thiết lập các biến môi trường để xác thực trước khi chạy lệnh này, giống như khi bạn tạo Access Key.
Lấy danh sách các dịch vụ và endpoint.
Lấy danh sách các dịch vụ và endpoint tương ứng của chúng bằng cách chạy lệnh sau:
shell> openstack catalog list
+----------+--------------+-----------------------------------------------------------------------------+
| Name | Type | Endpoints |
+----------+--------------+-----------------------------------------------------------------------------+
| keystone | identity | RegionOne |
| | | admin: http://controller:5000/v3/ |
| | | RegionOne |
| | | public: http://controller:5000/v3/ |
| | | RegionOne |
| | | internal: http://controller:5000/v3/ |
| | | |
| swift | object-store | RegionOne |
| | | admin: http://controller:8080/v1 |
| | | RegionOne |
| | | public: http://controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887 |
| | | RegionOne |
| | | internal: http://controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887 |
| | | |
+----------+--------------+-----------------------------------------------------------------------------+
Lệnh này sẽ trả về danh sách các dịch vụ và endpoint của chúng. Tìm dịch vụ có tên là ‘swift’ và lấy giá trị của trường ‘publicURL’. Đó sẽ là endpoint của dịch vụ Swift.
Kiểm thử endpoint chạy được không, mình sử dụng endpoint public.
shell> curl http://controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887
container1
container2
mycontainer
Tham khảo mẫu s3cmd --configure
của mình.
shell> s3cmd --configure
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: c298ff3d5eb345f187a1ad1ca8c31a74
Secret Key: d5305784e6314afc9b1f5fd4b27c37df
Default Region [US]:
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]: No
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:
New settings:
Access Key: c298ff3d5eb345f187a1ad1ca8c31a74
Secret Key: d5305784e6314afc9b1f5fd4b27c37df
Default Region: US
S3 Endpoint: controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887
DNS-style bucket+hostname:port template for accessing a bucket: controller:8080/v1/AUTH_ef46fa05202a47fbb80e6fd67dfbd887
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0
Test access with supplied credentials? [Y/n] n
Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'
Về Encryption password, đây là một mật khẩu tùy chọn mà s3cmd
sử dụng để mã hóa các file của bạn trước khi chúng được chuyển đến S3. Điều này giúp bảo vệ dữ liệu của bạn khỏi việc đọc trái phép trong quá trình chuyển đến S3. Nếu bạn không muốn mã hóa các file của bạn, bạn có thể để trống trường này.
Tuy nhiên, nếu bạn quyết định sử dụng mật khẩu mã hóa, hãy đảm bảo rằng bạn lưu trữ nó ở một nơi an toàn. Nếu bạn mất mật khẩu này, bạn sẽ không thể giải mã các file đã được mã hóa.