In meinem Büro habe ich den physischen Server (hauptsächlich Windows) eingerichtet, der in der Box geliefert wurde. Wir liefern an unsere Kunden. Wenn Sie jedoch einen nach dem anderen manuell einrichten müssen und eine große Anzahl von Servern einrichten müssen Es hat viel Personal gekostet, und es gab viele Probleme wie menschliches Versagen und Einrichtungsfehler, weil die Übergabe der Arbeiter weggelassen wurde.
Die Elemente, die hauptsächlich eingerichtet werden, sind wie folgt
■ Vorbereitende Vorbereitung und Lieferbestätigung ・ Parameterblatt prüfen / aktualisieren · Lieferung · Kabelverbindung ・ USV ・ Grundeinstellung -BIOS Spracheinstellung ・ RAID-Einstellung ・ Installation des Betriebssystems ・ Überprüfen Sie die Informationen zur Gerätewartung
■ Windows-Einstellungen
・ Zulässige Remote-Festplatte oben · Windows Update ・ Passwort unbestimmt
Viele ... Darüber hinaus, wenn Sie Ihre umgebungsabhängigen Einstellungen (Hostname, IP-Adresse usw.) angeben. Es gibt viele weitere Einstellungselemente ... Ich dachte, dass es so schlecht sein würde, also beschloss ich, die automatische Konstruktion von Ansible auszuprobieren, an der ich mich schon lange interessiert hatte. Vorerst werde ich nach dem Start der physischen Maschine versuchen, das Teil ohne die umgebungsabhängigen Einstellungen des Kunden wie den Hostnamen mit Ansible zu erstellen.
・ Verbesserung der Arbeitsqualität ・ Reduzierung der Arbeitskräfte → Realisiert durch automatische Konstruktion von Ansible
・ Infrastrukturcodierung → Wenn Sie Ansible verwenden, möchte ich die Version von PlayBook verwalten! Ich denke, aber da Git usw. in der Firma nicht weit verbreitet sind, möchte ich es irgendwann vorstellen.
Zum Verständnis von Ansible und zum Erstellen einer Ausführungsumgebung habe ich auf die folgenden Artikel verwiesen.
Für diejenigen, die Ansible starten.
In meinem Fall benutze ich auf dem Terminal normalerweise geschäftlich Ich habe mit VirtualBox + CentOS eine Ansible-Ausführungsumgebung erstellt.
Außerdem, um die Remote-Arbeit in Ansible auszuführen, die festgelegt wird Da es notwendig ist, eine Funktion namens Win-RM auf der Windows-Serverseite zu aktivieren, Erstellen Sie das folgende Power Shell-Skript. Klicken Sie mit der rechten Maustaste auf → "Mit PowerShell ausführen". Aktivieren Sie Win-RM.
ansiwin.ps1
Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -OutFile ConfigureRemotingForAnsible.ps1
Set-NetConnectionProfile -InterfaceAlias (Get-NetConnectionProfile -IPv4Connectivity Internet).InterfaceAlias -NetworkCategory Private
Get-NetConnectionProfile -IPv4Connectivity Internet
powershell -ExecutionPolicy RemoteSigned .\ConfigureRemotingForAnsible.ps1
Get-Item WSMan:\localhost\Listener\*\Port
Damit sind die Vorbereitungen abgeschlossen.
PlayBook Ich habe das PlayBook im folgenden Verzeichnis auf dem Ansible-Server abgelegt.
/etc/ansible
├─hosts
├─windows_setup.yml
└─ansible.cfg
Das auszuführende PlayBook ist: Die folgenden Artikel sind hilfreich für die in PlayBook verwendete Beschreibungsmethode.
Was ist YAML? - Die Identität des Mannes, der immer in der Rails-Konfigurationsdatei erscheint
Windows_setup.yml
##playybook
##C auf dem Server:\work\Erstellen Sie einen ansible Ordner
##Kopieren Sie dort die Batch-Datei und führen Sie sie aus
- hosts: windows
tasks:
- win_file:
path=C:\work
state=directory
# Ändern Sie die FireWall-Einstellungen
- win_command: netsh advfirewall firewall set rule name="SNMP-Trap-Service(UDP-Empfang)" profile=domain new enable=yes profile=domain program=%SystemRoot%\system32\snmptrap.exe
- win_command: netsh advfirewall firewall set rule name="SNMP-Trap-Service(UDP-Empfang)" profile=private,public new enable=yes profile=private,public program=%SystemRoot%\system32\snmptrap.exe
- win_command: netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe(Echoanforderung-ICMPv4-Empfang)" new enable=yes
- win_command: netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe(Echoanforderung-ICMPv4-Übertragung)" new enable=yes
- win_command: wmic UserAccount where Name='Administrator' set PasswordExpires=false
#Deaktivieren Sie die Anforderungen an die Kennwortkomplexität
- win_shell: secedit /export /cfg cfg.txt
- win_shell: (Get-Content cfg.txt) -Replace("PasswordComplexity = 1", "PasswordComplexity = 0") | Out-File cfg.txt
#Änderungen der Gruppenrichtlinien
- win_shell: secedit /configure /db new.sdb /cfg cfg.txt /areas SecurityPolicy
- win_shell: del cfg.txt
- win_shell: gpupdate /force
- win_regedit:
key: '{{ item.key }}'
value: '{{ item.value }}'
data: '{{ item.data }}'
datatype: '{{ item.datatype | default("dword") }}'
with_items:
#Stoppen Sie den automatischen Start des Server-Managers
- key: HKLM:\SOFTWARE\Microsoft\ServerManager
value: DoNotOpenServerManagerAtLogon
data: 1
datatype: dword
#Symbolanzeige auf dem Desktop (PC, Netzwerk)
- key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
value: {20D04FE0-3AEA-1069-A2D8-08002B30309D}
data: 0
datatype: dword
- key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
value: {F02C1A0D-BE21-4350-88B0-7367FC96EF3C}
data: 0
datatype: dword
#Ändern Sie das Anzeigeformat des Bedienfelds
- key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
value: ForceClassicControlPanel
data: 1
datatype: dword
#Deaktivieren Sie die Benutzerkontensteuerung (User Account Control, UAC).
- key: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
value: ConsentPromptBehaviorAdmin
data: 0
datatype: dword
- key: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
value: EnableLUA
data: 1
datatype: dword
- key: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
value: PromptOnSecureDesktop
data: 0
datatype: dword
#Deaktivieren Sie Windows Update
- key: HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}
value: IsInstalled
data: 0
datatype: dword
- key: HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}
value: IsInstalled
data: 0
datatype: dword
Ändern Sie die Anzeigeoptionen für Ordner
- key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CabinetState
value: FullPath
data: 1
datatype: dword
- key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
value: LaunchTo
data: 1
datatype: dword
- key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
value: HideFileExt
data: 0
datatype: dword
#Starten Sie neu
- name: reboot
win_reboot:
Wenn Sie bereit sind, führen Sie PlayBook mit dem folgenden Befehl aus:
# ansible-playbook -i hosts windows_update.yml
Wenn die Einstellungsänderung normal abgeschlossen ist
PLAY RECAP *************************************************************************************************************************************************************************************************
172.19.1.1 : ok=2 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Die Anzahl der geänderten Einstellungen wird unter "geändert" angezeigt. Damit ist die automatische Serverkonstruktion abgeschlossen.
Wenn es andere Stellen gibt, an denen Sie die Einstellungen ändern möchten, können Sie sich über das Modul freuen.
Mit dieser Konstruktionsautomatisierung konnten wir vorerst den Zeitaufwand für die Einrichtung des Servers um ca. 30 Minuten pro Einheit reduzieren. Da es keine menschlichen Fehler gibt, konnten wir meiner Meinung nach die Gesamtzahl der Schritte erheblich reduzieren. Ich hatte das Gefühl, dass durch die gute Nutzung von Ansible sowohl Infrastrukturbetreiber als auch Bauherren die Vorteile nutzen können. In Zukunft werde ich andere Tools wie Teraform und die Cloud untersuchen.
Recommended Posts