Điểm:0

Làm cách nào để đăng ký một biến trong một vai trò và sử dụng nó trong một vai trò khác trong Ansible?

lá cờ np

Tôi đang cố gắng đăng ký một biến trong một vai trò và sau đó sử dụng nó trong một vai trò khác.

Đây là các tệp khác nhau tôi đang sử dụng:

playbook.yml

---
- máy chủ: hostsgroup1
  […]
  vai trò:
    - vai trò1
- máy chủ: 127.0.0.1
  kết nối: cục bộ
  vai trò:
    - vai2

vai trò1/nhiệm vụ/main.yml

- tên: Ví dụ 1
  […]
- tên: Ví dụ 2
  vỏ bọc:
    qm agent {{ VM_id }} network-get-interfaces |grep ip-address |grep '172.20' |grep -oE '((1?[0-9][0-9]?|2[0-4][ 0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5 ])'
  đăng ký: var_role1

vai2/nhiệm vụ/main.yml

- name: Thêm máy chủ vào pháo đài
  ansible.buildin.debug:
    msg : Kiểm tra {{ var_role1.stdout }}

Để biết thông tin, lệnh qm agent cung cấp cho tôi một địa chỉ IP và tôi muốn sử dụng nó trong vai trò thứ hai. Nhưng rõ ràng, hiện tại nó hiển thị lỗi khi tôi thực thi playbook:

gây tử vong: [127.0.0.1]: KHÔNG THÀNH CÔNG! => {"thông điệp": "Tác vụ bao gồm một tùy chọn có biến không xác định. Lỗi là: \"hostvars['proxmoxhosts']\" không xác định\n\nLỗi dường như nằm trong '/root/ansible/roles /bastion_add/tasks/main.yml': dòng 3, cột 3, nhưng có thể\nở đâu đó trong tệp tùy thuộc vào vấn đề cú pháp chính xác.\n\nDòng vi phạm dường như là:\n\n# tệp tác vụ cho bastion_add \n- tên: Thêm máy chủ vào pháo đài\n ^ tại đây\n"}

Tóm lại, tôi muốn sử dụng var_role1, đã đăng ký ở vai trò 1, ở vai trò 2.

Điểm:1
lá cờ in

set_fact nên làm thủ thuật.

- tên: Ví dụ 2
  vỏ bọc:
    qm agent {{ VM_id }} network-get-interfaces |grep ip-address |grep '172.20' |grep -oE '((1?[0-9][0-9]?|2[0-4][ 0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5 ])'
  đăng ký: var_role1
- bộ_thực tế:
    var_role1: "{{ var_role1.stdout }}"
Milos Vé avatar
lá cờ np
Tôi có phải gọi biến khác với "{{ var_role1.stdout }}" trong vai trò thứ hai không? Bởi vì nó vẫn không hoạt động với mẹo của bạn
lá cờ in
TBH Tôi đã không thực sự kiểm tra nó. `var_role1` tất nhiên là không đúng, `var_role1.stdout` phải đú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.