Điểm:1

tại sao ansible không nhận ra máy vcenter windows?

lá cờ uz

Tôi khá mới với Ansible nên tôi có thể định cấu hình sai
[Tôi có một bộ chứa Docker đang chạy dịch vụ Ansible trong đó
Tôi có một kho lưu trữ Ansible bao gồm các tệp Ansible (đây là kho lưu trữ .Git]

ý muốn của tôi là tự động hoàn nguyên mỗi phòng thí nghiệm trong máy chủ vCenter thành một ảnh chụp nhanh cụ thể
Vì vậy, tôi (với sự giúp đỡ của ansible-roles-explained-with-ví dụ hướng dẫn):

  • Tạo một vai trò với ansible-galaxy init tên lệnh vcenter (xem cây thư mục bên dưới)
  • Đã tạo một số tệp tác vụ vcenter bên trong nhiệm vụ thư mục (xem cây thư mục bên dưới). Đây là một ví dụ về tắt nguồn.yml tập tin nhiệm vụ:
- tên: Đặt trạng thái của máy ảo thành tắt nguồn
  cộng đồng.vmware.vmware_guest_powerstate:
    tên máy chủ: "{{ vcenter_hostname }}"
    tên người dùng: "{{ vcenter_username }}"
    mật khẩu: "{{ vcenter_password }}"
    thư mục: "/{{ datacenter_name }}/{{ thư mục }}"
    # tên: "{{ guest_name }}"
    tên: "{{ ansible_hostname }}"
    xác thực_certs: không
    trạng thái: tắt nguồn
  ủy nhiệm_to: máy chủ cục bộ
  đăng ký: triển khai
  • Đã cung cấp thông tin đăng nhập vCenter trong vcenter\vars\main.yml tập tin, như thế này:
# tệp vars cho vcenter
vcenter_hostname: vcenter.foo.com
vcenter_username: [email protected]
vcenter_password: f#0$o#1$0o
datacenter_name: FOO_Fighters
# tên_kho_dữ_liệu: 
tên_cụm: FOO
thư mục: '/FOO/PRODUCT/DOMAIN.COM/' 
  • Bao gồm các nhiệm vụ trong nhiệm vụ\main.yml tập tin với nhiệm vụ nhập khẩu chìa khóa, như thế này:
---
# tệp nhiệm vụ cho vai trò/vcenter
- nhập_tác vụ: poweroff.yml
# - nhập_tác vụ: poweron.yml
# - nhập_tác vụ: revert.yml
# - nhập_tác vụ: shutdown.yml
  • Tạo ra một tất cả.yml bên trong thư mục group_vars trong thư viện kiểm kê (tôi không biết đó có phải là cách chuyên nghiệp để làm như vậy không) bao gồm tất cả các chi tiết winrm như thế này:
---
Chi tiết giao thức #WinRM
ansible_user: DOMAIN\người dùng
ansible_password: f#0$o#1$0o
ansible_connection: winrm
ansible_port: 5985
ansible_winrm_scheme: http
ansible_winrm_server_cert_validation: bỏ qua
ansible_winrm_transport: ntlm
ansible_winrm_read_timeout_sec: 60
ansible_winrm_operation_timeout_sec: 58
  • Tạo ra một revert_lab.yml vở kịch bao gồm vai trò, như thế này
---
- tên: hoàn nguyên phòng thí nghiệm onpremis
  máy chủ: tất cả
  vai trò:
  - vcenter

Của tôi ansible.cfg là như thế này:

[mặc định]
hàng tồn kho = /ansible/hàng tồn kho
role_path = ./roles:..~/ansible/roles

Tôi đã thực hiện playbook để hoàn nguyên tất cả các máy trong phòng thí nghiệm:

ansible-playbook playbooks/revert_vcenter_lab.yml -i hàng tồn kho/test/onpremis/domain.com/lab_r.yml

Lỗi tôi nhận được là:

NHIỆM VỤ [Thu thập thông tin] ********************************************* *************************************************** *************************************************** ***
[CẢNH BÁO]: Lỗi khi thu thập dữ kiện winrm: Bạn không thể gọi phương thức trên biểu thức có giá trị null. Tại dòng:15 ký tự:17 + ...
$ansibleFacts.ansible_win_rm_certificate_expires = $_.Không ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo :  
InvalidOperation: (:) [], RuntimeException + FullQualifiedErrorId : InvokeMethodOnNull tại <ScriptBlock>, <Không có tệp>: dòng 15 tại <ScriptBlock>, <Không có tệp>: dòng  
13
được rồi: [vm1.domain.com]
được rồi: [vm2.domain.com]
được rồi: [vm3.domain.com]
được rồi: [vm4.domain.com]
được rồi: [vm5.domain.com]
được rồi: [vm6.domain.com]
được rồi: [vm7.domain.com]
được rồi: [vm8.domain.com]

NHIỆM VỤ [vcenter: Đặt trạng thái tắt nguồn của máy ảo] ************************************ *************************************************** ************************
gây tử vong: [vm1.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM1'"}
gây tử vong: [vm2.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM2'"}
gây tử vong: [vm3.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM3'"}
gây tử vong: [vm4.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM4'"}
gây tử vong: [vm5.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM5'"}
gây tử vong: [vm6.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM6'"}
gây tử vong: [vm7.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM7'"}
gây tử vong: [vm8.domain.com -> localhost]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại: 'VM8'"}

TÓM TẮT CHƠI *************************************************** *************************************************** *************************************************** ************
vm1.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 đã giải cứu=0 bị bỏ qua=0
vm2.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 được giải cứu=0 bị bỏ qua=0
vm3.domain.com : ok=1 thay đổi=0 không truy cập được=0 thất bại=1 bỏ qua=0 giải cứu=0 bỏ qua=0
vm4.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 đã giải cứu=0 bị bỏ qua=0
vm5.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 được giải cứu=0 bị bỏ qua=0
vm6.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 đã giải cứu=0 bị bỏ qua=0
vm7.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 được giải cứu=0 bị bỏ qua=0
vm8.domain.com : ok=1 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=0 đã giải cứu=0 bị bỏ qua=0

một) Làm thế nào để tôi thoát khỏi Lỗi khi thu thập thông tin winrm lỗi? (Có vẻ như playbook không nhận ra tất cả.yml tập tin với chiến thắng, nhưng tại sao?)
b) Làm cách nào để khắc phục lỗi "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại..."? (Chúng ta có thể thấy rằng quyền truy cập Playbook vào các máy của fqdns được đề cập trong tệp lab_r.yml (từ thư viện kiểm kê) nhưng lỗi liên quan đến tên máy như được hiển thị trong nền tảng vCenter...)

Kho lưu trữ của tôi:

C:.
ââââansible
â â ansible.cfg
â ââââhàng tồn kho
â â ââââkiểm tra
â â ââââđám mây
â â ââââonpremis
â â ââââdomain.com
â â â lab_j.yml
â â â lab_r.yml
â â ââââgroup_vars
â â all.yml
â ââââsách vở
â â revert_lab.yml
â ââââvai trò
â ââââvcenter
â âââânhiệm vụ
â â main.yml
â â poweroff.yml
â â poweron.yml
â â revert.yml
â â shutdown.yml
â ââââvars
â main.yml

khoảng không quảng cáo của tôi lab_r.yml - đây là một lược đồ một phần

---
tất cả các:
  bọn trẻ:
    nguồn gốc:
      bọn trẻ:
        trung tâm:
          bọn trẻ:
            máy chủ ứng dụng:
              máy chủ:
                vm1.domain.com:
            máy chủ q:
              máy chủ:
                vm2.domain.com:
            máy chủ db:
              máy chủ:
                vm3.domain.com:
Điểm:2
lá cờ in

Nó không rõ ràng lắm từ tài liệu, nhưng chuỗi /vm/ bị thiếu trong đường dẫn thư mục của bạn.

- tên: Đặt trạng thái của máy ảo thành tắt nguồn
  cộng đồng.vmware.vmware_guest_powerstate:
    thư mục: "/{{ datacenter_name }}/vm/{{ thư mục }}"
    tên: "{{ ansible_hostname }}"

Tôi đoán cần phải phân biệt giữa các tài nguyên khác trong trung tâm dữ liệu, kho dữ liệu, máy chủ, v.v.

lá cờ uz
Đầu tiên, tôi đã thêm ```--verbos``` vào lệnh playbook, nó chỉ thêm dòng này: ```Sử dụng /ansible/ansible.cfg làm tệp cấu hình``` để xuất trước ```PLAY`` ` dòng mọi thứ khác vẫn giữ nguyên. Ngoài ra, tôi đã thực hiện đề xuất của bạn - thêm chuỗi ```/vm/``` - đầu ra và các lỗi vẫn giữ nguyên (như trong bài đăng chính). Hơn nữa, tôi không hiểu tại sao ```ansible_hostname``` hoạt động còn ```guest_name``` thì không...?
lá cờ uz
Mình không giải câu a mà giải câu b bằng cách set ```folder: "/{{ datacenter_name }}/"```
lá cờ in
Điều này sẽ không giúp bạn nếu bạn có nhiều máy ảo có cùng tên trong các thư mục khác nhau.
lá cờ uz
một thực tế khác mà tôi đã tìm thấy: Nếu tôi thực thi tác vụ poweroff.yml trên phòng thí nghiệm của mình - máy đã được tắt thành công.Khi tôi thực thi tác vụ poweron.yml trên phòng thí nghiệm đã tắt của mình, tôi nhận được ```fatal: [srraalabrst1.r10.local]: KHÔNG THỂ TẠO ĐƯỢC! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm1.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError gây ra(': Không thể thiết lập kết nối mới: [Errno 111] Kết nối bị từ chối',))", "không thể truy cập": true}```
lá cờ in
Rất có thể bạn đang thử tác vụ tiếp theo quá nhanh sau khi bật máy ảo. Bạn có thể định cấu hình ansible để thử lại điều này, nhưng bạn nên đặt một câu hỏi mới về điều đó.
lá cờ uz
Ngoài ra nhờ sự giúp đỡ của bạn, tôi đã tìm thấy với ```--verbos``` rằng thư mục thực sự đi kèm với ```/vm/```: ```"hw_folder": "/FOO/vm/PRODUCT/ DOMAIN.COM/```. Tôi đặt tệp vars.yml với đường dẫn này và các tham số ```thư mục``` với ```/vm/```. Đầu ra vẫn giữ nguyên. Sẽ mở một câu hỏi mới cho điều đó Cảm ơn @Gerald.

Đă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.