[LINUX] Réduisons le travail requis pour la configuration du serveur avec Ansible

Problème lors de la création d'un serveur

Dans mon bureau, j'ai mis en place le serveur physique (principalement Windows) qui était livré dans la boîte. Nous livrons à nos clients. Cependant, lorsque vous devez configurer manuellement un par un et que vous devez configurer un grand nombre de serveurs Il a fallu beaucoup de main-d'œuvre et il y avait de nombreux problèmes tels que l'erreur humaine et l'erreur de configuration due à l'omission de remettre les travailleurs.

Les éléments qui sont principalement mis en place sont les suivants

■ Préparation préalable et confirmation de livraison ・ Vérifier / mettre à jour la feuille de paramètres ・ Livraison · Câble de connexion ・ UPS ・ Réglage initial -Paramétrage de la langue du BIOS ・ Paramètre RAID ・ Installation du système d'exploitation ・ Vérifiez les informations de maintenance de l'équipement

■ Paramètres Windows ・ Paramètre d'amélioration de la sécurité IE ・ Haut de disque distant autorisé · Windows Update ・ Mot de passe indéfini -Désactiver la complexité du mot de passe ・ Modifier les paramètres du pare-feu Windows -Changer l'affichage de l'explorateur de fichiers ・ Vérifiez l'adresse MAC ・ IPv6 désactivé ・ Paramètres IPv4 -UAC désactivé ・ Changer le nom du lecteur ・ Changement de configuration du disque ・ Création de raccourcis (réseau / PC) ・ Acquisition du journal de travail ・ Installation de l'application

Beaucoup ... En plus de cela, si vous incluez les paramètres dépendants de votre environnement (nom d'hôte, adresse IP, etc.) Il y a beaucoup plus d'éléments de réglage ... Je pensais que ce serait mauvais comme ça, alors j'ai décidé d'essayer la construction automatique d'Ansible, qui m'intéressait depuis longtemps. Pour le moment, après le démarrage de la machine physique, je vais essayer de construire la pièce en excluant les paramètres dépendant de l'environnement du client tels que le nom d'hôte avec Ansible.

Ce que vous voulez réaliser

・ Amélioration de la qualité du travail ・ Réduction de la main-d'œuvre → Réalisé par construction automatique par Ansible

・ Codage d'infrastructure → Si vous utilisez Ansible, vous souhaitez gérer la version de PlayBook! Je pense, mais comme git etc. ne sont pas répandus dans l'entreprise, j'aimerais bien l'introduire éventuellement.

Préparation préalable

Pour comprendre Ansible et créer un environnement d'exécution, je me suis référé aux articles suivants.

Pour ceux qui commencent Ansible.

Dans mon cas, sur le terminal que j'utilise habituellement pour les affaires J'ai créé un environnement d'exécution Ansible avec VirtualBox + CentOS.

Aussi, afin d'effectuer le travail à distance dans Ansible qui définit Puisqu'il est nécessaire d'activer une fonction appelée Win-RM côté serveur Windows, Créez le script Power Shell suivant, faites un clic droit → "Exécuter avec PowerShell" Activez 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

Ceci termine les préparatifs.

PlayBook J'ai placé le PlayBook dans le répertoire suivant sur le serveur Ansible.

/etc/ansible
       ├─hosts
       ├─windows_setup.yml
       └─ansible.cfg

Le PlayBook à exécuter est: Les articles suivants seront utiles pour la méthode de description utilisée dans PlayBook.

Qu'est-ce que YAML? - L'identité du gars qui apparaît toujours dans le fichier de configuration de Rails

Windows_setup.yml


##playybook
##C sur le serveur:\work\Créer un dossier ansible
##Copiez-y le fichier batch et exécutez

- hosts: windows
  tasks:
   - win_file:
        path=C:\work
        state=directory

# Modifier les paramètres de FireWall
   - win_command: netsh advfirewall firewall set rule name="Service d'interruption SNMP(Réception UDP)" profile=domain new enable=yes profile=domain program=%SystemRoot%\system32\snmptrap.exe
   - win_command: netsh advfirewall firewall set rule name="Service d'interruption SNMP(Réception UDP)" profile=private,public new enable=yes profile=private,public program=%SystemRoot%\system32\snmptrap.exe
   - win_command: netsh advfirewall firewall set rule name="Partage de fichiers et d'imprimantes(Demande d'écho-Réception ICMPv4)" new enable=yes
   - win_command: netsh advfirewall firewall set rule name="Partage de fichiers et d'imprimantes(Demande d'écho-Transmission ICMPv4)" new enable=yes
   - win_command: wmic UserAccount where Name='Administrator' set PasswordExpires=false

#Désactiver les exigences de complexité des mots de passe
   - win_shell: secedit /export /cfg cfg.txt
   - win_shell: (Get-Content cfg.txt) -Replace("PasswordComplexity = 1", "PasswordComplexity = 0") | Out-File cfg.txt

#Changements de stratégie de groupe
   - 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:

#Arrêter le démarrage automatique du gestionnaire de serveur
     - key: HKLM:\SOFTWARE\Microsoft\ServerManager
       value: DoNotOpenServerManagerAtLogon
       data: 1
       datatype: dword

#Affichage de l'icône sur le bureau (PC, réseau)
     - 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

#Changer le format d'affichage du panneau de commande
     - key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
       value: ForceClassicControlPanel
       data: 1
       datatype: dword

#Désactiver le contrôle de compte d'utilisateur (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

#Désactiver 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



Modifier les options d'affichage des dossiers
     - 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

#Redémarrer
   - name: reboot
     win_reboot:

Résultat d'exécution

Lorsque vous êtes prêt, exécutez PlayBook avec la commande suivante:

# ansible-playbook -i hosts windows_update.yml

Lorsque le changement de réglage est terminé normalement

PLAY RECAP *************************************************************************************************************************************************************************************************
172.19.1.1                  : ok=2    changed=10    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Le nombre de paramètres modifiés est affiché dans «modifié». Ceci termine la construction automatique du serveur.

finalement

S'il y a d'autres endroits où vous souhaitez modifier les paramètres, vous pouvez être heureux en vérifiant le module.

Officiel d'Ansible

Pour l'instant, avec cette automatisation de la construction, nous avons pu réduire le temps nécessaire à la mise en place du serveur d'environ 30 minutes / unité. De plus, comme il n'y a pas d'erreurs humaines, je pense que nous avons pu réduire considérablement le nombre total d'étapes. J'ai senti qu'en utilisant correctement Ansible, les opérateurs d'infrastructure et les constructeurs peuvent profiter des avantages. À l'avenir, j'étudierai d'autres outils tels que Teraform et le cloud.

Recommended Posts

Réduisons le travail requis pour la configuration du serveur avec Ansible
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
Affinons les hyper paramètres du modèle avec scikit-learn!
Résolvons le portefeuille avec une optimisation continue
Rechercher des fichiers avec l'extension spécifiée
Dockerfile pour serveur RESTful MeCab avec mecab-ipadic-neologd
Lisons le fichier RINEX avec Python ①
La troisième nuit de la boucle avec pour
Essayons Linux pour la première fois
La deuxième nuit de la boucle avec pour