Πώς να συνδέσετε το Ansible στα Windows από το Ubuntu;

Επιτρέψτε μου να σας δείξω γρήγορα πώς να συνδέσετε τον διακομιστή των Windows από το Ansible που εκτελείται στο Ubuntu.

Για να ακολουθήσετε τα παρακάτω βήματα, πρέπει να έχετε εγκατεστημένα τα Python 3.x και Ansible και στα δύο συστήματα. Μπορείτε να ακολουθήσετε τα παρακάτω άρθρα εάν χρειάζεστε βοήθεια.

Πώς να εγκαταστήσετε και να ρυθμίσετε το Ansible στο Ubuntu;

Πώς να εγκαταστήσετε το Ansible στα Windows;

Παρακάτω είναι οι λεπτομέρειες και των δύο διακομιστών που χρησιμοποιώ:

  • Ελεγκτής Ansible – 192.168.0.108
  • Windows Server – 192.168.0.102

Βήμα 1: Δημιουργία χρήστη Ansible Windows

Δημιουργήστε έναν νέο χρήστη για τη ρύθμιση σύνδεσης των Windows Ansible.

  • Ανοίξτε το Computer Management στο σύστημα Windows και μεταβείτε στο Local Users and Groups.
  • Κάντε δεξί κλικ στο Users και δημιουργήστε έναν νέο χρήστη.
  • Επιλέξτε το πλαίσιο ελέγχου Ο κωδικός δεν λήγει ποτέ και κάντε κλικ στη δημιουργία.
  • Τώρα ανάμεσα στις διαθέσιμες ομάδες, κάντε δεξί κλικ στην ομάδα Διαχειριστές και κάντε κλικ στις ιδιότητες.
  • Κάντε κλικ στο Προσθήκη και πληκτρολογήστε ansible στα ονόματα αντικειμένων.
  • Κάντε κλικ στην επιλογή ονομάτων ελέγχου και στη συνέχεια ΟΚ.
  Δημιουργία βάσης δεδομένων σκληρού δίσκου και γρήγορη αναζήτηση αρχείων

Τώρα, ένας ανεξάρτητος χρήστης σε μια μηχανή Windows είναι έτοιμος.

Βήμα 2: Ρύθμιση βιβλιοθηκών και WinRM

Μεταβείτε στο μηχάνημα ελεγκτή ansible, ενημερώστε το και εγκαταστήστε τις βιβλιοθήκες που αναφέρονται παρακάτω.

[email protected]:~$ sudo apt-get update
[email protected]:~$ sudo apt-get install gcc python-dev
[email protected]:~$ sudo apt install python3-pip

Το WinRM σημαίνει απομακρυσμένη διαχείριση των Windows. Σας επιτρέπει να εκτελείτε εργασίες διαχείρισης σε απομακρυσμένα συστήματα Windows. Θα εγκαταστήσουμε το python3-winrm, ένα πρόγραμμα-πελάτη python που χρησιμοποιείται για τη σύνδεση με το σύστημα των Windows.

[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) ...

Βήμα 3: Ενημερώστε το αρχείο Ansible Inventory

Τώρα, θα επεξεργαστώ το αρχείο ansible hosts με τη διεύθυνση IP του συστήματος των Windows. Έτσι τώρα η ansible θα γνωρίζει ποιο σύστημα Windows πρέπει να συνδέσει.

[email protected]:~$ sudo gedit /etc/ansible/hosts

[win]
192.168.0.102

Βήμα 4: Ενημερώστε τις μεταβλητές ομάδας Ansible

Δημιουργήστε έναν κατάλογο για την τοποθέτηση μεταβλητών που πρέπει να συνδεθείτε στο σύστημα των Windows.

[email protected]:~$ mkdir /etc/ansible/group_vars
[email protected]:~$ sudo chmod -R 777 /etc/ansible/

Δημιουργήστε ένα αρχείο win.yaml και βάλτε τα στοιχεία χρήστη που δημιουργήσατε στο 1ο βήμα και μερικές ακόμη μεταβλητές που απαιτούνται για να συνδεθείτε στο σύστημα των Windows.

[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:Usersgrtechpc.orgAppDataLocalProgramsPythonPython37python

Βήμα 5: Διαμόρφωση διακομιστών Windows για διαχείριση

Ανοίξτε το Windows power shell και αναβαθμίστε το. Πρέπει να έχετε Powershell 3.0 και .NET Framework 4.0 στο μηχάνημα των 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

Για να ρυθμίσετε τις παραμέτρους του WinRM σε ένα σύστημα Windows με ansible, παρέχεται μια δέσμη ενεργειών απομακρυσμένης διαμόρφωσης από την ansible. Εκτελέστε το σενάριο στο 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

Ρυθμίστε το winrm για να επιτρέπεται η κυκλοφορία 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

Ρυθμίστε τον έλεγχο ταυτότητας στο βασικό στο 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

Βήμα 6: Δοκιμή συνδεσιμότητας με τον Windows Server

Τώρα όλα τα βήματα στο μηχάνημα έχουν γίνει. Μεταβείτε στο μηχάνημα ελεγκτή ansible και κάντε ping στο μηχάνημα διακομιστή των Windows χρησιμοποιώντας τη μονάδα win_ping ansible.

[email protected]:~$ ansible win -m win_ping
192.168.0.102 | SUCCESS => {

"changed": false,
"ping": "pong"
}

Το μήνυμα επιτυχίας δείχνει ότι η σύνδεση έχει δημιουργηθεί. Τώρα, το σύστημα των Windows είναι έτοιμο για απομακρυσμένη διαχείριση από το Ansible που εκτελείται στο Ubuntu.

  Διορθώστε το σφάλμα εγκατάστασης του Windows Update 0x8007012a