NetBox là phần mềm Infrastructure Resource Modeling (IRM) được thiết kế cho mục đích tự động hóa mạng và kỹ thuật cơ sở hạ tầng. Ban đầu, phần mềm này được nhóm DigitalOcean tạo ra và hiện đã trở thành một dự án mã nguồn mở được phát hành theo Giấy phép Apache 2. NetBox được tạo ra trong khuôn khổ Python Django Web với PostgreSQL là cơ sở dữ liệu mặc định và quá trình cài đặt NetBox khá giống với các ứng dụng web Python Django khác.
NetBox giúp bạn quản lý cơ sở hạ tầng của mình, bao gồm:
Trong bước này, bạn sẽ cài đặt máy chủ cơ sở dữ liệu PostgreSQL, thiết lập xác thực mật khẩu, sau đó tạo cơ sở dữ liệu và người dùng mới mà NetBox sẽ sử dụng.
Để bắt đầu, hãy chạy lệnh bên dưới để cài đặt máy chủ PostgreSQL trên Rocky Linux máy chủ.
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22244%22%3E%3C/svg%3E
Sau khi cài đặt máy chủ PostgreSQL, hãy chạy lệnh bên dưới để khởi tạo cơ sở dữ liệu PostgreSQL và cấu hình.
Bạn sẽ nhận được đầu ra như 'Đang khởi tạo cơ sở dữ liệu trong ...'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22225%22%3E%3C/svg%3E
Sau khi máy chủ PostgreSQL được khởi tạo, tiếp theo bạn sẽ thiết lập mã hóa mật khẩu và xác thực cho người dùng PostgreSQL.
Mở Tệp cấu hình PostgreSQL '/var/lib/pgsql/data/postgresql.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Bỏ chú thích tham số 'password_encryption' và đổi giá trị thành 'scram-sha-256'. Thao tác này sẽ thiết lập mã hóa mật khẩu mặc định cho người dùng PostgreSQL thành 'scram-sha-256'.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Tiếp theo, mở tệp cấu hình PostgreSQL khác '/var/lib/pgsql/data/pg_hba.conf' bằng lệnh bên dưới. Tệp này là nơi bạn có thể xác định các phương thức xác thực cho PostgreSQL của mình.
Thay đổi các phương thức xác thực mặc định cho máy chủ '127.0.0.1/32' và '::1/128' thành 'scram-sha-256'. Với điều này, bạn sẽ thiết lập phương thức xác thực mặc định cho người dùng PostgreSQL thành 'scram-sha-256'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22743%22%20height=%22340%22%3E%3C/svg%3E
Bây giờ hãy chạy systemctl bên dưới tiện ích lệnh để khởi động và kích hoạt dịch vụ PostgreSQL.
Sau đó xác minh dịch vụ PostgreSQL bằng lệnh bên dưới.
Bạn sẽ nhận được kết quả như thế này - Dịch vụ PostgreSQL đang chạy và được bật, nghĩa là PostgreSQL sẽ tự động khởi động khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E
Bây giờ bạn đã cấu hình xác thực mật khẩu cho máy chủ PostgreSQL, bây giờ đang chạy. Tiếp theo, bạn sẽ thiết lập mật khẩu mới cho người dùng mặc định 'postgres' và tạo cơ sở dữ liệu và người dùng mới mà NetBox sẽ sử dụng.
Đăng nhập vào shell PostgreSQL thông qua lệnh bên dưới.
Chạy truy vấn bên dưới để thiết lập mật khẩu mới cho người dùng PostgreSQL mặc định 'postgres'. Hãy chắc chắn thay đổi mật khẩu trong truy vấn sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22634%22%20height=%22227%22%3E%3C/svg%3E
Tiếp theo, chạy truy vấn bên dưới để tạo cơ sở dữ liệu PostgreSQL và người dùng mới. Ngoài ra, hãy đảm bảo thay đổi mật khẩu mặc định trong truy vấn sau.
Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu mới 'netboxdb' với người dùng 'netbox' sẽ được sử dụng để cài đặt NetBox.
Bây giờ hãy nhấn Ctrl+d hoặc nhập quit để thoát.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22654%22%20height=%22219%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để đăng nhập vào shell PostgreSQL thông qua người dùng mới 'netbox' vào cơ sở dữ liệu mới 'netboxdb'. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu của bạn.
Sau khi đăng nhập vào shell PostgreSQL, hãy chạy truy vấn bên dưới để xác minh kết nối hiện tại của bạn.
Bạn sẽ nhận được đầu ra như thế này - Bạn đã kết nối với máy chủ PostgreSQL thông qua người dùng 'netbox' tới cơ sở dữ liệu 'netboxdb'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
Sau khi cài đặt PostgreSQL, cơ sở dữ liệu và tạo người dùng, tiếp theo bạn sẽ cài đặt Redis, được sử dụng làm quản lý bộ nhớ đệm trên ứng dụng web NetBox.
Cài đặt Redis vào máy chủ Rocky Linux của bạn thông qua lệnh dnf bên dưới.
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22194%22%3E%3C/svg%3E
Sau khi Redis được cài đặt, hãy mở tệp cấu hình Redis '/etc/redis/redis.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Bỏ chú thích tham số 'requirepass' và nhập mật khẩu mới cho Redis của bạn máy chủ.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Tiếp theo, chạy lệnh systemctl bên dưới để khởi động máy chủ Redis và bật nó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22704%22%20height=%22194%22%3E%3C/svg%3E
Sau đó, xác minh máy chủ Redis thông qua tiện ích lệnh systemctl bên dưới.
Trong kết quả đầu ra, bạn sẽ thấy máy chủ Redis được bật và sẽ tự động chạy khi khởi động. Và trạng thái của máy chủ Redis đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22240%22%3E%3C/svg%3E
Để xác minh cài đặt Redis của bạn, bạn sẽ truy cập Redis thông qua lệnh 'redis-cli' bên dưới.
Nếu bạn chạy truy vấn ping, bạn sẽ nhận được kết quả chẳng hạn như '(lỗi) yêu cầu xác thực NOAUTH'. Bạn cần được xác thực để chạy lệnh 'ping'.
Thực hiện truy vấn Redis bên dưới để xác thực với máy chủ Redis. Hãy nhớ thay đổi mật khẩu. Nếu đã xác thực, bạn sẽ nhận được thông báo đầu ra là 'OK'.
Chạy lại truy vấn ping và bạn sẽ nhận được thông báo đầu ra là 'PONG", điều này có nghĩa là truy vấn đã được thực thi thành công và bạn đã xác thực với máy chủ Redis.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22440%22%20height=%22294%22%3E%3C/svg%3E
Lúc này, bạn đã cài đặt máy chủ cơ sở dữ liệu PostgreSQL và cơ sở dữ liệu khóa-giá trị Redis trên Rocky Linux. Bây giờ bạn đã sẵn sàng để bắt đầu cài đặt NetBox.
Để bắt đầu, hãy chạy lệnh dnf bên dưới để cài đặt các gói phụ thuộc cho NetBox. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22541%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để tạo người dùng hệ thống mới 'netbox' với thư mục home mặc định '/opt/netbox'.
Tạo một thư mục mới '/opt/netbox' và di chuyển thư mục làm việc của bạn vào đó. Sau đó, tải xuống mã nguồn NetBox thông qua lệnh git. Thư mục '/opt/netbox' sẽ được sử dụng làm thư mục cài đặt chính của NetBox.
Thay đổi quyền sở hữu thư mục cài đặt NetBox '/opt/netbox' thành người dùng và nhóm 'netbox'. Sau đó, di chuyển thư mục làm việc của bạn đến '/opt/netbox/netbox/netbox'.
Tiếp theo, chạy lệnh bên dưới để sao chép cấu hình NetBox mặc định vào 'configuration.py'. Sau đó, tạo SECRET_KEY thông qua tập lệnh Python '../generate_secret_key.py'.
Bây giờ hãy sao chép SECRET_KEY đã tạo. Điều này sẽ được sử dụng để thiết lập cài đặt NetBox.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22274%22%3E%3C/svg%3E
Mở tệp cấu hình NetBox 'configuration.py' bằng lệnh trình chỉnh sửa nano bên dưới.
Hãy nhớ thêm tên miền của bạn vào Tham số 'ALLOWED_HOSTS', nhập thông tin chi tiết về cơ sở dữ liệu PostgreSQL và người dùng cho NetBox, nhập mật khẩu Redis mà bạn đã cấu hình và dán SECRET_KEY đã tạo vào tham số 'SECRET_KEY'.
Lưu và thoát tệp khi hoàn tất.
Bây giờ hãy chạy tập lệnh bên dưới '/opt/netbox/upgrade.sh' để khởi động NetBox IRM cài đặt.
Điều này sẽ cài đặt tạo môi trường ảo Python cho ứng dụng web NetBox, cài đặt các phụ thuộc Python cần thiết thông qua kho lưu trữ PyPI, chạy di chuyển cơ sở dữ liệu cho NetBox và cuối cùng tạo các tệp tĩnh cho ứng dụng web NetBox.
Dưới đây là kết quả đầu ra khi tập lệnh upgrade.sh được thực thi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22684%22%3E%3C/svg%3E
Dưới đây là thông báo đầu ra khi quá trình cài đặt NetBox hoàn tất.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22709%22%20height=%22443%22%3E%3C/svg%3E
Lúc này, bạn đã cài đặt NetBox IRM vào hệ thống của mình. Nhưng bạn vẫn cần thiết lập cài đặt NetBox của mình.
Để bắt đầu, hãy chạy lệnh bên dưới để kích hoạt môi trường ảo Python cho cài đặt NetBox của bạn.
Khi được kích hoạt, lời nhắc của bạn sẽ trở thành '(venv) root@hostname....'.
Tiếp theo, di chuyển thư mục làm việc đến '/opt/netbox/netbox' và chạy tập lệnh Django 'manage.py' để tạo người dùng quản trị NetBox mới.
Nhập người dùng quản trị mới, email và mật khẩu cho NetBox của bạn. Bạn sẽ nhận được thông báo 'Superuser created successfully.', nghĩa là người dùng quản trị NetBox đã được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22667%22%20height=%22282%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để thiết lập cron sẽ chạy hàng ngày. Tập lệnh 'netbox-housekeeping.sh' được sử dụng để dọn dẹp môi trường NetBox của bạn, điều này sẽ xóa các tác vụ đã hết hạn, phiên cũ hoặc bất kỳ bản ghi nào đã hết hạn.
Sau khi cấu hình cron cho NetBox, bạn sẽ thiết lập NetBox để chạy với Gunicorn.
Chạy lệnh bên dưới để sao chép cấu hình Guncorn vào '/opt/netbox/gunicorn.py'. Sau đó, mở tệp cấu hình Gunicorn '/opt/netbox/gunicorn.py' bằng lệnh trình chỉnh sửa nano bên dưới.
Thay đổi tham số 'bind' bằng dòng sau. Lệnh này sẽ chạy ứng dụng web NetBox cục bộ với cổng '8001'.
Lưu và thoát tệp khi hoàn tất.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22189%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để sao chép các dịch vụ systemd mặc định cho NetBox vào Thư mục '/etc/systemd/system'. Lệnh này sẽ sao chép tệp dịch vụ 'netbox' và 'netbox-rq' sẽ được sử dụng để quản lý NetBox.
Bây giờ hãy chạy tiện ích lệnh systemctl bên dưới để tải lại trình quản lý systemd và áp dụng các thay đổi mới cho hệ thống của bạn.
Cuối cùng, hãy chạy bên dưới lệnh systemctl để khởi động và kích hoạt dịch vụ 'netbox-rq'. Thao tác này cũng sẽ tự động khởi động dịch vụ 'netbox' chính.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22132%22%3E%3C/svg%3E
Bây giờ hãy xác minh cả hai dịch vụ 'netbox-rq' và 'netbox' thông qua systemcl bên dưới lệnh.
Đầu ra của trạng thái dịch vụ 'netbox-rq'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22210%22%3E%3C/svg%3E
Đầu ra của dịch vụ 'netbox''.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22202%22%3E%3C/svg%3E
Tại thời điểm này, NetBox IRM đang chạy như một dịch vụ systemd và nó đang chạy như một ứng dụng WSGI với Gunicorn. Trong bước tiếp theo, bạn sẽ cài đặt và thiết lập httpd như một proxy ngược cho NetBox.
Chạy lệnh dnf bên dưới để cài đặt máy chủ web httpd. Nhập y khi được nhắc xác nhận và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22377%22%3E%3C/svg%3E
Tiếp theo, tạo tệp máy chủ ảo httpd mới '/etc/httpd/conf.d/netbox.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Thêm các dòng sau vào tệp và đảm bảo thay đổi tên miền 'netbox.howtoforge.local' bằng tên miền của bạn. Với máy chủ ảo này, bạn sẽ thiết lập httpd làm proxy ngược cho ứng dụng NetBox chạy như ứng dụng WSGI trên cổng '8001'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Tiếp theo, chạy lệnh apachectl bên dưới để xác minh cấu hình httpd. Và nếu bạn cấu hình httpd đúng, bạn sẽ nhận được kết quả như sau 'Cú pháp OK'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22646%22%20height=%22198%22%3E%3C/svg%3E
Bây giờ hãy chạy tiện ích lệnh systemctl bên dưới để khởi động và kích hoạt web httpd máy chủ.
Sau đó, hãy xác minh máy chủ web httpd để đảm bảo rằng dịch vụ đang chạy. Bạn sẽ nhận được thông báo máy chủ web httpd đang chạy và được bật, nghĩa là máy chủ web httpd sẽ tự động khởi động khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22262%22%3E%3C/svg%3E
Với thông báo này, ứng dụng NetBox đang chạy và có thể truy cập được. Nhưng trước đó, bạn phải mở cả cổng HTTP và HTTPS trong firewalld.
Chạy lệnh firewall-cmd bên dưới để mở dịch vụ HTTP và HTTPS. Sau đó, tải lại firewalld để áp dụng các thay đổi.
Xác minh trạng thái firewalld thông qua lệnh bên dưới.
Đầu ra như thế này cho bạn thấy các dịch vụ HTTP và HTTPS đã được thêm vào firewalld.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22289%22%3E%3C/svg%3E
Với điều này, bây giờ bạn đã có ứng dụng web NetBox đang chạy và có thể truy cập - Bạn có thể truy cập cài đặt NetBox, nhưng bằng giao thức HTTP không an toàn. Ở bước tiếp theo, bạn sẽ bảo mật triển khai NetBox của mình bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt.
Cài đặt công cụ Certbot và plugin httpd/Apache thông qua lệnh dnf bên dưới.
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22474%22%3E%3C/svg%3E
Sau khi Certbot được cài đặt, hãy chạy lệnh bên dưới để tạo chứng chỉ SSL/TLS cho tên miền của bạn. Ngoài ra, hãy đảm bảo thay đổi tên miền và địa chỉ email trong lệnh sau.
Lệnh này sẽ tạo chứng chỉ SSL/TLS mới cho tên miền của bạn. Ngoài ra, lệnh này sẽ tự động thiết lập HTTPS trên cấu hình máy chủ ảo httpd của bạn và thiết lập chuyển hướng tự động từ HTTP sang HTTPS cho tệp máy chủ ảo NetBox của bạn. Chứng chỉ SSL/TLS của Certbot được tạo vào thư mục '/etc/elstencrypt/live/netbox.howtoforge.local/'.
Bạn sẽ thấy trang chủ mặc định của cài đặt NetBox - Đây giống như bản xem trước cài đặt NetBox của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22496%22%3E%3C/svg%3E
Nhấp vào Nút 'Đăng nhập' ở menu trên cùng bên phải và bạn sẽ được chuyển hướng đến màn hình đăng nhập NetBox.
Đăng nhập bằng tên người dùng và mật khẩu quản trị của bạn, sau đó nhấp vào 'Đăng nhập'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22495%22%20height=%22391%22%3E%3C/svg%3E
Khi bạn có tên người dùng và mật khẩu phù hợp và chính xác cho NetBox, bây giờ bạn sẽ được đăng nhập vào bảng điều khiển quản trị NetBox.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22482%22%3E%3C/svg%3E
Như vậy là bạn đã hoàn tất cài đặt NetBox IRM với PostgreSQL, Redis, Gunciron và máy chủ web httpd.
Thông qua hướng dẫn, bạn cũng đã học cách thiết lập xác thực trên PostgreSQL, bật xác thực trên Redis, thiết lập httpd làm proxy ngược và bảo mật NetBox bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt.
Với NeBox được cài đặt đầy đủ, giờ đây bạn có thể tích hợp NetBox vào trung tâm dữ liệu của mình, thêm tích hợp với REST API hoặc thêm xác thực của bên thứ ba thông qua LDAP, Azure AD và Okta làm phụ trợ SSO (Đăng nhập một lần).
NetBox giúp bạn quản lý cơ sở hạ tầng của mình, bao gồm:
- DCIM (Quản lý cơ sở hạ tầng trung tâm dữ liệu)
- IPAM (Quản lý địa chỉ IP)
- Mạch dữ liệu
- Kết nối (Mạng, bảng điều khiển và nguồn điện)
- Giá đỡ thiết bị
- Ảo hóa
- Bí mật
Điều kiện tiên quyết
Trước khi bắt đầu, hãy đảm bảo rằng bạn có các yêu cầu sau:- Máy chủ Rocky Linux 9 - Ví dụ này sử dụng máy chủ Rocky Linux có tên máy chủ là 'netbox-rocky'.
- Người dùng không phải root có quyền quản trị viên sudo/root.
- SELinux chạy ở chế độ cho phép.
- Tên miền hoặc tên miền phụ trỏ đến địa chỉ IP của máy chủ - Ví dụ này sử dụng tên miền phụ là 'netbox.howtoforge.local' để chạy NetBox.
Cài đặt và cấu hình PostgreSQL
NetBox IRM theo mặc định hỗ trợ máy chủ cơ sở dữ liệu PostgreSQL. Tại thời điểm viết bài này, yêu cầu ít nhất là PostgreSQL v10 trở lên. Theo mặc định, kho lưu trữ Rocky Linux cung cấp máy chủ PostgreSQL v13, phù hợp để triển khai NetBox.Trong bước này, bạn sẽ cài đặt máy chủ cơ sở dữ liệu PostgreSQL, thiết lập xác thực mật khẩu, sau đó tạo cơ sở dữ liệu và người dùng mới mà NetBox sẽ sử dụng.
Để bắt đầu, hãy chạy lệnh bên dưới để cài đặt máy chủ PostgreSQL trên Rocky Linux máy chủ.
Mã:
sudo dnf install postgresql-server
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22244%22%3E%3C/svg%3E
Sau khi cài đặt máy chủ PostgreSQL, hãy chạy lệnh bên dưới để khởi tạo cơ sở dữ liệu PostgreSQL và cấu hình.
Mã:
sudo postgresql-setup --initdb
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22225%22%3E%3C/svg%3E
Sau khi máy chủ PostgreSQL được khởi tạo, tiếp theo bạn sẽ thiết lập mã hóa mật khẩu và xác thực cho người dùng PostgreSQL.
Mở Tệp cấu hình PostgreSQL '/var/lib/pgsql/data/postgresql.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /var/lib/pgsql/data/postgresql.conf
Mã:
password_encryption = scram-sha-256
Tiếp theo, mở tệp cấu hình PostgreSQL khác '/var/lib/pgsql/data/pg_hba.conf' bằng lệnh bên dưới. Tệp này là nơi bạn có thể xác định các phương thức xác thực cho PostgreSQL của mình.
Mã:
sudo nano /var/lib/pgsql/data/pg_hba.conf
Mã:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22743%22%20height=%22340%22%3E%3C/svg%3E
Bây giờ hãy chạy systemctl bên dưới tiện ích lệnh để khởi động và kích hoạt dịch vụ PostgreSQL.
Mã:
sudo systemctl start postgresql
sudo systemctl enable postgresql
Mã:
sudo systemctl status postgresql
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E
Bây giờ bạn đã cấu hình xác thực mật khẩu cho máy chủ PostgreSQL, bây giờ đang chạy. Tiếp theo, bạn sẽ thiết lập mật khẩu mới cho người dùng mặc định 'postgres' và tạo cơ sở dữ liệu và người dùng mới mà NetBox sẽ sử dụng.
Đăng nhập vào shell PostgreSQL thông qua lệnh bên dưới.
Mã:
sudo -u postgres psql
Mã:
ALTER USER postgres WITH PASSWORD 'PostgreSQLPass';
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22634%22%20height=%22227%22%3E%3C/svg%3E
Tiếp theo, chạy truy vấn bên dưới để tạo cơ sở dữ liệu PostgreSQL và người dùng mới. Ngoài ra, hãy đảm bảo thay đổi mật khẩu mặc định trong truy vấn sau.
Trong ví dụ này, bạn sẽ tạo một cơ sở dữ liệu mới 'netboxdb' với người dùng 'netbox' sẽ được sử dụng để cài đặt NetBox.
Mã:
CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22654%22%20height=%22219%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để đăng nhập vào shell PostgreSQL thông qua người dùng mới 'netbox' vào cơ sở dữ liệu mới 'netboxdb'. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu của bạn.
Mã:
sudo -u postgres psql --username netbox --password --host localhost netboxdb
Mã:
\conninfo
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
Sau khi cài đặt PostgreSQL, cơ sở dữ liệu và tạo người dùng, tiếp theo bạn sẽ cài đặt Redis, được sử dụng làm quản lý bộ nhớ đệm trên ứng dụng web NetBox.
Cài đặt và cấu hình Redis
Redis là cơ sở dữ liệu khóa-giá trị miễn phí và mã nguồn mở mà NetBox sẽ sử dụng để quản lý bộ nhớ đệm và quản lý hàng đợi. Tại thời điểm viết bài này, NetBox yêu cầu ít nhất máy chủ Redis v4 và kho lưu trữ Rocky Linux mặc định cung cấp Redis v6, phù hợp với triển khai NetBox của bạn.Cài đặt Redis vào máy chủ Rocky Linux của bạn thông qua lệnh dnf bên dưới.
Mã:
sudo dnf install redis
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22194%22%3E%3C/svg%3E
Sau khi Redis được cài đặt, hãy mở tệp cấu hình Redis '/etc/redis/redis.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/redis/redis.conf
Mã:
requirepass RedisPasswordNetBox
Tiếp theo, chạy lệnh systemctl bên dưới để khởi động máy chủ Redis và bật nó.
Mã:
sudo systemctl start redis
sudo systemctl enable redis
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22704%22%20height=%22194%22%3E%3C/svg%3E
Sau đó, xác minh máy chủ Redis thông qua tiện ích lệnh systemctl bên dưới.
Mã:
sudo systemctl status redis
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22240%22%3E%3C/svg%3E
Để xác minh cài đặt Redis của bạn, bạn sẽ truy cập Redis thông qua lệnh 'redis-cli' bên dưới.
Mã:
redis-cli
Mã:
ping
Mã:
AUTH RedisPasswordNetBox
Mã:
ping
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22440%22%20height=%22294%22%3E%3C/svg%3E
Lúc này, bạn đã cài đặt máy chủ cơ sở dữ liệu PostgreSQL và cơ sở dữ liệu khóa-giá trị Redis trên Rocky Linux. Bây giờ bạn đã sẵn sàng để bắt đầu cài đặt NetBox.
Cài đặt Netbox IRM
NetBox là một ứng dụng web được viết bằng Python Django Framework. Phiên bản hiện tại của NetBox yêu cầu ít nhất Python 3.8, 3.9, 3.10 hoặc 3.11. Và Python mặc định trên Rocky Linux 9 là Python 3.9, phù hợp để triển khai NetBox.Để bắt đầu, hãy chạy lệnh dnf bên dưới để cài đặt các gói phụ thuộc cho NetBox. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22541%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để tạo người dùng hệ thống mới 'netbox' với thư mục home mặc định '/opt/netbox'.
Mã:
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Mã:
mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Mã:
sudo chown -R netbox:netbox /opt/netbox
cd /opt/netbox/netbox/netbox
Mã:
sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.py
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22274%22%3E%3C/svg%3E
Mở tệp cấu hình NetBox 'configuration.py' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo -u netbox nano configuration.py
Mã:
# domain and IP address
ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.5.59']
# database configuration
DATABASE = {
'NAME': 'netboxdb', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'NetBoxRocks', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age (seconds)
}
# Redis cache configuration
REDIS = {
'tasks': {
'HOST': 'localhost', # Redis server
'PORT': 6379, # Redis port
'PASSWORD': 'RedisPasswordNetBox', # Redis password (optional)
'DATABASE': 0, # Database ID
'SSL': False, # Use SSL (optional)
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 'RedisPasswordNetBox',
'DATABASE': 1, # Unique ID for the second database
'SSL': False,
}
}
# Secret key
SECRET_KEY = '-K0AV#USk(!-6hAEF-8NMgweJh6ex&+j0Kb$N7bi=*jsF9TOg*'
Bây giờ hãy chạy tập lệnh bên dưới '/opt/netbox/upgrade.sh' để khởi động NetBox IRM cài đặt.
Mã:
sudo -u netbox /opt/netbox/upgrade.sh
Dưới đây là kết quả đầu ra khi tập lệnh upgrade.sh được thực thi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22684%22%3E%3C/svg%3E
Dưới đây là thông báo đầu ra khi quá trình cài đặt NetBox hoàn tất.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22709%22%20height=%22443%22%3E%3C/svg%3E
Lúc này, bạn đã cài đặt NetBox IRM vào hệ thống của mình. Nhưng bạn vẫn cần thiết lập cài đặt NetBox của mình.
Cấu hình NetBox IRM
Trong bước này, bạn sẽ thiết lập cài đặt NetBox IRM bằng cách tạo người dùng quản trị cho NetBox, thiết lập cron và thiết lập dịch vụ systemd cho NetBox.Để bắt đầu, hãy chạy lệnh bên dưới để kích hoạt môi trường ảo Python cho cài đặt NetBox của bạn.
Mã:
source /opt/netbox/venv/bin/activate
Tiếp theo, di chuyển thư mục làm việc đến '/opt/netbox/netbox' và chạy tập lệnh Django 'manage.py' để tạo người dùng quản trị NetBox mới.
Mã:
cd /opt/netbox/netbox
python3 manage.py createsuperuser
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22667%22%20height=%22282%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để thiết lập cron sẽ chạy hàng ngày. Tập lệnh 'netbox-housekeeping.sh' được sử dụng để dọn dẹp môi trường NetBox của bạn, điều này sẽ xóa các tác vụ đã hết hạn, phiên cũ hoặc bất kỳ bản ghi nào đã hết hạn.
Mã:
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
Chạy lệnh bên dưới để sao chép cấu hình Guncorn vào '/opt/netbox/gunicorn.py'. Sau đó, mở tệp cấu hình Gunicorn '/opt/netbox/gunicorn.py' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py
Mã:
bind = '127.0.0.1:8001'
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22189%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để sao chép các dịch vụ systemd mặc định cho NetBox vào Thư mục '/etc/systemd/system'. Lệnh này sẽ sao chép tệp dịch vụ 'netbox' và 'netbox-rq' sẽ được sử dụng để quản lý NetBox.
Mã:
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22132%22%3E%3C/svg%3E
Bây giờ hãy xác minh cả hai dịch vụ 'netbox-rq' và 'netbox' thông qua systemcl bên dưới lệnh.
Mã:
sudo systemctl status netbox
sudo systemctl status netbox-rq
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22210%22%3E%3C/svg%3E
Đầu ra của dịch vụ 'netbox''.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22202%22%3E%3C/svg%3E
Tại thời điểm này, NetBox IRM đang chạy như một dịch vụ systemd và nó đang chạy như một ứng dụng WSGI với Gunicorn. Trong bước tiếp theo, bạn sẽ cài đặt và thiết lập httpd như một proxy ngược cho NetBox.
Thiết lập httpd như một Proxy ngược
Với NetBox chạy như một ứng dụng WSGI với Gunicorn, bây giờ bạn sẽ cài đặt và cấu hình máy chủ web httpd như một proxy ngược cho NetBox. Bạn sẽ cài đặt gói httpd, tạo một tệp máy chủ ảo httpd mới, sau đó khởi động và kích hoạt dịch vụ httpd. Cuối cùng, bạn cũng sẽ thiết lập firewalld để mở các cổng HTTP và HTTPS.Chạy lệnh dnf bên dưới để cài đặt máy chủ web httpd. Nhập y khi được nhắc xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install httpd
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22377%22%3E%3C/svg%3E
Tiếp theo, tạo tệp máy chủ ảo httpd mới '/etc/httpd/conf.d/netbox.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/httpd/conf.d/netbox.conf
Mã:
ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.howtoforge.local
Alias /static /opt/netbox/netbox/static
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
ProxyPass !
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/
Tiếp theo, chạy lệnh apachectl bên dưới để xác minh cấu hình httpd. Và nếu bạn cấu hình httpd đúng, bạn sẽ nhận được kết quả như sau 'Cú pháp OK'.
Mã:
sudo apachectl configtest
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22646%22%20height=%22198%22%3E%3C/svg%3E
Bây giờ hãy chạy tiện ích lệnh systemctl bên dưới để khởi động và kích hoạt web httpd máy chủ.
Mã:
sudo systemctl start httpd
sudo systemctl enable httpd
Mã:
sudo systemctl status httpd
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22262%22%3E%3C/svg%3E
Với thông báo này, ứng dụng NetBox đang chạy và có thể truy cập được. Nhưng trước đó, bạn phải mở cả cổng HTTP và HTTPS trong firewalld.
Chạy lệnh firewall-cmd bên dưới để mở dịch vụ HTTP và HTTPS. Sau đó, tải lại firewalld để áp dụng các thay đổi.
Mã:
sudo firewall-cmd --add-servic={http,https} --permanent
sudo firewall-cmd --reload
Mã:
sudo firewall-cmd --list-all
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22289%22%3E%3C/svg%3E
Với điều này, bây giờ bạn đã có ứng dụng web NetBox đang chạy và có thể truy cập - Bạn có thể truy cập cài đặt NetBox, nhưng bằng giao thức HTTP không an toàn. Ở bước tiếp theo, bạn sẽ bảo mật triển khai NetBox của mình bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt.
Bảo mật NetBox IRM bằng SSL Letsencrypt
Ở bước này, bạn sẽ bảo mật cài đặt NetBox bằng chứng chỉ SSL/TLS có thể được tạo thông qua Certbot và Letsencrypt. Trước khi bắt đầu, hãy đảm bảo rằng tên miền được trỏ đến địa chỉ IP của máy chủ. Ngoài ra, hãy đảm bảo rằng bạn có địa chỉ email sẽ được sử dụng để đăng ký Letsencrypt.Cài đặt công cụ Certbot và plugin httpd/Apache thông qua lệnh dnf bên dưới.
Mã:
sudo dnf install certbot python3-certbot-apache
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22474%22%3E%3C/svg%3E
Sau khi Certbot được cài đặt, hãy chạy lệnh bên dưới để tạo chứng chỉ SSL/TLS cho tên miền của bạn. Ngoài ra, hãy đảm bảo thay đổi tên miền và địa chỉ email trong lệnh sau.
Mã:
sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email [emailprotected] -d netbox.howtoforge.local
Đăng nhập vào NetBox
Mở trình duyệt web của bạn và truy cập tên miền cài đặt NetBox của bạn (ví dụ: https://netbox.howtoforge.local/).Bạn sẽ thấy trang chủ mặc định của cài đặt NetBox - Đây giống như bản xem trước cài đặt NetBox của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22496%22%3E%3C/svg%3E
Nhấp vào Nút 'Đăng nhập' ở menu trên cùng bên phải và bạn sẽ được chuyển hướng đến màn hình đăng nhập NetBox.
Đăng nhập bằng tên người dùng và mật khẩu quản trị của bạn, sau đó nhấp vào 'Đăng nhập'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22495%22%20height=%22391%22%3E%3C/svg%3E
Khi bạn có tên người dùng và mật khẩu phù hợp và chính xác cho NetBox, bây giờ bạn sẽ được đăng nhập vào bảng điều khiển quản trị NetBox.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22482%22%3E%3C/svg%3E
Như vậy là bạn đã hoàn tất cài đặt NetBox IRM với PostgreSQL, Redis, Gunciron và máy chủ web httpd.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt phần mềm Infrastructure Resource Modelling (IRM) NetBox trên máy chủ Rocky Linux 9. Bạn đã cấu hình NetBox với máy chủ cơ sở dữ liệu PostgreSQL, Redis làm quản lý bộ đệm và máy chủ web httpd làm proxy ngược trên máy chủ Rocky Linux.Thông qua hướng dẫn, bạn cũng đã học cách thiết lập xác thực trên PostgreSQL, bật xác thực trên Redis, thiết lập httpd làm proxy ngược và bảo mật NetBox bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt.
Với NeBox được cài đặt đầy đủ, giờ đây bạn có thể tích hợp NetBox vào trung tâm dữ liệu của mình, thêm tích hợp với REST API hoặc thêm xác thực của bên thứ ba thông qua LDAP, Azure AD và Okta làm phụ trợ SSO (Đăng nhập một lần).