Làm thế nào để xác định và tái sản xuất số cổng tăng trong Ansible?


12

Tôi chưa quen với Ansible, nhưng tôi phải duy trì một bộ playbook, tương ứng với các dịch vụ sẽ được thiết lập trong một môi trường nhất định. Chúng cần được gán một cổng, chứng chỉ, v.v. Điều này dẫn đến nhiều tệp có danh sách về cơ bản luôn luôn cùng tên và gán cho chúng.

Trong nhiều trường hợp, tôi nghĩ rằng tôi có thể dễ dàng sử dụng lại service_name dưới dạng biến, nhưng khi ánh xạ tới IP, cổng hoặc các số nhận dạng số khác, tôi vẫn chưa tìm ra cách xác định các số khác nhau theo cách có thể lặp lại và tốt nhất vẫn là tương tự ngay cả khi các dịch vụ mới được thêm vào. Tôi đã cân nhắc sử dụng cơ sở dữ liệu SQLite để lưu trữ các dịch vụ từ và tạo các giá trị từ id của chúng, nhưng tôi không biết làm thế nào để tích hợp nó với Ansible.

Tôi giả định rằng việc gán số cổng tăng không phải là điều hoàn toàn mới; đó là một cái gì đó rất nhiều sysadins trên cơ sở hàng ngày vì vậy phải có một số cách để làm điều đó.

Chỉnh sửa : Chúng tôi trực tiếp thêm số cổng, v.v. group_vars/all.ymlnhư thế này:

ports:
    service1:1024
    service2:1025
    service3:1026

Khoảng không quảng cáo được tạo tự động, vì chúng tôi tạo các nhà tù bổ sung (BSD) và phụ thuộc vào vai trò sẽ được thực hiện.


2
Vì dù sao bạn có thể phải thêm dịch vụ vào kho, điều gì ngăn bạn thêm số cổng cụ thể ở đó theo cách thủ công? Hoặc nếu khoảng không quảng cáo của bạn được tạo tự động, thì có lẽ bạn nên giải quyết vấn đề ở cấp độ tạo khoảng không quảng cáo
SztupY

Bạn có thể vui lòng bao gồm một số đoạn trích Ansible? Không rõ nếu bạn đang sử dụng group_varshoặc thêm các biến ngay vào tệp kiểm kê. Nó cũng không rõ làm thế nào hàng tồn kho của bạn đang được tạo ra.
Thợ săn rừng

Bạn đã cân nhắc sử dụng một công cụ khám phá dịch vụ như Lãnh sự của HashiCorp chưa?
Foghorn CTO

Câu trả lời:


5

Tuyên bố miễn trừ trách nhiệm: Tôi không sử dụng Ansible.

Những gì tôi sẽ làm là sử dụng một số "dự đoán" ngẫu nhiên. Theo tài liệu Ansible, bạn có thể chọn trình tạo số ngẫu nhiên:

Kể từ phiên bản Ansible 2.3, cũng có thể khởi tạo trình tạo số ngẫu nhiên từ một hạt giống. Bằng cách này, bạn có thể tạo các số ngẫu nhiên nhưng bình thường:

"{{59 | ngẫu nhiên (seed = Invent_hostname)}} * * * * root / script / from / cron"

Vì vậy, trong trường hợp của bạn cho một số cổng (tôi giả sử không được xử lý) tôi sẽ đi đến một biến với một cái gì đó như:

port="{{ 32767 |random(start=1024,seed=service_name) }}"

Tối đa ở 32767 để tránh xung đột với bất kỳ cổng nào do khách hàng khởi tạo (Xem cổng Ephemeral để biết lý do).


Đó là một ý tưởng tốt, mà tôi đã xem xét, nhưng nó làm cho phần ngày càng không thể imo. Có một số dịch vụ nhất định có liên quan logic trong một phạm vi cổng nhất định có lẽ là rất mong muốn.
giữa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.