Làm thế nào để kết nối Ansible trên Windows từ Ubuntu?

Để tôi nhanh chóng chỉ cho bạn cách kết nối máy chủ Windows từ Ansible đang chạy trên Ubuntu.
Để làm theo các bước bên dưới, bạn cần cài đặt Python 3.x và Ansible trên cả hai hệ thống. Bạn có thể theo dõi các bài viết dưới đây nếu cần trợ giúp.
Làm thế nào để cài đặt và cấu hình Ansible trên Ubuntu?
Làm thế nào để cài đặt Ansible trên Windows?
Dưới đây là chi tiết của cả hai máy chủ tôi đang sử dụng:
- Bộ điều khiển Ansible – 192.168.0.108
- Windows Server – 192.168.0.102
Mục lục
Bước 1: Tạo người dùng Windows Ansible
Tạo người dùng mới để thiết lập kết nối cửa sổ Ansible.
- Mở Quản lý Máy tính trên hệ thống Windows của bạn và đi tới Người dùng và Nhóm Cục bộ.
- Nhấp chuột phải vào Người dùng và tạo người dùng mới.
- Chọn hộp kiểm Mật khẩu không bao giờ hết hạn và nhấp vào tạo.
- Bây giờ trong số các nhóm có sẵn, nhấp chuột phải vào nhóm Quản trị viên và nhấp vào thuộc tính.
- Nhấp vào Thêm và nhập tên đối tượng có thể trả được.
- Nhấp vào tùy chọn kiểm tra tên và sau đó Ok.
Bây giờ, một người dùng có thể kiểm soát được trên máy tính windows đã sẵn sàng.
Bước 2: Thiết lập Thư viện và WinRM
Đi tới máy điều khiển ansible của bạn, cập nhật nó và cài đặt các thư viện được đề cập bên dưới.
[email protected]:~$ sudo apt-get update [email protected]:~$ sudo apt-get install gcc python-dev [email protected]:~$ sudo apt install python3-pip
WinRM là viết tắt của quản lý cửa sổ từ xa. Nó cho phép bạn thực hiện các tác vụ quản lý trên hệ thống cửa sổ từ xa. Chúng tôi sẽ cài đặt python3-winrm, một ứng dụng khách python được sử dụng để tạo kết nối với hệ thống cửa sổ.
[email protected]:~$ sudo apt-get install python3-winrm Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: gyp libc-ares2 libhttp-parser2.8 libjs-async libjs-inherits libjs-is-typedarray libjs-node-uuid libuv1 libuv1-dev node-abbrev node-ajv node-ansi node-ansi-color-table node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-async node-validate-npm-package-license node-wcwidth.js node-which node-which-module node-wide-align node-wrap-ansi node-wrappy node-y18n node-yallist node-yargs node-yargs-parser nodejs nodejs-doc Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: python3-kerberos python3-ntlm-auth python3-requests-kerberos python3-requests-ntlm python3-xmltodict The following NEW packages will be installed: python3-kerberos python3-ntlm-auth python3-requests-kerberos python3-requests-ntlm python3-winrm python3-xmltodict 0 upgraded, 6 newly installed, 0 to remove and 231 not upgraded. Need to get 84.8 kB of archives. After this operation, 442 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-kerberos amd64 1.1.14-1build1 [16.8 kB] Get:2 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-ntlm-auth all 1.1.0-1 [19.6 kB] Get:3 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-requests-kerberos all 0.11.0-2 [10.1 kB] Get:4 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-requests-ntlm all 1.1.0-1 [6,004 B] Get:5 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-xmltodict all 0.11.0-2 [10.6 kB] Get:6 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 python3-winrm all 0.3.0-2 [21.7 kB] Fetched 84.8 kB in 1s (70.3 kB/s) Selecting previously unselected package python3-kerberos. (Reading database ... 244430 files and directories currently installed.) Preparing to unpack .../0-python3-kerberos_1.1.14-1build1_amd64.deb ... Unpacking python3-kerberos (1.1.14-1build1) ... Selecting previously unselected package python3-ntlm-auth. Selecting previously unselected package python3-xmltodict. Preparing to unpack .../4-python3-xmltodict_0.11.0-2_all.deb ... Unpacking python3-xmltodict (0.11.0-2) ... Selecting previously unselected package python3-winrm. Preparing to unpack .../5-python3-winrm_0.3.0-2_all.deb ... Unpacking python3-winrm (0.3.0-2) ... Setting up python3-kerberos (1.1.14-1build1) ... Setting up python3-winrm (0.3.0-2) ...
Bước 3: Cập nhật tệp Khoảng không quảng cáo có thể kiểm soát được
Bây giờ, tôi sẽ chỉnh sửa tệp ansible hosts bằng địa chỉ IP của hệ thống windows. Vì vậy, bây giờ ansible sẽ biết nó cần kết nối hệ thống windows nào.
[email protected]:~$ sudo gedit /etc/ansible/hosts [win] 192.168.0.102
Bước 4: Cập nhật các biến nhóm Ansible
Tạo thư mục để đặt các biến cần kết nối với hệ thống windows.
[email protected]:~$ mkdir /etc/ansible/group_vars [email protected]:~$ sudo chmod -R 777 /etc/ansible/
Tạo một tệp win.yaml và đưa thông tin chi tiết về người dùng mà bạn đã tạo ở bước đầu tiên và thêm một số biến cần thiết để kết nối với hệ thống cửa sổ.
[email protected]:~$ gedit /etc/ansible/group_vars/win.yaml
--- ansible_user: ansible ansible_password: ansible ansible_connection: winrm ansible_winrm_server_cert_validation: ignore ansible_winrm_transport: basic ansible_winrm_port: 5985 ansible_python_interpreter: C:Userstechpoe.comAppDataLocalProgramsPythonPython37python
Bước 5: Định cấu hình Máy chủ Windows để Quản lý
Mở Windows Power shell của bạn và nâng cấp nó. Bạn cần có Powershell 3.0 và .NET Framework 4.0 trên máy tính chạy windows.
PS C:WINDOWSsystem32> $url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Upgrade-PowerShell.ps1" PS C:WINDOWSsystem32> $file = "$env:tempUpgrade-PowerShell.ps1" PS C:WINDOWSsystem32> $username = "ansible" PS C:WINDOWSsystem32> $password = "ansible" PS C:WINDOWSsystem32> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) PS C:WINDOWSsystem32> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force PS C:WINDOWSsystem32> &$file -Version 5.1 -Username $username -Password $password -Verbose
Để cấu hình WinRM trên hệ thống Windows với ansible, ansible đã cung cấp tập lệnh cấu hình từ xa. Chạy tập lệnh trong PowerShell.
PS C:WINDOWSsystem32> $url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" PS C:WINDOWSsystem32> $file = "$env:tempConfigureRemotingForAnsible.ps1" PS C:WINDOWSsystem32> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) PS C:WINDOWSsystem32> powershell.exe -ExecutionPolicy ByPass -File $file PS C:WINDOWSsystem32> winrm enumerate winrm/config/Listener Listener Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = 127.0.0.1, 169.254.8.240, 169.254.36.9, 169.254.102.217, 169.254.215.170, 192.168.0.102, ::1, fe80::3131:c6d7:9ef5:8f0%7, fe80::51b7:9134:550d:d7aa%22, fe80::88f1:1229:e1dd:2409%16, fe80::99cf:5796:4f8e:f5c1%15, fe80::fd77:c19d:e0f2:66d9%9 Listener Address = * Transport = HTTPS Port = 5986 Hostname = DESKTOP-2L8QMI6 Enabled = true URLPrefix = wsman CertificateThumbprint = C83B3FC8B274D0B650F0FD647DC7AC129BBE3FA0 ListeningOn = 127.0.0.1, 169.254.8.240, 169.254.36.9, 169.254.102.217, 169.254.215.170, 192.168.0.102, ::1, fe80::3131:c6d7:9ef5:8f0%7, fe80::51b7:9134:550d:d7aa%22, fe80::88f1:1229:e1dd:2409%16, fe80::99cf:5796:4f8e:f5c1%15, fe80::fd77:c19d:e0f2:66d9%9
Đặt winrm để cho phép lưu lượng HTTP.
PS C:WINDOWSsystem32> winrm set winrm/config/service '@{AllowUnencrypted="true"}' Service RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD) MaxConcurrentOperations = 4294967295 MaxConcurrentOperationsPerUser = 1500 EnumerationTimeoutms = 240000 MaxConnections = 300 MaxPacketRetrievalTimeSeconds = 120 AllowUnencrypted = true Auth Basic = true Kerberos = true Negotiate = true Certificate = false CredSSP = false CbtHardeningLevel = Relaxed DefaultPorts HTTP = 5985 HTTPS = 5986 IPv4Filter = * IPv6Filter = * EnableCompatibilityHttpListener = false EnableCompatibilityHttpsListener = false CertificateThumbprint AllowRemoteAccess = true
Đặt xác thực thành cơ bản trong wirm.
PS C:WINDOWSsystem32> winrm set winrm/config/service/auth '@{Basic="true"}' Auth Basic = true Kerberos = true Negotiate = true Certificate = false CredSSP = false CbtHardeningLevel = Relaxed
Bước 6: Kiểm tra khả năng kết nối với Windows Server
Bây giờ tất cả các bước trên máy đã xong. Đi tới máy điều khiển ansible và ping máy chủ windows bằng mô-đun ansible win_ping.
[email protected]:~$ ansible win -m win_ping 192.168.0.102 | SUCCESS => { "changed": false, "ping": "pong" }
Thông báo thành công cho thấy rằng kết nối đã được thiết lập. Bây giờ, hệ thống cửa sổ đã sẵn sàng để được quản lý từ xa từ Ansible đang chạy trên Ubuntu.