บริบท:
ฉันมีโครงการที่มีสองบทบาท
ฉันได้ลดจำนวนงานลงเหลืองานที่มีปัญหาเพื่อความเข้าใจที่ดีขึ้น
ปัญหา:
ฉันเรียกใช้งานจากบทบาทที่ 1 ในเซิร์ฟเวอร์ 1 และพยายามมอบหมายงานให้กับ vmware virtualizer จากเงื่อนไขในงานบทบาทเซิร์ฟเวอร์ 1 แรก
และมีโฮสต์ล้มเหลวเนื่องจากต้องการดำเนินงานบทบาทที่สอง (Vmware) ในเซิร์ฟเวอร์1
ข้อผิดพลาด:
ร้ายแรง: [testhost]: ล้มเหลว! => {"เหตุผล": "คำสั่งการกระทำที่ขัดแย้งกัน: โฮสต์,
Gather_facts\n\nข้อผิดพลาดดูเหมือนจะอยู่ใน '/home/ancible/proyects/extend_fs-role/roles/vmwaretaks/tasks/addvmwaredisk.yml': บรรทัด 2 คอลัมน์ 3
แต่อาจ\nอยู่ที่อื่นในไฟล์ ขึ้นอยู่กับปัญหาของ tntax\n\nบรรทัดที่ไม่เหมาะสมจะเป็น:\n\n---\n- โฮสต์: localhost\n ^ ที่นี่\n"}
นี่คือโครงสร้าง:
.
âââ คอลเลกชัน
â âââ ความต้องการ.yml
âââ README.md
âââ resizefs_hosts.yml
âââ บทบาท
âââ ปรับขนาดfs
â  âââ ค่าเริ่มต้น
â â ââ âââ main.yml
â âââ ตัวจัดการ
â â ââ âââ main.yml
â  âââ เมตา
â â ââ âââ main.yml
â âââ งาน
â  â âââ main.yml
â â ââ âââ findfreedisk.yml
â âââ การทดสอบ
สินค้าคงคลัง
â â ââ âââ test.yml
â âââ วาร์
â âââ main.yml
âââ vmwaretaks
âââ ค่าเริ่มต้น
â âââ main.yml
âââ ไฟล์
âââ ตัวจัดการ
â âââ main.yml
âââ เมตา
â âââ main.yml
âââ README.md
  âââ งาน
 â âââ main.yml
 â âââ addvmwaredisk.yml
เทมเพลต âââ
âââ การทดสอบ
â  âââ สินค้าคงคลัง
â âââ test.yml
âââ วาร์
âââ main.yml
นี่คือคำสั่งประหารชีวิตในกรณีที่ไม่พบลูนฟรีในโฮสต์:
resizefs_role_hosts.yml -> บทบาท/resizefs/tasks/main.yml -> บทบาท/resizefs/tasks/findfreedisk.yml -> \
บทบาท/vmwaretaks/tasks/main.yml -> บทบาท/vmwaretaks/tasks/addvmwaredisk.yml
Playbooks มีลักษณะดังนี้:
$ cat resizefs_role_hosts.yml
---
- โฮสต์: โฮสต์ทดสอบ
กลายเป็น: ใช่
makes_method: sudo
บทบาท:
- บทบาท: 'บทบาท/resizefs'
$ cat roles/resizefs/tasks/main.yml
---
# ไฟล์งานสำหรับ create_fs-test
- import_tasks: findfreedisk.yml
บทบาทแมว $/resizefs/tasks/findfreedisk.yml
- ชื่อ: การค้นหาดิสก์ที่ไม่มีพาร์ติชัน
set_fact:
ดิสก์: "/dev/{{outer_item.key}}"
เมื่อไร:
- ไม่ใช่ outer_item.value.partitions
- ไม่ใช่ outer_item.value.links.ids
- outer_item.key คือการค้นหา ("sd")
with_dict: '{{ansible_devices}}'
loop_control:
loop_var:outer_item
แจ้ง:
- Format_free_disk
เปลี่ยนแปลง_เมื่อ: จริง
- ชื่อ: พิมพ์ชื่อดิสก์ถ้ามี
แก้ปัญหา:
ข้อความ:
- "{{ disks|default('NOT FREE DISK') }} Available"
# หากไม่มีดิสก์ให้เพิ่ม lun ใหม่จาก Vmware
- include_role:
ชื่อ: vmwaretaks
เมื่อ: ไม่ได้กำหนดดิสก์
$ cat roles/vmwaretaks/tasks/main.yml
---
# ไฟล์งานสำหรับ add-new-vmware-lun
- import_tasks: addvmwaredisk.yml
$ cat roles/vmwaretaks/tasks/addvmwaredisk.yml
---
- โฮสต์: localhost
Gather_facts: จริง
วาร์:
vcenter_hostname: 'vcenter.labo.local'
vcenter_username: 'labo.local\ansible'
vcenter_password: "{{ vault_pass }}"
target_host: 'ทดสอบโฮสต์'
vm_uuid: '4217B33E-014D-E056-0719-45AD3AC1861E'
vm_unit_number: '5'
งาน:
- ชื่อ: เพิ่มดิสก์ลงในเครื่องเสมือนโดยใช้ UUID
vmware_guest_disk:
ชื่อโฮสต์: "{{ vcenter_hostname }}"
ชื่อผู้ใช้: "{{ vcenter_username }}"
รหัสผ่าน: "{{ vcenter_password }}"
ศูนย์ข้อมูล: "{{ vcenter_hostname }}"
uuid: "{{ vm_uuid | ล่าง }}"
validate_certs: ไม่
ดิสก์:
- size_gb: 10
ประเภท: 'หนา'
สถานะ: 'ปัจจุบัน'
autoselect_datastore: ใช่
scsi_controller: '0'
scsi_type: 'เสมือน'
unit_number: '5'
disk_mode: 'อิสระ_ถาวร'
delegate_to: localhost
ฉันพยายามหาวิธีที่จะบอกว่าบทบาทที่สองไม่ได้ดำเนินการในเซิร์ฟเวอร์ แต่ใน vmware virtualizer แต่โชคไม่ดี
ถ้าฉันเรียกใช้ addvmwaredisk.yml เป็น playbook มันจะทำงานได้อย่างสมบูรณ์แบบ
หวังว่าคุณจะช่วยได้!
ขอบคุณล่วงหน้า!