Điểm:0

Các biến phổ biến cần đề cập trong tệp yaml ansible trong kho là gì?

lá cờ uz
  • Tôi cố gắng xây dựng một đường ống để cài đặt sản phẩm của mình.
  • Sản phẩm của tôi được cài đặt trong phòng thí nghiệm có ít nhất 8 máy (phòng thí nghiệm tại chỗ).
  • Tôi có một số phòng thí nghiệm tại chỗ, một số phòng thí nghiệm trên đám mây
  • Mỗi máy có một vai trò, ví dụ: máy Center-DB, máy Center-Queue hoặc máy Center-App, máy Middle và máy Client, v.v... Vì vậy, một số phòng thí nghiệm là: 1 Center - 1 Middle - 1 Client. hoặc 3 Trung tâm (Ứng dụng, DB, Hàng đợi) - 2 Trung tâm - 3 Khách hàng
  • Một số máy có một dịch vụ như DB, và một số như: DB, IIS, và message broker
  • Phòng thí nghiệm nằm trong một VLAN được bảo mật, nghĩa là để chạy tập lệnh 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à cung cấp thông tin xác thực.
  • thông tin đăng nhập đều giống nhau cho tất cả các máy.
  • Ngoài ra, có một tùy chọn trong tệp cài đặt để cài đặt sản phẩm được bảo mật (có chứng chỉ và cổng 443) hoặc không được bảo mật.
  • Trong quá trình cài đặt, trước tiên tôi cần sao chép vào từng máy tập tin cài đặt cụ thể, sau đó cài đặt chúng với các đối số cụ thể.

Ngoại trừ danh sách máy chủ lưu trữ và địa chỉ IP trong tệp yaml ansible của kho lưu trữ, 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",
  • "các tập tin",
  • "kiểu máy" v.v...?

HOẶC chúng nên được đặt trong một tệp khác như vai trò (nhiệm vụ). Xin hãy giúp tôi quyết định thông tin nào sẽ đi đến đâu. Tệp yaml ví dụ của tôi ở bên dưới:

---
tín dụng:
    người dùng: một
    vượt qua: 1
trung tâm:
    dbs:
        - đb:
              fqdn: center-db.foo.com
              cn: trung tâm-db
              các tập tin:
                  - C:\thư mục\Server.msi
              IP: 1.1.1.1
    hàng đợi: 
        - xếp hàng: 
              fqdn: center-queue.foo.com
              cn: hàng đợi trung tâm
              các tập tin:
                  - C:\thư mục\Server.msi
              IP: 2.2.2.2
    ứng dụng:
        - ứng dụng:
              fqdn: center-app.foo.com
              cn: ứng dụng trung tâm
              các tập tin:
                  - C:\thư mục\Server.msi
                  - C:\thư mục\Center-Client.msi
                  - C:\thư mục\tệp
              IP: 3.3.3.3
                  

               khách hàng:
                  - khách hàng:
                        đb:
                            cn: Máy khách-DB
                        ứng dụng:
                            fqdn: Khách hàng-APP.foo.com
                            cn: Ứng dụng khách
                            các tập tin:
                                - C:\thư mục\Server.msi
                                - C:\thư mục\Client-Client.msi
                            IP: 4.4.4.4
Điểm:1
lá cờ cn

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.

lá cờ uz
bạn đã đề cập rằng: "Lý tưởng nhất là viết và sử dụng vai trò Ansible". Điều đó có nghĩa là tôi có thể tránh thư mục "group_var" và sắp xếp các vars trong thư mục Vai trò\common\vars...HOẶC các thư mục đó có các mục tiêu hoàn toàn khác nhau?
John Mahowald avatar
lá cờ cn
Vai trò cho phép tái sử dụng. Tất cả điều này là tùy chọn, tùy thuộc vào cách bạn muốn cấu trúc mọi thứ. Sử dụng cả hai vai trò (với giá trị mặc định cho các biến của nó) với group_vars (ghi đè vai trò vars cho các nhóm nhất định) hoặc không sử dụng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.