Điểm:-1

Làm cách nào để đặt trạng thái máy: bật nguồn với tác vụ community.vmware.vmware_guest_powerstate?

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 CentOS8
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]

Ý chí của tôi là tự động hoàn nguyên từng phòng thí nghiệm (phòng thí nghiệm bao gồm 8 vms, 5 máy chủ windows 2016 và 3 cửa sổ 10. DC bao gồm chính sách kích hoạt winrm trong các máy đó) trong máy chủ vCenter thành một ảnh chụp nhanh cụ thể. Nhưng trước tiên, tôi đang cố gắng: một lần tắt nguồn máy móc của phòng thí nghiệm khi chúng được bật lên và một lần bật nguồn máy của phòng thí nghiệm khi chúng đã tắt

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.ymlpoweron.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 }}/vm/{{ thư mục }}"
    tên: "{{ ansible_hostname }}"
    # tên: "{{ guest_name }}"
    xác thực_certs: không
    trạng thái: tắt nguồn
    lực lượng: có
  ủy nhiệm_to: máy chủ cục bộ
  đăng ký: triển khai
- tên: Đặt trạng thái của máy ảo để bật nguồn bằng MoID
  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 }}/vm/{{ thư mục }}"
    tên: "{{ ansible_hostname }}"
    # moid: vm-42
    xác thực_certs: không
    trạng thái: bậ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/SẢN PHẨM/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 thành công playbook để tắt nguồn tất cả các máy trong phòng thí nghiệm, sau đó tôi "bật" tác vụ bật nguồn trong vai trò, 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

Bây giờ tất cả các máy của phòng thí nghiệm đã tắt, đang thực hiện playbook, đưa ra lỗi sau:

CHƠI [hoàn nguyên phòng thí nghiệm vmware vcenter] ********************************************* ******
NHIỆM VỤ [Thu thập thông tin] ********************************************* ***************
gây tử vong: [vm1.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã 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 (Nguyên nhân là do NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb7ae4908d0>: 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}
gây tử vong: [vm2.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm2.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError('<urllib3. connection.HTTPConnection đối tượng tại 0x7fb7ae487b00>: 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}
gây tử vong: [vm3.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm3.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError('<urllib3. connection.HTTPConnection đối tượng tại 0x7fb7ae48acc0>: 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}
gây tử vong: [vm4.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm4.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError('<urllib3. connection.HTTPConnection đối tượng tại 0x7fb7ae48de80>: 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}
gây tử vong: [vm5.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: 
HTTPConnectionPool(host='vm5.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Nguyên nhân là do NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb7ae41f080>: 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}
gây tử vong: [vm6.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm6.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError('<urllib3. connection.HTTPConnection đối tượng tại 0x7fb7ae41d7f0>: 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}
gây tử vong: [vm7.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm7.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError('<urllib3. connection.HTTPConnection đối tượng tại 0x7fb7ae428048>: 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}
gây tử vong: [vm8.domain.com]: KHÔNG THỂ TIẾP CẬN! => {"đã thay đổi": sai, "thông điệp": "ntlm: HTTPConnectionPool(host='vm8.domain.com', port=5985): Đã vượt quá số lần thử lại tối đa với url: /wsman (Do NewConnectionError('<urllib3. connection.HTTPConnection đối tượng tại 0x7fb7ae425588>: 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}

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

Tại sao tác vụ tắt nguồn hoạt động tốt và bật nguồn thì không? Làm thế nào tôi có thể khắc phục vấn đề này?

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:
lá cờ in
Máy bạn đang khởi động playbook ansible có phải là máy windows được thiết lập cho WinRM không? Tôi đoán là ansible cố gắng kết nối WinRM với localhost, vì bạn đã định cấu hình cái này trong `all.yml`, nhưng không thành công. localhost nên được cấu hình với `ansible_connection: local`. đây phải là mặc định khi localhost không được chỉ định rõ ràng trong kho, nhưng ai biết được ...
Zeitounator avatar
lá cờ fr
Bạn không cần phải khai báo `localhost` trong kho của mình: đó là [ẩn](https://docs.ansible.com/ansible/latest/inventory/implicit_localhost.html) và bạn thường muốn nó giữ nguyên như vậy nó không phù hợp với mục tiêu nhóm `tất cả`. Trong khi đó, như đã báo cáo trong liên kết tài liệu, nó vẫn đọc các vars từ `group_vars/all.yml`, đây là sự cố mà @GeraldSchneider đã báo cáo ở trên. Chỉ cần di chuyển tệp vào `group_vars/center.yml` để các giá trị chỉ được áp dụng cho nhóm có liên quan.
lá cờ uz
@Zeitounator, Vui lòng làm rõ, tại sao ansible không đọc được tệp ```roles\vcenter\vars\main.yml``` bao gồm các chi tiết truy cập vCenter?
lá cờ uz
@GeraldSchneider thay đổi thành ```ansible_connection: local``` và chạy playbook sẽ cho kết quả như sau: NHIỆM VỤ [Thu thập thông tin] tất cả các máy đều được nhận dạng, sau đó thực hiện tác vụ sẽ hiển thị lỗi sau cho tất cả danh sách máy: ``` "msg": "Không thể đặt trạng thái nguồn cho máy ảo không tồn tại : 'ansible'"```
Zeitounator avatar
lá cờ fr
vms của bạn đang tắt. Trong trường hợp đó, bạn cần tắt thu thập dữ kiện trong trò chơi của mình (với `gather_facts: false,`), nếu không, ansible sẽ cố gắng kết nối với chúng để lấy thông tin trước khi bạn chơi tác vụ bật chúng
lá cờ uz
@Zeitounator, tôi đã thiết lập vở kịch với ```gather_facts: false```. vẫn có kết quả tương tự - vms đang tắt máy. Thay đổi kết quả ```ansible_connection``` thành ```local```: ```"msg": "Tác vụ bao gồm một tùy chọn có biến không xác định. Lỗi là: 'ansible_hostname'...```
Zeitounator avatar
lá cờ fr
Kết quả không giống nhau... bây giờ bạn gặp lỗi vì bạn đang cố sử dụng một biến chỉ được xác định khi bạn thu thập dữ kiện... điều này là không thể vì vm của bạn bị tắt. Bạn phải tìm giải pháp để lấy tên máy mà không cần phải kết nối với vm.
lá cờ uz
@Zeitounator, tôi đã thử. Trong tệp ```lab_r.yml``` tôi đã thêm biến bổ sung ```vm_name``` với tên của các máy như sau: ```vm_name: VM1``` dưới mỗi tệp fqdn (như bạn có thể thấy trong ví dụ trong bài). Tôi nhiệm vụ ```poweron.yml``` tôi đổi thành ```name: {{ vm_name }}```. Tôi thiết lập vở kịch với ```gather_facts: không```.Sau khi thực hiện, tôi nhận được: ```"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'"```
Zeitounator avatar
lá cờ fr
Bạn dường như quan tâm đến việc trò chuyện về phiên gỡ lỗi của mình hơn là cố gắng khắc phục sự cố của mình. Bạn có mong đợi những người đọc phần này biết tên vm của bạn có trong bản cài đặt vmware của bạn không? Không ai có thể đoán được từ bài đăng thực tế của bạn vì bạn không cho chúng tôi biết bạn đã tạo vms như thế nào và từ biến nào. Sử dụng một tên thực sự tồn tại và nó sẽ được cấp nguồn. Chúc may mắn.
Điểm:0
lá cờ uz

Vấn đề đã được giải quyết bằng cách:
tôi đặt thư mục giá trị quan trọng để "/{{ datacenter_name }}/"
tôi thêm bật nguồn nhiệm vụ cho nhiệm vụ bổ sung như hoàn nguyên - Ý nghĩa bật nguồn nhiệm vụ chỉ hoạt động với tôi nếu nó là một phần của chuỗi nhiệm vụ
thật không may bật nguồn nhiệm vụ không hoạt động đối với tôi như một nhiệm vụ độc lập

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