Projet

Général

Profil

ClientSalt » Historique » Version 17

Joël Cuissinat, 04/05/2018 12:09

1 1 Joël Cuissinat
h1. Utilisation de Salt pour remplacer le client Scribe
2 1 Joël Cuissinat
3 6 Joël Cuissinat
{{>toc}}
4 6 Joël Cuissinat
5 1 Joël Cuissinat
h2. Mise en place sur le module
6 1 Joël Cuissinat
7 1 Joël Cuissinat
Les paquets nécessaires sont déjà en place sur un module Seth ou un module Scribe car ils sont nécessaires à l'EAD3.
8 1 Joël Cuissinat
Dans le cadre de ScribeAD, on pourrait envisager d'installer le paquet *salt-master* dans le conteneur _addc_.
9 1 Joël Cuissinat
10 4 Joël Cuissinat
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.
11 4 Joël Cuissinat
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_ :
12 1 Joël Cuissinat
<pre>
13 4 Joël Cuissinat
    <containers>
14 4 Joël Cuissinat
        <container name='fichier'>
15 4 Joël Cuissinat
            <service servicelist='websockify'>salt-master</service>
16 4 Joël Cuissinat
            <service_access service='salt-master'>
17 4 Joël Cuissinat
                <port>4505</port>
18 4 Joël Cuissinat
                <port>4506</port>
19 4 Joël Cuissinat
            </service_access>
20 4 Joël Cuissinat
        </container>
21 4 Joël Cuissinat
    </containers>
22 1 Joël Cuissinat
</pre>
23 1 Joël Cuissinat
24 1 Joël Cuissinat
h2. Mise en place sur les clients
25 1 Joël Cuissinat
26 1 Joël Cuissinat
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
27 2 Joël Cuissinat
28 2 Joël Cuissinat
À l'étape *Minion Settings* :
29 2 Joël Cuissinat
* sélectionner *Default Config*
30 2 Joël Cuissinat
* renseigner Master IP or Hostname avec l'IP du master (exemple : 10.1.3.5 pour etb1.scribe)
31 11 Klaas TJEBBES
* 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)
32 3 Joël Cuissinat
33 3 Joël Cuissinat
NB : Le fichier de configuration du Minion est disponible dans @C:\salt\conf\minion@
34 5 Joël Cuissinat
35 5 Joël Cuissinat
h2. Enregistrement du minion
36 5 Joël Cuissinat
37 12 Klaas TJEBBES
* Le Minion apparaît dans la liste des clés à accepter :
38 12 Klaas TJEBBES
39 5 Joël Cuissinat
<pre>
40 5 Joël Cuissinat
root@scribe:~# salt-key -L
41 5 Joël Cuissinat
Accepted Keys:
42 5 Joël Cuissinat
Denied Keys:
43 5 Joël Cuissinat
Unaccepted Keys:
44 5 Joël Cuissinat
PC-124784.ac-test.fr
45 5 Joël Cuissinat
Rejected Keys:
46 1 Joël Cuissinat
</pre>
47 1 Joël Cuissinat
48 12 Klaas TJEBBES
* Accepter la clé :
49 12 Klaas TJEBBES
50 5 Joël Cuissinat
<pre>
51 5 Joël Cuissinat
root@scribe:~# salt-key -y -a PC-124784.ac-test.fr
52 5 Joël Cuissinat
The following keys are going to be accepted:
53 5 Joël Cuissinat
Unaccepted Keys:
54 5 Joël Cuissinat
PC-124784.ac-test.fr
55 1 Joël Cuissinat
Key for minion PC-124784.ac-test.fr accepted.
56 1 Joël Cuissinat
</pre>
57 5 Joël Cuissinat
58 12 Klaas TJEBBES
* Supprimer la clé :
59 12 Klaas TJEBBES
60 1 Joël Cuissinat
<pre>
61 1 Joël Cuissinat
root@scribe:~# salt-key -d PC-124784.ac-test.fr
62 7 Joël Cuissinat
</pre>
63 7 Joël Cuissinat
64 12 Klaas TJEBBES
* Accepter toutes les clés :
65 12 Klaas TJEBBES
66 7 Joël Cuissinat
<pre>
67 7 Joël Cuissinat
root@scribe:~# salt-key -A
68 7 Joël Cuissinat
</pre>
69 7 Joël Cuissinat
70 1 Joël Cuissinat
h2. Commandes basiques
71 8 Joël Cuissinat
72 8 Joël Cuissinat
h3. Test du Minion
73 9 Joël Cuissinat
74 8 Joël Cuissinat
<pre>
75 8 Joël Cuissinat
root@scribe:~# salt PC-124784.ac-test.fr  test.ping 
76 1 Joël Cuissinat
PC-124784.ac-test.fr:
77 1 Joël Cuissinat
    True
