ฉันค่อนข้างใหม่กับ Ansible ดังนั้นฉันอาจกำหนดค่าผิดพลาด
[ฉันมีคอนเทนเนอร์ Docker ที่ใช้บริการ Ansible อยู่ในนั้น
ฉันมีที่เก็บ Ansible ที่มีไฟล์ Ansible (นี่คือที่เก็บ .Git]
ความตั้งใจของฉันคือการ เปลี่ยนแต่ละแล็บในเซิร์ฟเวอร์ vCenter กลับเป็นสแน็ปช็อตเฉพาะโดยอัตโนมัติ
ดังนั้นฉัน (ด้วยความช่วยเหลือของ คู่มืออธิบายบทบาทอธิบายพร้อมตัวอย่าง):
- สร้างบทบาทกับ
ansible-กาแล็กซี่ init
ชื่อคำสั่ง วีเซ็นเตอร์
(ดูแผนผังไดเร็กทอรีด้านล่าง)
- สร้างไฟล์งาน vcenter ภายใน
งาน
โฟลเดอร์ (ดูแผนผังไดเร็กทอรีด้านล่าง) นี่คือตัวอย่างของ poweroff.yml
ไฟล์งาน:
- ชื่อ: ตั้งค่าสถานะของเครื่องเสมือนเป็นปิดเครื่อง
community.vmware.vmware_guest_powerstate:
ชื่อโฮสต์: "{{ vcenter_hostname }}"
ชื่อผู้ใช้: "{{ vcenter_username }}"
รหัสผ่าน: "{{ vcenter_password }}"
โฟลเดอร์: "/{{ datacenter_name }}/{{ โฟลเดอร์ }}"
# ชื่อ: "{{ ชื่อแขก }}"
ชื่อ: "{{ ansible_hostname }}"
validate_certs: ไม่
สถานะ: ปิดเครื่อง
delegate_to: localhost
ลงทะเบียน: ปรับใช้
- ให้ข้อมูลรับรอง vCenter ใน
vcenter\vars\main.yml
ไฟล์เช่นนี้:
# ไฟล์ vars สำหรับ vcenter
vcenter_hostname: vcenter.foo.com
vcenter_username: [email protected]
vcenter_password: f#0$o#1$0o
datacenter_name: FOO_Fighters
# datastore_name:
cluster_name: FOO
โฟลเดอร์: '/FOO/PRODUCT/DOMAIN.COM/'
- รวมงานใน
งาน\main.yml
ไฟล์ด้วย งานนำเข้า
ที่สำคัญดังนี้
---
# ไฟล์งานสำหรับบทบาท/vcenter
- import_tasks: poweroff.yml
# - import_tasks: poweron.yml
# - import_tasks: revert.yml
# - import_tasks: shutdown.yml
- สร้าง
all.yml
ภายในโฟลเดอร์ group_vars ในไลบรารีสินค้าคงคลัง (ฉันไม่รู้ว่าเป็นวิธีที่มืออาชีพทำเช่นนั้นหรือไม่) ซึ่งมีรายละเอียด winrm ทั้งหมดดังนี้:
---
#รายละเอียดโปรโตคอล WinRM
ansible_user: DOMAIN\user
ansible_password: f#0$o#1$0o
ansible_connection: winrm
ansible_port: 5985
ansible_winrm_scheme: http
ansible_winrm_server_cert_validation: ละเว้น
ansible_winrm_transport: ntlm
ansible_winrm_read_timeout_sec: 60
ansible_winrm_operation_timeout_sec: 58
- สร้าง
revert_lab.yml
คู่มือการเล่นที่รวมบทบาทเช่นนี้
---
- ชื่อ: ย้อนกลับห้องปฏิบัติการภายในองค์กร
โฮสต์: ทั้งหมด
บทบาท:
- วีเซ็นเตอร์
ของฉัน ansible.cfg
เป็นเช่นนี้:
[ค่าเริ่มต้น]
สินค้าคงคลัง = / ansible / สินค้าคงคลัง
roles_path = ./roles:..~/ansible/roles
ฉันดำเนินการ playbook เพื่อคืนค่าเครื่องจักรทั้งหมดในห้องปฏิบัติการ:
playbooks ansible-playbook/revert_vcenter_lab.yml -i สินค้าคงเหลือ/test/onpremis/domain.com/lab_r.yml
ข้อผิดพลาดที่ฉันได้รับคือ:
TASK [รวบรวมข้อเท็จจริง] ********************************************* ************************************************** ************************************************** ***
[คำเตือน]: เกิดข้อผิดพลาดเมื่อรวบรวมข้อเท็จจริงของ winrm: คุณไม่สามารถเรียกใช้เมธอดในนิพจน์ที่มีค่า Null ได้ ที่บรรทัด:15 ถ่าน:17 + ...
$ansibleFacts.ansible_win_rm_certificate_expires = $_.ไม่ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo :
InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull ที่ <ScriptBlock>, <ไม่มีไฟล์>: บรรทัดที่ 15 ที่ <ScriptBlock>, <ไม่มีไฟล์>: บรรทัด
13
ตกลง: [vm1.domain.com]
ตกลง: [vm2.domain.com]
ตกลง: [vm3.domain.com]
ตกลง: [vm4.domain.com]
ตกลง: [vm5.domain.com]
ตกลง: [vm6.domain.com]
ตกลง: [vm7.domain.com]
ตกลง: [vm8.domain.com]
TASK [vcenter : ตั้งค่าสถานะของเครื่องเสมือนเป็นปิดเครื่อง] ************************************ ************************************************** *********************
ร้ายแรง: [vm1.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM1'"}
ร้ายแรง: [vm2.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM2'"}
ร้ายแรง: [vm3.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM3'"}
ร้ายแรง: [vm4.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM4'"}
ร้ายแรง: [vm5.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM5'"}
ร้ายแรง: [vm6.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM6'"}
ร้ายแรง: [vm7.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM7'"}
ร้ายแรง: [vm8.domain.com -> localhost]: ล้มเหลว! => {"change": false, "msg": "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่ : 'VM8'"}
เล่น RECAP ************************************************ ************************************************** ************************************************** ************
vm1.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm2.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm3.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm4.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm5.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm6.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm7.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm8.domain.com : ok=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
ก) ฉันจะกำจัด เกิดข้อผิดพลาดเมื่อรวบรวมข้อเท็จจริง winrm
ข้อผิดพลาด? (ดูเหมือนว่า playbook ไม่รู้จัก all.yml
ไฟล์ที่ชนะ แต่ทำไม?)
ข) ฉันจะแก้ไขข้อผิดพลาด "ไม่สามารถตั้งค่าสถานะพลังงานสำหรับเครื่องเสมือนที่ไม่มีอยู่..." ได้อย่างไร? (เราจะเห็นว่า playbook เข้าถึงเครื่องโดย fqdns ที่กล่าวถึงในไฟล์ lab_r.yml (จากไลบรารีสินค้าคงคลัง) แต่ข้อผิดพลาดเกี่ยวข้องกับชื่อเครื่องตามที่แสดงในแพลตฟอร์ม vCenter...)
พื้นที่เก็บข้อมูลของฉัน:
ค:.
ââââตอบได้
â â ansible.cfg
â ââââ สินค้าคงเหลือ
â â ââââทดสอบ
â â ââââคลาวด์
â â ââââในองค์กร
â â ââââdomain.com
â â â lab_j.yml
â â â lab_r.yml
â â ââââgroup_vars
â â all.yml
â ââââเพลย์บุ๊ค
â â revert_lab.yml
â ââââบทบาท
â ââââvศูนย์
â ââââงาน
â â main.yml
â â poweroff.yml
â â poweron.yml
â â return.yml
â â ปิดระบบ.yml
â ââââvars
main.yml
สินค้าคงคลังของฉัน lab_r.yml
- นี่คือสคีมาบางส่วน
---
ทั้งหมด:
เด็ก:
ราก:
เด็ก:
ศูนย์กลาง:
เด็ก:
เซิร์ฟเวอร์แอป:
เจ้าภาพ:
vm1.domain.com:
เซิร์ฟเวอร์:
เจ้าภาพ:
vm2.domain.com:
เซิร์ฟเวอร์ฐานข้อมูล:
เจ้าภาพ:
vm3.domain.com: