Điểm:0

an toàn | báo cáo điều kiện không nên bao gồm jinja2 khuôn mẫu | khi biến group_name

lá cờ cn

Tôi có một tệp main_task.yml ansible đơn giản được lặp từ một main.yml .

hàng tồn kho.ini

[cổng_22]
192.168.0.189
192.168.0.199
[cổng_222]
192.168.0.199
[cổng_888]
192.168.0.200 

main_task.yml

---
- tên: "chạy cái này trên {{ item }} máy chủ"
  gỡ lỗi: msg= "cái này chỉ chạy trên máy chủ p{{ item }}"
  khi: "{{ item }} trong group_names"
  #khi: tên_nhóm | select("mục|chuỗi") | danh sách | đếm > 0

chính.yml

- máy chủ: port_22, port_222
  kết nối: cục bộ
  lọ:
    cổng:
      - 22
      -222

  nhiệm vụ:
    - tên: Xác minh
      bao gồm các nhiệm vụ: main_task.yml
      vòng lặp: "{{cổng}}"

nó phàn nàn

[CẢNH BÁO]: các câu lệnh có điều kiện không được bao gồm các dấu phân cách tạo khuôn mẫu jinja2 như {{ }} hoặc {% %}. Đã tìm thấy: {{ item }} trong group_names

khi xóa mẫu jinja2, nhận được điều này:

bỏ qua: [192.168.0.189]

Làm thế nào tôi có thể đạt được điều này ?

Cập nhật:

Đã sửa đổi main.yml

- máy chủ: máy chủ_22, máy chủ_222
  #kết nối: cục bộ
  lọ:
    cổng:
      - 22
  nhiệm vụ:
    - tên: triển khai các tệp có địa chỉ mạng trong đó
      bao gồm các nhiệm vụ: main_task.yml
      vòng lặp: "{{cổng}}"

Đã sửa đổi main_task.yml


- tên: "chạy cái này trên {{ item }} máy chủ"
  gỡ lỗi: msg= "cái này chỉ chạy trên máy chủ p{{ item }}"
  khi nào: mục trong group_names
  #khi: tên_nhóm | select("mục|chuỗi") | danh sách | đếm > 0

- tên: tên máy chủ của tôi
  vỏ: tên máy chủ; tên máy chủ -tôi
  khi nào: mục trong group_names
  đăng ký: hostname_result

- gỡ lỗi:
    var: hostname_result.stdout_lines

Đầu ra:

   ansible-playbook main.yaml -i inventory.ini -u root

CHƠI [host_22, host_222] ********************************************* *************************************************** *************************************************** *************************************************** *************************************************** *****

NHIỆM VỤ [Thu thập thông tin] ********************************************* *************************************************** *************************************************** *************************************************** *************************************************** ******
được rồi: [192.168.0.189]
được rồi: [192.168.0.199]

NHIỆM VỤ [Xác minh] ************************************************ *************************************************** *************************************************** *************************************************** *******************************
bao gồm: /home/ubuntu/ansible/test/testing_loo/main_task.yml cho 192.168.0.199, 192.168.0.189 => (item=22)

NHIỆM VỤ [chạy cái này trên 22 máy chủ] ****************************************** *************************************************** *************************************************** *************************************************** *************************************************** ****
bỏ qua: [192.168.0.199]
bỏ qua: [192.168.0.189]

NHIỆM VỤ [tên máy chủ của tôi] ************************************************ *************************************************** *************************************************** *************************************************** *************************************************** **********
bỏ qua: [192.168.0.199]
bỏ qua: [192.168.0.189]

NHIỆM VỤ [gỡ lỗi] ************************************************ *************************************************** *************************************************** *************************************************** *************************************************** ***************
được rồi: [192.168.0.199] => {
    "hostname_result.stdout_lines": "BIẾN KHÔNG ĐƯỢC XÁC ĐỊNH!"
}
được rồi: [192.168.0.189] => {
    "hostname_result.stdout_lines": "BIẾN KHÔNG ĐƯỢC XÁC ĐỊNH!"
}
Điểm:1
lá cờ cn
  khi nào: mục trong group_names

khi các từ khóa đã được ngầm định trong một biểu thức Jinja, vì vậy hãy xóa {{ }} trong chúng.

Tuy nhiên lối chơi của bạn vẫn có vấn đề.

Về tác vụ Xác minh trong task.yml, gỡ lỗi chỉ in mọi thứ, nó không thực sự xác minh giống như tác vụ xác nhận. Ngoài ra, bạn là vòng:ing và đang chạy trên nhiều máy chủ, chạy 2 * 2 = 4 lần và có thể không phải là điều bạn muốn, dẫn đến một số lần bỏ qua bổ sung.

Tôi không thấy tác vụ gỡ lỗi có giá trị như thế nào và sẽ xóa hoàn toàn tác vụ đó. Có nhiều cách khác để xem lại nội dung của các nhóm, chẳng hạn như ansible-inventory công cụ dòng lệnh.

Một biểu thức trong tên của một nhiệm vụ sẽ không hoạt động như bạn mong đợi. Tôi nghĩ rằng nó sẽ chỉ phản ánh máy chủ đầu tiên hoặc một cái gì đó kỳ lạ như thế.

- máy chủ: tất cả
  kết nối: cục bộ

Không sử dụng nhiều máy chủ với kết nối cục bộ. Nó sẽ chạy mọi thứ nhiều lần nhưng không ssh ở bất cứ đâu, đây có thể không phải là điều bạn muốn. Các plugin hành động như gỡ lỗi vốn đã chạy trên máy chủ cục bộ. Hoặc bạn có thể đặt localhost là mẫu máy chủ. Cho nên:

  1. Xóa bỏ kết nối: cục bộ ở cấp độ chơi.
  2. Sử dụng một mẫu máy chủ cụ thể hơn tất cả. máy chủ: cổng_22, cổng_222 sẽ chạy trên cả hai nhóm và rõ ràng hơn về những gì bạn dự định.
divyashree kumar avatar
lá cờ cn
Như bạn đã đề xuất, tôi đã sửa đổi điều kiện `khi: mục trong tên_nhóm`,xóa `kết nối: cục bộ` và thêm mẫu máy chủ `hosts: port_22,port_222` và dán đầu ra. Nhưng quá trình thực thi không diễn ra chính xác trên các máy chủ từ xa và đầu ra bị trống do `bỏ qua` các máy chủ

Đă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.