78 1 Joël Cuissinat
</pre>
79 1 Joël Cuissinat
80 17 Joël Cuissinat
h3. Redémarrage du PC
81 1 Joël Cuissinat
82 17 Joël Cuissinat
* Immédiat
83 17 Joël Cuissinat
84 1 Joël Cuissinat
<pre>
85 17 Joël Cuissinat
salt PC-124784.ac-test.fr system.reboot 0
86 1 Joël Cuissinat
</pre>
87 1 Joël Cuissinat
88 17 Joël Cuissinat
<pre>
89 17 Joël Cuissinat
salt 'PC-12511.ac-test.fr' cmd.run 'shutdown /r /t 0 /f' 
90 17 Joël Cuissinat
</pre>
91 17 Joël Cuissinat
92 17 Joël Cuissinat
* 5 secondes
93 17 Joël Cuissinat
94 17 Joël Cuissinat
<pre>
95 17 Joël Cuissinat
salt 'FDGFDG.ac-test.fr' system.reboot 5 True
96 17 Joël Cuissinat
</pre>
97 17 Joël Cuissinat
98 17 Joël Cuissinat
_Par défaut, le timeout s'exprime en minutes. Il est possible de l'exprimer en seconde en passant le second paramètre à True :)_
99 15 Joël Cuissinat
100 15 Joël Cuissinat
101 15 Joël Cuissinat
h2. Gestion des clients Microsoft 
102 15 Joël Cuissinat
103 15 Joël Cuissinat
h3. Documentation
104 15 Joël Cuissinat
105 15 Joël Cuissinat
* Module win_system : https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.win_system.html
106 15 Joël Cuissinat
* Module win_dns_client : https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.win_dns_client.html
107 15 Joël Cuissinat
108 15 Joël Cuissinat
h3. Renommage du PC
109 15 Joël Cuissinat
110 15 Joël Cuissinat
<pre>
111 15 Joël Cuissinat
root@scribe:~# salt PC-124784.ac-test.fr system.set_computer_name PC-CDI1
112 15 Joël Cuissinat
PC-124784.ac-test.fr:
113 15 Joël Cuissinat
    ----------
114 15 Joël Cuissinat
    Computer Name:
115 15 Joël Cuissinat
        ----------
116 15 Joël Cuissinat
        Current:
117 15 Joël Cuissinat
            PC-125292
118 15 Joël Cuissinat
        Pending:
119 15 Joël Cuissinat
            PC-CDI1
120 15 Joël Cuissinat
</pre>
121 15 Joël Cuissinat
122 15 Joël Cuissinat
Le renommage ne sera effectif qu'après redémarrage du poste client.
123 15 Joël Cuissinat
Évidemment le renommage du poste ne modifie pas le nom du Minion !
124 15 Joël Cuissinat
125 15 Joël Cuissinat
h3. Intégration au domaine
126 15 Joël Cuissinat
127 15 Joël Cuissinat
<pre>
128 15 Joël Cuissinat
salt PC-124784.ac-test.fr system.join_domain domain='etb1.lan' username='admin' password='eole' account_exists=False restart=True
129 15 Joël Cuissinat
</pre>
130 15 Joël Cuissinat
131 15 Joël Cuissinat
Si on relance la commande une seconde fois, on obtient le message suivant :
132 15 Joël Cuissinat
<pre>
133 15 Joël Cuissinat
PC-124784.ac-test.fr:
134 15 Joël Cuissinat
    Already joined to etb1.lan
