ฉันค่อนข้างใหม่กับ Ansible ดังนั้นฉันอาจกำหนดค่าผิดพลาด
[ฉันมีคอนเทนเนอร์ Docker ที่เรียกใช้บริการ Ansible ใน CentOS8
ฉันมีที่เก็บ Ansible ที่มีไฟล์ Ansible (นี่คือที่เก็บ .Git]
ความตั้งใจของฉันคือเปลี่ยนแต่ละแล็บโดยอัตโนมัติ (แล็บประกอบด้วย 8 vms, 5 windows server 2016 และ 3 windows 10 DC รวมถึงนโยบายเพื่อเปิดใช้งาน winrm ในเครื่องเหล่านั้น) ในเซิร์ฟเวอร์ vCenter เป็นสแน็ปช็อตเฉพาะ แต่ก่อนอื่น ฉันกำลังพยายาม: เมื่อปิดเครื่องของห้องปฏิบัติการเมื่อเปิดเครื่อง และอีกครั้ง เปิดเครื่องของห้องปฏิบัติการเมื่อปิดเครื่อง
ดังนั้นฉัน (ด้วยความช่วยเหลือของ คู่มืออธิบายบทบาทอธิบายพร้อมตัวอย่าง):
- สร้างบทบาทกับ
ansible-กาแล็กซี่ init
ชื่อคำสั่ง วีเซ็นเตอร์
(ดูแผนผังไดเร็กทอรีด้านล่าง)
- สร้างไฟล์งาน vcenter ภายใน
งาน
โฟลเดอร์ (ดูแผนผังไดเร็กทอรีด้านล่าง) นี่คือตัวอย่างของ poweroff.yml
และ poweron.yml
ไฟล์งาน:
- ชื่อ: ตั้งค่าสถานะของเครื่องเสมือนเป็นปิดเครื่อง
community.vmware.vmware_guest_powerstate:
ชื่อโฮสต์: "{{ vcenter_hostname }}"
ชื่อผู้ใช้: "{{ vcenter_username }}"
รหัสผ่าน: "{{ vcenter_password }}"
โฟลเดอร์: "/{{ datacenter_name }}/vm/{{ โฟลเดอร์ }}"
ชื่อ: "{{ ansible_hostname }}"
# ชื่อ: "{{ ชื่อแขก }}"
validate_certs: ไม่
สถานะ: ปิดเครื่อง
กำลัง: ใช่
delegate_to: localhost
ลงทะเบียน: ปรับใช้
- ชื่อ: ตั้งค่าสถานะของเครื่องเสมือนให้เปิดเครื่องโดยใช้ MoID
community.vmware.vmware_guest_powerstate:
ชื่อโฮสต์: "{{ vcenter_hostname }}"
ชื่อผู้ใช้: "{{ vcenter_username }}"
รหัสผ่าน: "{{ vcenter_password }}"
โฟลเดอร์: "/{{ datacenter_name }}/vm/{{ โฟลเดอร์ }}"
ชื่อ: "{{ ansible_hostname }}"
# ช่วง: vm-42
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 เพื่อปิดเครื่องทั้งหมดในห้องแล็บได้สำเร็จ จากนั้นฉันจึง "เปิด" งานเปิดเครื่องในบทบาท เช่นนั้น:
---
# ไฟล์งานสำหรับบทบาท/vcenter
# - import_tasks: poweroff.yml
- import_tasks: poweron.yml
# - import_tasks: revert.yml
# - import_tasks: shutdown.yml
ตอนนี้เครื่องของแล็บทั้งหมดปิดตัวลง กำลังดำเนินการ playbook ให้ข้อผิดพลาดต่อไปนี้:
เล่น [เปลี่ยน vmware vcenter lab] ******************************************* ******
TASK [รวบรวมข้อเท็จจริง] ********************************************* **************
ร้ายแรง: [vm1.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm:
HTTPConnectionPool(host='vm1.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3.connection.HTTPConnection object ที่ 0x7fb7ae4908d0>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [ Errno 111] การเชื่อมต่อถูกปฏิเสธ',))", "ไม่สามารถเข้าถึงได้": จริง}
ร้ายแรง: [vm2.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm: HTTPConnectionPool(host='vm2.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3. วัตถุ connection.HTTPConnection ที่ 0x7fb7ae487b00>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [Errno 111] การเชื่อมต่อถูกปฏิเสธ ',))", "ไม่สามารถเข้าถึงได้": true}
ร้ายแรง: [vm3.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm: HTTPConnectionPool(host='vm3.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3. วัตถุ connection.HTTPConnection ที่ 0x7fb7ae48acc0>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [Errno 111] การเชื่อมต่อถูกปฏิเสธ ',))", "ไม่สามารถเข้าถึงได้": true}
ร้ายแรง: [vm4.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm: HTTPConnectionPool(host='vm4.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3. วัตถุ connection.HTTPConnection ที่ 0x7fb7ae48de80>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [Errno 111] การเชื่อมต่อถูกปฏิเสธ ',))", "ไม่สามารถเข้าถึงได้": true}
ร้ายแรง: [vm5.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm:
HTTPConnectionPool(host='vm5.domain.com', port=5985): เกินจำนวนการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3.connection.HTTPConnection object ที่ 0x7fb7ae41f080>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [ Errno 111] การเชื่อมต่อถูกปฏิเสธ',))", "ไม่สามารถเข้าถึงได้": จริง}
ร้ายแรง: [vm6.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm: HTTPConnectionPool(host='vm6.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3. วัตถุ connection.HTTPConnection ที่ 0x7fb7ae41d7f0>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [Errno 111] การเชื่อมต่อถูกปฏิเสธ ',))", "ไม่สามารถเข้าถึงได้": true}
ร้ายแรง: [vm7.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm: HTTPConnectionPool(host='vm7.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3. วัตถุ connection.HTTPConnection ที่ 0x7fb7ae428048>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [Errno 111] การเชื่อมต่อถูกปฏิเสธ ',))", "ไม่สามารถเข้าถึงได้": true}
ร้ายแรง: [vm8.domain.com]: ไม่สามารถเข้าถึงได้! => {"เปลี่ยน": เท็จ, "msg": "ntlm: HTTPConnectionPool(host='vm8.domain.com', port=5985): เกินการลองใหม่สูงสุดด้วย url: /wsman (เกิดจาก NewConnectionError('<urllib3. วัตถุ connection.HTTPConnection ที่ 0x7fb7ae425588>: ล้มเหลวในการสร้างการเชื่อมต่อใหม่: [Errno 111] การเชื่อมต่อถูกปฏิเสธ ',))", "ไม่สามารถเข้าถึงได้": true}
เล่น RECAP ************************************************ ***********************
vm1.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm2.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm3.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm4.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm5.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm6.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm7.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
vm8.domain.com : ok=0 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=1 ล้มเหลว=0 ข้าม=0 ช่วยเหลือ=0 ละเว้น=0
เหตุใดงานปิดเครื่องจึงใช้การได้และการเปิดเครื่องไม่ทำงาน ฉันจะแก้ไขปัญหานี้ได้อย่างไร
พื้นที่เก็บข้อมูลของฉัน:
ค:.
ââââตอบได้
â â ansible.cfg
â ââââ สินค้าคงเหลือ
â â ââââทดสอบ
â â ââââคลาวด์
â â ââââในองค์กร
â â ââââdomain.com
â â â lab_j.yml
â â â lab_r.yml
â â ââââgroup_vars
â â all.yml
â ââââเพลย์บุ๊ค
â â revert_lab.yml
â ââââบทบาท
â ââââvศูนย์
â ââââงาน
â â main.yml
â â poweroff.yml
â â poweron.yml
â â revert.yml
â â ปิดระบบ.yml
â ââââvars
main.yml
สินค้าคงคลังของฉัน lab_r.yml
- นี่คือสคีมาบางส่วน
---
ทั้งหมด:
เด็ก:
ราก:
เด็ก:
ศูนย์กลาง:
เด็ก:
เซิร์ฟเวอร์แอป:
เจ้าภาพ:
vm1.domain.com:
เซิร์ฟเวอร์:
เจ้าภาพ:
vm2.domain.com:
เซิร์ฟเวอร์ฐานข้อมูล:
เจ้าภาพ:
vm3.domain.com: