Tôi giữ Cài đặt của dbatools.io Mô-đun PowerShell được cập nhật trên Máy chủ MSSQL của tôi bằng một playbook Ansible đơn giản bao gồm tác vụ sau:
#################### CẬP NHẬT DBATOOLS ####################
- tên: cập nhật dbatools
win_shell: |
if ([Net.ServicePointManager]::SecurityProtocol -match "Tls12") {
ghi máy chủ "OK: tls 12 đang hoạt động"
}
khác{
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
write-host "SET: tls 12 đã được kích hoạt"
}
if ((Get-PSRepository).name -notLike "PSGallery") {
ghi máy chủ "SET: PSGallery đăng ký"
Đăng ký-PSRepository-Default
}
khác {
ghi máy chủ "OK: PSGallery hiện có"
}
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
write-host "SET: cập nhật dbatools"
Cập nhật-Dbatools -Dọn dẹp -Xác nhận:$false
# Tương tự như khi cài đặt ngoại trừ lệnh cài đặt ở cuối
khi nào: is_install.stdout.find('true') != -1 ## đã sử dụng "tìm", vì thiết bị xuất chuẩn chứa /r/n vì nó là một danh sách / tìm dễ dàng hơn thì làm sạch var
Tác vụ này hoạt động nhưng nó trả về lỗi sau, mỗi khi nó phải dọn sạch phiên bản cũ của dbatools:
gây tử vong: [server.domain.local]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "module_stderr": "#< CLIXML\r\n", "module_stdout": "", "msg": "LỖI MÔ-ĐUN\nXem thiết bị xuất chuẩn/thiết bị xuất chuẩn để biết lỗi chính xác", "rc ":4294967295}
tôi sử dụng bỏ qua_errors: có
trên đó để nó không làm hỏng kết quả của tôi, nhưng cuối cùng thì tôi muốn giải quyết vấn đề này một cách đáng tin cậy.
Nếu tôi thực thi lệnh này trực tiếp thông qua kết nối từ xa trên bất kỳ máy chủ nào, nó sẽ hoạt động mà không có lỗi.
Khi rời khỏi -Dọn dẹp
tùy chọn này cũng hoạt động mà không có lỗi nhưng các phiên bản cũ của dbatools sẽ không bị xóa và nó sẽ bổ sung theo thời gian.
Bất kỳ ý tưởng làm thế nào lỗi này có thể được xử lý một cách chính xác trên Ansible?
Thông báo lỗi có độ chi tiết cao:
chuyển hướng (loại: mô-đun) ansible.buildin.win_shell sang ansible.windows.win_shell
Sử dụng tệp mô-đun /runner/requirements_collections/ansible_collections/ansible/windows/plugins/modules/win_shell.ps1
Đường ống được kích hoạt.
<SQL-Server-IP> THIẾT LẬP KẾT NỐI WINRM CHO NGƯỜI DÙNG: ansible-service-user trên CỔNG 5986 ĐẾN SQL-Server-IP
EXEC (thông qua trình bao bọc đường ống)
gây tử vong: [SQL-Server-FQDN]: KHÔNG THÀNH CÔNG! => {
"đã thay đổi": sai,
"module_stderr": "#< CLIXML\r\n",
"module_stdout": "",
"msg": "LỖI MÔ-ĐUN\nXem thiết bị xuất chuẩn/thiết bị xuất chuẩn để biết lỗi chính xác",
"rc": 4294967295
}