Cum se conectează Ansible pe Windows de la Ubuntu?

Permiteți-mi să vă arăt rapid cum să conectați serverul Windows de la Ansible care rulează pe Ubuntu.

Pentru a urma pașii de mai jos, trebuie să aveți instalate Python 3.x și Ansible pe ambele sisteme. Puteți urmări articolele de mai jos dacă aveți nevoie de ajutor.

Cum se instalează și se configurează Ansible pe Ubuntu?

Cum se instalează Ansible pe Windows?

Mai jos sunt detaliile ambelor servere pe care le folosesc:

  • Controller Ansible – 192.168.0.108
  • Windows Server – 192.168.0.102

Pasul 1: Creați utilizator Ansible Windows

Creați un utilizator nou pentru configurarea conexiunii Ansible Windows.

  • Deschideți Computer Management pe sistemul dvs. Windows și accesați Local Users and Groups.
  • Faceți clic dreapta pe Utilizatori și creați un utilizator nou.
  • Selectați caseta de selectare Parola nu expiră niciodată și faceți clic pe creați.
  • Acum, printre grupurile disponibile, faceți clic dreapta pe grupul Administratori și faceți clic pe proprietăți.
  • Faceți clic pe Adăugare și introduceți ansible în numele obiectelor.
  • Faceți clic pe opțiunea de verificare a numelor și apoi pe Ok.

Acum, un utilizator ansible pe o mașină Windows este gata.

Pasul 2: Configurați bibliotecile și WinRM

Accesați computerul controler ansible, actualizați-l și instalați bibliotecile menționate mai jos.

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

WinRM înseamnă Windows remote management. Vă permite să efectuați sarcini de gestionare pe sisteme Windows la distanță. Vom instala python3-winrm, un client python care este folosit pentru a face o conexiune la sistemul 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) ...

Pasul 3: Actualizați fișierul Ansible Inventory

Acum, voi edita fișierul ansible hosts cu adresa IP a sistemului Windows. Deci, acum ansible va ști ce sistem Windows trebuie să se conecteze.

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

[win]
192.168.0.102

Pasul 4: Actualizați variabilele grupului Ansible

Creați un director pentru a pune variabilele necesare pentru a vă conecta la sistemul Windows.

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

Creați un fișier win.yaml și puneți detaliile utilizatorului pe care le-ați creat în primul pas și mai multe variabile necesare pentru a vă conecta la sistemul 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:Userstipstrick.roAppDataLocalProgramsPythonPython37python

Pasul 5: Configurați serverele Windows pentru a le gestiona

Deschideți Windows Power Shell și actualizați-l. Trebuie să aveți Powershell 3.0 și .NET Framework 4.0 prezente pe mașina 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

Pentru a configura WinRM pe un sistem Windows cu ansible, ansible a furnizat un script de configurare la distanță. Rulați scriptul în 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

Setați winrm pentru a permite traficul 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

Setați autentificarea la bază în 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

Pasul 6: Testați conexiunea la Windows Server

Acum toți pașii de pe mașină sunt gata. Accesați mașina controler ansible și trimiteți ping la mașina server Windows folosind modulul win_ping ansible.

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

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

Mesajul de succes arată că conexiunea a fost stabilită. Acum, sistemul Windows este gata pentru a fi administrat de la distanță din Ansible care rulează pe Ubuntu.

  Cum să scapi de spațiile din căile fișierelor de pe linia de comandă Windows