[LINUX] Reduzieren wir den Arbeitsaufwand für die Servereinrichtung mit Ansible

Probleme beim Erstellen eines Servers

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.

Was Sie erreichen wollen

・ 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.

Vorbereitungen

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:

Ausführungsergebnis

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.

Schließlich

Wenn es andere Stellen gibt, an denen Sie die Einstellungen ändern möchten, können Sie sich über das Modul freuen.

Ansible Official

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

Reduzieren wir den Arbeitsaufwand für die Servereinrichtung mit Ansible
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
Lassen Sie uns die Hyperparameter des Modells mit scikit-learn abstimmen!
Lösen wir das Portfolio mit kontinuierlicher Optimierung
Suchen Sie nach Dateien mit der angegebenen Erweiterung
Dockerfile für RESTful MeCab Server mit mecab-ipadic-neologd
Lesen wir die RINEX-Datei mit Python ①
Die dritte Nacht der Runde mit für
Versuchen wir zum ersten Mal Linux
Die zweite Nacht der Runde mit für