135 15 Joël Cuissinat
</pre>
136 15 Joël Cuissinat
137 14 Klaas TJEBBES
138 13 Klaas TJEBBES
h3. Changer le DNS
139 13 Klaas TJEBBES
140 13 Klaas TJEBBES
* Récupérer le nom de l'interface réseau 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
141 1 Joël Cuissinat
142 1 Joël Cuissinat
<pre>
143 13 Klaas TJEBBES
salt 'PC-124784.ac-test.fr' network.get_route 192.168.0.5
144 13 Klaas TJEBBES
</pre>
145 13 Klaas TJEBBES
146 1 Joël Cuissinat
<pre>
147 1 Joël Cuissinat
root@dc1:~# salt 'PC-124784.ac-test.fr' network.get_route 192.168.0.5
148 1 Joël Cuissinat
PC-124784.ac-test.fr:
149 1 Joël Cuissinat
    ----------
150 13 Klaas TJEBBES
    destination:
151 1 Joël Cuissinat
        192.168.0.5
152 1 Joël Cuissinat
    gateway:
153 13 Klaas TJEBBES
        0.0.0.0
154 1 Joël Cuissinat
    interface:
155 1 Joël Cuissinat
        MonInterface
156 8 Joël Cuissinat
    source:
157 1 Joël Cuissinat
        192.168.0.184
158 1 Joël Cuissinat
</pre>
159 1 Joël Cuissinat
160 1 Joël Cuissinat
<pre>
161 1 Joël Cuissinat
salt 'PC-124784.ac-test.fr' ip.set_static_dns MonInterface 192.168.0.5
162 1 Joël Cuissinat
</pre>
163 1 Joël Cuissinat
164 1 Joël Cuissinat
165 14 Klaas TJEBBES
h3. Joindre Domaine
166 13 Klaas TJEBBES
167 13 Klaas TJEBBES
<pre>
168 13 Klaas TJEBBES
salt 'PC-12511.ac-test.fr' system.join_domain domain='ac-test.fr' username='admin' password='Eole;2121' account_exists=False restart=True
169 13 Klaas TJEBBES
</pre>
170 13 Klaas TJEBBES
171 13 Klaas TJEBBES
h3. Autre
172 13 Klaas TJEBBES
173 13 Klaas TJEBBES
<pre>
174 13 Klaas TJEBBES
salt 'PC-12511.ac-test.fr' cmd.run notepad.exe
175 13 Klaas TJEBBES
</pre>
176 13 Klaas TJEBBES
177 13 Klaas TJEBBES
<pre>
178 14 Klaas TJEBBES
salt '*ac-test.fr' sys.list_functions
179 14 Klaas TJEBBES
salt '*ac-test.fr' sys.list_state_functions
180 14 Klaas TJEBBES
</pre>
181 14 Klaas TJEBBES
182 1 Joël Cuissinat
<pre>
183 1 Joël Cuissinat
salt 'FDGFDG.ac-test.fr' win_dns_client.get_dns_config
184 1 Joël Cuissinat
salt 'FDGFDG.ac-test.fr' win_dns_client.add_dns 8.8.8.8 "Ethernet" 1
185 1 Joël Cuissinat
salt 'FDGFDG.ac-test.fr' cmd.run "netsh interface ip show config"
186 1 Joël Cuissinat
salt 'FDGFDG.ac-test.fr' cmd.run "CHCP 1252 & netsh interface ip show config"
187 13 Klaas TJEBBES
</pre>
188 14 Klaas TJEBBES
189 14 Klaas TJEBBES
<pre>
190 14 Klaas TJEBBES
salt -G 'os_family:Windows' network.interfaces
191 14 Klaas TJEBBES
salt 'PC-124784.ac-test.fr' network.interfaces
192 14 Klaas TJEBBES
salt 'PC-124784.ac-test.fr' network.interfaces_names
193 14 Klaas TJEBBES
</pre>
194 13 Klaas TJEBBES
195 13 Klaas TJEBBES
h3. Commandes non fonctionnelles 
196 13 Klaas TJEBBES
197 13 Klaas TJEBBES
Les commandes suivantes ne fonctionne pas :
198 13 Klaas TJEBBES
199 13 Klaas TJEBBES
<pre>
200 13 Klaas TJEBBES
salt 'PC-124784.ac-test.fr' ip.get_all_interfaces
201 13 Klaas TJEBBES
</pre> 
202 13 Klaas TJEBBES
<pre>
203 1 Joël Cuissinat
salt -G 'os_family:Windows' ip.get_all_interfaces
204 1 Joël Cuissinat
</pre>