Ansible cho phép cấu trúc các thùng hàng tồn kho và nhiệm vụ theo nhiều cách. Phát triển ý kiến của riêng bạn về nơi đặt mọi thứ theo cách hợp lý, dựa trên những gì các plugin Ansible khác nhau mong đợi.
Phòng thí nghiệm nằm trong một VLAN được bảo mật, nghĩa là để chạy các tập lệnh từ
điều khiển từ xa, tôi cần kết nối với máy bằng IP của họ chứ không phải bằng
FQDN của họ và thông tin đăng nhập cung cấp.
Sai. DNS có thể cho mọi môi trường. Có lẽ ủy quyền một khu vực hiddai.lab.example.net
đến máy chủ DNS của phòng thử nghiệm và các máy chủ sử dụng FQDN trong vùng này.
Mà nói, ansible_host
biến có thể được cung cấp ghi đè tên máy chủ hoặc địa chỉ IP cho các phần bổ trợ kết nối để sử dụng.
Không sử dụng địa chỉ IP được phân bổ cho người dùng khác. 1.1.1.1 không phải của bạn, nó là Cloudflare DNS. Sử dụng địa chỉ IP thực của bạn hoặc mạng kiểm tra tài liệu như 192.0.2.0/24 198.51.100.0/24 203.0.113.0/24.
Ngoài ra, tôi cần quyết định xem sản phẩm của mình sẽ được cài đặt an toàn hay
không có trong phòng thí nghiệm của tôi (giao thức nào - HTTPS hay HTTP?)
Luôn bảo mật, vì vậy HTTPS. Cài đặt phòng thí nghiệm có thể thoải mái hơn trên PKI, CA đơn giản cá nhân, chứng chỉ tự ký.
Ngoại trừ danh sách máy chủ và địa chỉ IP trong kho ansible yaml
tệp, có thể thêm các biến hoặc Khóa chẳng hạn như:
"thông tin xác thực", "giao thức", "tệp", "loại máy", v.v...
Không, hãy tách danh sách máy chủ khỏi dữ liệu cấu hình ứng dụng cấp vai trò. Điều này cho phép nhiều hàng tồn kho. Sao chép dữ liệu tối thiểu giữa nhiều phòng thí nghiệm, dàn dựng và hàng tồn kho sản xuất.
Giới hạn khoảng không quảng cáo ở mức cần thiết để kết nối với máy chủ: tên máy chủ, người dùng, có thể là thông tin xác thực, plugin kết nối. Đặt chi tiết ứng dụng ở một nơi khác, ví dụ group_vars.
tín dụng:
người dùng: một
vượt qua: 1
Nói về thông tin đăng nhập, tôi cho rằng mật khẩu một ký tự ngắn không thể chấp nhận được. Thậm chí không có nó như là một ví dụ giả mạo. Lý tưởng nhất là thay thế xác thực mật khẩu bằng thứ gì đó tốt hơn như xác thực dựa trên khóa hoặc chứng chỉ. Hoặc ít nhất là các cụm mật khẩu dựa trên từ dài, chẳng hạn như may-tinh-cong-chi
.
Đường dẫn tệp của bạn có vẻ là Windows. Đọc Tài liệu winrm của Ansible và xem xét các tùy chọn của bạn cho auth.
Lưu trữ tín dụng trong kho có nghĩa là bất kỳ ai có tệp kho đều có thể chạy lệnh. Bảo mật tệp một cách thích hợp. Cân nhắc lưu trữ tín dụng trong các tệp khóa riêng biệt hoặc trong một số hệ thống bí mật mà bạn có thể truy cập bằng tra cứu Ansible.
Tệp vars của bạn là YAML, nhưng không phải trong cấu trúc Plugin kiểm kê YAML tĩnh của Ansible mong đợi. Có lẽ một cái gì đó như thế này như khoảng không quảng cáo/lab.yml
Tôi đã thay đổi một số giá trị thành các ví dụ thực tế cho mỗi RFC trên internet.
---
tất cả các:
bọn trẻ:
các cửa sổ:
# Nhóm chỉ chứa các máy chủ Windows cho phép
# Biến xác thực và kết nối dành riêng cho Windows
lọ:
ansible_user: một
ansible_password: không may mắn-giả vờ-chiếm-quý
ansible_connection: winrm
ansible_winrm_transport: credssp
bọn trẻ:
đb:
# FQDN dưới dạng tên_máy chủ lưu trữ sẽ giải quyết nếu trong DNS
# Ansible chia nhãn trên cùng cho bạn dưới dạng var inventory_hostname_short đặc biệt
máy chủ:
center-db.hiddai.lab.example.net:
# ansible_host ghi đè những gì sẽ kết nối với
# Chẳng hạn như khi không có DNS
ansible_host: 203.0.113.23
bọn trẻ:
xếp hàng:
máy chủ:
center-queue.hiddai.lab.example.net:
ansible_host: 203.0.113.83
bọn trẻ:
ứng dụng:
máy chủ:
center-app.hiddai.lab.example.net:
ansible_host: 203.0.113.62
bọn trẻ:
khách hàng:
máy chủ:
client-app.hiddai.lab.example.net:
ansible_host: 203.0.113.28
db: trung tâm-db
Tôi không rõ "trung tâm" trong ví dụ này là gì, sản phẩm phần mềm, tên triển khai, tên khách hàng? Vì khoảng không quảng cáo Ansible thực sự bằng phẳng trong nội bộ, tôi đã thu gọn nó. Thêm lại nó dưới dạng biến hoặc nhóm nếu muốn.
Về dữ liệu cấu hình ứng dụng cụ thể của máy chủ lưu trữ, hãy xem xét group_vars. Những thứ này có thể liên quan đến tệp khoảng không quảng cáo của bạn, với tên tệp khớp với tên nhóm.
khoảng không quảng cáo/group_vars/windows.yml
---
base_dir: 'C:\thư mục\'
tệp_common:
- Máy chủ.msi
khoảng không quảng cáo/group_vars/app.yml
---
tệp_bổ sung:
- các tập tin
- Trung tâm-Client.msi
khoảng không quảng cáo/group_vars/client.yml
---
tệp_bổ sung:
- Máy khách-Máy khách.msi
Lưu ý rằng tôi đã phát minh ra một vài biến cho các tệp. Được đặt tên khác nhau, sau này bạn có thể kết hợp chúng thành một danh sách, vì vậy {{ files_common + files_additional }}
Lý tưởng nhất là viết và sử dụng các vai trò Ansible, có các biến và nhiệm vụ riêng. Xem xét các giá trị mặc định của vai trò phù hợp với hầu hết các trường hợp sử dụng. Ví dụ: win_package có nhiệm vụ cài đặt các gói msi này và tải xuống theo mặc định từ máy chủ https. Nhưng hãy đặt tệp gói nguồn thành một biến, để nó có thể bị ghi đè.
Và các vở kịch là thứ ánh xạ các mẫu máy chủ này thành các vai trò. Tôi không chắc nên gọi ứng dụng của bạn là gì khi chỉ đặt tên chung chung, vì vậy tôi đã thêm tiền tố cho các vai trò bằng "điều". chơi.yml:
---
máy chủ: db
vai trò:
- điềudb
máy chủ: hàng đợi
vai trò:
- hàng đợi
máy chủ: ứng dụng
vai trò:
- điều ứng dụng
máy chủ: khách hàng
vai trò:
- khách hàng
Chạy một playbook như vậy với ansible-playbook play.yml -i kho/lab.yml
Không bao gồm: các vai trò. Tôi không biết bạn muốn đạt được điều gì và câu trả lời này hơi dài.