Bối cảnh:
Tôi có một dự án với hai vai trò.
Tôi đã giảm số lượng nhiệm vụ thành những nhiệm vụ có vấn đề để hiểu rõ hơn.
Vấn đề:
Tôi chạy một tác vụ từ vai trò 1 trong server1 và cố gắng ủy quyền tác vụ cho trình ảo hóa vmware từ điều kiện trong tác vụ vai trò server1 đầu tiên.
Và có 1 host fail vì muốn thực hiện task role thứ 2 (Vmware) trong server1.
Lỗi:
gây tử vong: [máy chủ thử nghiệm]: KHÔNG THÀNH CÔNG! => {"reason": "tuyên bố hành động mâu thuẫn: máy chủ,
thu thập_facts\n\nCó vẻ như có lỗi trong '/home/ancible/proyects/extend_fs-role/roles/vmwaretaks/tasks/addvmwaredisk.yml': dòng 2, cột 3,
nhưng có thể\nở đâu đó trong tệp tùy thuộc vào vấn đề tntax.\n\nDòng vi phạm có vẻ là:\n\n---\n- hosts: localhost\n ^ here\n"}
Đây là cấu trúc:
.
âââ bộ sưu tập
â âââ tests.yml
âââ README.md
âââ resizefs_hosts.yml
âââ vai trò
âââ thay đổi kích thước
â  âââ mặc định
â  â  âââ main.yml
â  âââ xử lý
â  â  âââ main.yml
â âââ meta
â  â  âââ main.yml
â  âââ nhiệm vụ
â  â  âââ main.yml
â  â âââ findfreedisk.yml
â  âââ kiểm tra
â  â  âââ hàng tồn kho
â â  âââ test.yml
â  âââ vars
â âââ main.yml
âââ vmwaretaks
âââ mặc định
â âââ main.yml
âââ tập tin
âââ xử lý
â âââ main.yml
âââ meta
â âââ main.yml
âââ README.md
  âââ nhiệm vụ
 â  âââ main.yml
  â  âââ addvmwaredisk.yml
âââ mẫu
âââ kiểm tra
â  âââ hàng tồn kho
â âââ test.yml
âââ vars
âââ main.yml
Đây là thứ tự thực hiện trong trường hợp không tìm thấy free lun trong host:
resizefs_role_hosts.yml -> role/resizefs/tasks/main.yml -> role/resizefs/tasks/findfreedisk.yml -> \
vai trò/vmwaretaks/tác vụ/main.yml -> vai trò/vmwaretaks/task/addvmwaredisk.yml
Đây là những gì playbooks trông giống như:
$ con mèo resizefs_role_hosts.yml
---
- máy chủ: máy chủ thử nghiệm
trở thành: vâng
trở thành_method: sudo
vai trò:
- vai trò: 'vai trò/thay đổi kích thước'
$ vai trò con mèo/thay đổi kích thước/tác vụ/main.yml
---
# tệp tác vụ cho create_fs-test
- nhập_tác vụ: findfreedisk.yml
$ vai trò con mèo/thay đổi kích thước/tác vụ/findfreedisk.yml
- tên: Tìm đĩa không có phân vùng
set_fact:
đĩa: "/dev/{{outer_item.key}}"
khi nào:
- không phải outside_item.value.partitions
- không phải outside_item.value.links.ids
- outside_item.key là tìm kiếm ("sd")
with_dict: '{{ansible_devices}}'
loop_control:
loop_var: outside_item
thông báo:
- Định dạng_free_disk
đã thay đổi_khi: đúng
- name: In tên đĩa nếu có
gỡ lỗi:
tin nhắn:
- "{{ disks|default('KHÔNG PHẢI ĐĨA MIỄN PHÍ') }} Có sẵn"
# Nếu không có đĩa add lun mới từ Vmware
- bao gồm_vai trò:
Tên: vmwaretaks
khi nào: đĩa không được xác định
$ vai trò mèo/vmwaretaks/tác vụ/main.yml
---
# tệp nhiệm vụ cho add-new-vmware-lun
- nhập_tác vụ: addvmwaredisk.yml
$ vai trò mèo/vmwaretaks/tác vụ/addvmwaredisk.yml
---
- máy chủ: localhost
thu thập_sự thật: đúng
lọ:
vcenter_hostname: 'vcenter.labo.local'
vcenter_username: 'labo.local\ansible'
vcenter_password: "{{ vault_pass }}"
target_host: 'TESTHOST'
vm_uuid: '4217B33E-014D-E056-0719-45AD3AC1861E'
vm_unit_number: '5'
nhiệm vụ:
- tên: Thêm đĩa vào máy ảo bằng UUID
vmware_guest_disk:
tên máy chủ: "{{ vcenter_hostname }}"
tên người dùng: "{{ vcenter_username }}"
mật khẩu: "{{ vcenter_password }}"
trung tâm dữ liệu: "{{ vcenter_hostname }}"
uuid: "{{ vm_uuid | hạ }}"
xác thực_certs: không
đĩa:
- kích thước_gb: 10
gõ: 'dày'
trạng thái: 'hiện tại'
autoselect_datastore: có
scsi_controller: '0'
scsi_type: 'ảo'
số_đơn_vị: '5'
disk_mode: 'độc lập_kiên trì'
ủy nhiệm_to: máy chủ cục bộ
Tôi đã cố gắng tìm cách nói với nó rằng vai trò thứ hai không được thực thi trong máy chủ mà trong trình ảo hóa vmware nhưng không gặp may.
Nếu tôi chạy addvmwaredisk.yml dưới dạng playbook thì nó sẽ chạy hoàn hảo
Hy vọng bạn có thể giúp đỡ!
cảm ơn trước!