Projet

Général

Profil

ClientSalt » Historique » Version 13

Version 12 (Klaas TJEBBES, 04/05/2018 11:58) → Version 13/34 (Klaas TJEBBES, 04/05/2018 12:02)

h1. Utilisation de Salt pour remplacer le client Scribe

{{>toc}}

h2. Mise en place sur le module

Les paquets nécessaires sont déjà en place sur un module Seth ou un module Scribe car ils sont nécessaires à l'EAD3.
Dans le cadre de ScribeAD, on pourrait envisager d'installer le paquet *salt-master* dans le conteneur _addc_.

Le service salt-master doit être activé (même si l'EAD3 est désactivé !) et les minions (clients) doivent pouvoir accéder aux ports 4405 et 4406 du master.
L'extrait de dictionnaire Creole suivant force l'activation du service (utilisation d'une balise conteneur pour contourner #10956) et ouvre l'accès _eole-firewall_ :
<pre>
<containers>
<container name='fichier'>
<service servicelist='websockify'>salt-master</service>
<service_access service='salt-master'>
<port>4505</port>
<port>4506</port>
</service_access>
</container>
</containers>
</pre>

h2. Mise en place sur les clients

Pour les premières maquettes, nous installons manuellement la dernière version de Salt-Minion à partir de l'exécutable officiel (Python3 AMD64) : https://docs.saltstack.com/en/latest/topics/installation/windows.html

À l'étape *Minion Settings* :
* sélectionner *Default Config*
* renseigner Master IP or Hostname avec l'IP du master (exemple : 10.1.3.5 pour etb1.scribe)
* laisser *_hostname_* dans *_Minion Name:_* (c'est un mot clé, "hostname" ne sera pas renseigné dans la configuration et Minion utilisera "socket.getfqdn()" pour savoir quel nom renvoyer au Master)

NB : Le fichier de configuration du Minion est disponible dans @C:\salt\conf\minion@

h2. Enregistrement du minion

* Le Minion apparaît dans la liste des clés à accepter :

<pre>
root@scribe:~# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
PC-124784.ac-test.fr
Rejected Keys:
</pre>

* Accepter la clé :

<pre>
root@scribe:~# salt-key -y -a PC-124784.ac-test.fr
The following keys are going to be accepted:
Unaccepted Keys:
PC-124784.ac-test.fr
Key for minion PC-124784.ac-test.fr accepted.
</pre>

* Supprimer la clé :

<pre>
root@scribe:~# salt-key -d PC-124784.ac-test.fr
</pre>

* Accepter toutes les clés :

<pre>
root@scribe:~# salt-key -A
</pre>

h2. Commandes basiques

h3. Test du Minion

<pre>
root@scribe:~# salt PC-124784.ac-test.fr test.ping
PC-124784.ac-test.fr:
True
</pre>

h3. Renommage Changer le nom du PC

<pre>
root@scribe:~# salt PC-124784.ac-test.fr 'PC-124784.ac-test.fr' system.set_computer_name PC-CDI1 'DavesComputer'
PC-124784.ac-test.fr:
----------
Computer Name:
----------
Current:
PC-125292
Pending:
PC-CDI1
</pre>

Le renommage ne sera effectif qu'après redémarrage du poste client.

h3. Redémarrage du PC

* Immédiat

<pre>
salt PC-124784.ac-test.fr system.reboot 0
</pre>

<pre>
salt 'PC-12511.ac-test.fr' cmd.run 'shutdown /r /t 0 /f'
</pre>

* 5 secondes


<pre>
salt 'FDGFDG.ac-test.fr' system.reboot 5 True
</pre>

_Par défaut, le timeout s'exprime en minutes. Il est possible de l'exprimer en seconde en passant le second paramètre à True :)_

h4. Changer le DNS


* Récupérer le nom de l'interface réseau h3. Renommage du client, 192.168.0.5=<ip salt master> => on récupère le nom de la bonne interface s'il y en a plusieurs PC

<pre>
root@scribe:~# salt 'PC-124784.ac-test.fr' network.get_route 192.168.0.5 PC-124784.ac-test.fr system.set_computer_name PC-CDI1
</pre>

<pre>
root@dc1:~# salt 'PC-124784.ac-test.fr' network.get_route 192.168.0.5
PC-124784.ac-test.fr:
----------
destination: Computer Name:
192.168.0.5
gateway:
----------
0.0.0.0
interface:
Current:
PC-125292

MonInterface
source:
192.168.0.184
Pending:
PC-CDI1

</pre>

<pre>
salt 'PC-124784.ac-test.fr' ip.set_static_dns MonInterface 192.168.0.5
</pre>
Le renommage ne sera effectif qu'après redémarrage du poste client.

h3. Joindre Domaine
<pre>
salt 'PC-12511.ac-test.fr' system.join_domain domain='ac-test.fr' username='admin' password='Eole;2121' account_exists=False restart=True
</pre>

h3. Reboot
<pre>
salt 'FDGFDG.ac-test.fr' system.reboot 0
salt 'FDGFDG.ac-test.fr' system.reboot 1 True

salt 'PC-12511.ac-test.fr' cmd.run 'shutdown /r /t 0 /f'
</pre>

h3. Autre

<pre>
salt 'PC-12511.ac-test.fr' cmd.run notepad.exe
</pre>

<pre>
salt '*ac-test.fr' sys.list_functions
salt 'FDGFDG.ac-test.fr' win_dns_client.get_dns_config
salt 'FDGFDG.ac-test.fr' win_dns_client.add_dns 8.8.8.8 "Ethernet" 1
salt 'FDGFDG.ac-test.fr' cmd.run "netsh interface ip show config"
salt 'FDGFDG.ac-test.fr' cmd.run "CHCP 1252 & netsh interface ip show config"
</pre>

h3.
Commandes non fonctionnelles

Les commandes suivantes ne fonctionne pas :

<pre>
salt 'PC-124784.ac-test.fr' ip.get_all_interfaces
</pre>
<pre>
salt -G 'os_family:Windows' ip.get_all_interfaces
</pre>

h3. Réseau

* Ne fonctionne pas... (fait un traceback)

<pre>
salt 'PC-124784.ac-test.fr' ip.get_all_interfaces
</pre>

* Fonctionne ...

<pre>
salt -G 'os_family:Windows' network.interfaces
salt 'PC-124784.ac-test.fr' network.interfaces
salt 'PC-124784.ac-test.fr' network.interfaces_names

</pre>