Improve documentation
This commit is contained in:
parent
471ff52df0
commit
9a6a05e2d0
11 changed files with 195 additions and 84 deletions
12
README.md
12
README.md
|
@ -20,11 +20,23 @@ Ansible playbooks and roles to deploy Debian clients for LinuxMuster.
|
||||||
Starts local firewall and removes local directories of exam users the day after.
|
Starts local firewall and removes local directories of exam users the day after.
|
||||||
* [localhome](doc/localhome.md)
|
* [localhome](doc/localhome.md)
|
||||||
Sometimes a local home directory makes more sense than the home on a network share.
|
Sometimes a local home directory makes more sense than the home on a network share.
|
||||||
|
* [localproxy](doc/localproxy.md)
|
||||||
|
Creates a http-proxy running in user context and authentication on parent with users krb5-ticket.
|
||||||
* [localuser](doc/localuser.md)
|
* [localuser](doc/localuser.md)
|
||||||
Creates a local guest user with home on tmpfs.
|
Creates a local guest user with home on tmpfs.
|
||||||
|
* [misc_clonescreen](doc/misc_clonescreen.md)
|
||||||
|
CloneScreen on presenter PCs
|
||||||
* [vm_support](doc/vm_support.md)
|
* [vm_support](doc/vm_support.md)
|
||||||
VMs based on Qemu/KVM in school network.
|
VMs based on Qemu/KVM in school network.
|
||||||
* [vpn](doc/vpn.md)
|
* [vpn](doc/vpn.md)
|
||||||
Provides VPN access to school network.
|
Provides VPN access to school network.
|
||||||
* [wlan](doc/wlan.md)
|
* [wlan](doc/wlan.md)
|
||||||
Provides WLAN access via WPA Personal/Enterprise.
|
Provides WLAN access via WPA Personal/Enterprise.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Following possibilities:
|
||||||
|
|
||||||
|
* [Install client via PXE-Boot](doc/install_pxe.md)
|
||||||
|
* [Run playbook on existing client](doc/install_ontop.md)
|
||||||
|
* Install client via USB-Stick including ansible-playbook
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
|
|
||||||
## Configuration / Variables
|
## Configuration / Variables
|
||||||
|
|
||||||
* **custom_roles**
|
* **custom_roles**
|
||||||
List of roles which will be applied
|
List of roles which will be applied
|
||||||
Type: *List of Strings*
|
Type: *List of Strings*
|
||||||
Default: []
|
Default: []
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,4 +48,3 @@ laptops:
|
||||||
- role_a
|
- role_a
|
||||||
- role_b
|
- role_b
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
Activating exam_mode provides following functionalities:
|
Activating exam_mode provides following functionalities:
|
||||||
* when -exam user logs in, firewalld.service will start and prevent communication between devices in the same local network
|
* when -exam user logs in, firewalld.service will start and prevent communication between devices in the same local network
|
||||||
* home- and media-directory of -exam users will be renamed (on the next day) and removed (after some days).\
|
* home- and media-directory of -exam users will be renamed (on the next day) and removed (after some days).
|
||||||
This is important due the fact, that -exam user will be new created (with new user-id) on exam-mode initialisation.\
|
This is important due the fact, that -exam user will be new created (with new user-id) on exam-mode initialisation.
|
||||||
Without renaming/deleting the home- and media-directory, the -exam user couldn't log in twice on the same pc.\
|
Without renaming/deleting the home- and media-directory, the -exam user couldn't log in twice on the same pc.
|
||||||
Particularly important on machines with localhome
|
Particularly important on machines with localhome
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
53
doc/install_ontop.md
Normal file
53
doc/install_ontop.md
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# Installation on existing client
|
||||||
|
|
||||||
|
An easy method to test the lmn-client is to run the playbook manual on a fresh installed client.
|
||||||
|
|
||||||
|
## Direct call via ansible-pull
|
||||||
|
|
||||||
|
With two simple commands you can install the lmn-client with default configuration.
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
|
||||||
|
* Install debian on client (via USB or PXE)
|
||||||
|
* Install additional packages: ansible
|
||||||
|
`sudo apt install ansible`
|
||||||
|
* Run Playbook
|
||||||
|
`ansible-pull -i inventory.yml -l localhost, --url=https://codeberg.org/DigitalSouveraeneSchule/lmn-client.git -C main lmn-client.yml`
|
||||||
|
|
||||||
|
## Checkout git and run ansible locally
|
||||||
|
|
||||||
|
When checking out the repository you can customize the installation by editing the inventory before run the playbook.
|
||||||
|
You can repeat the process as often as you like and gradually adapt your inventory settings to your needs.
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
|
||||||
|
* Install debian on client (via USB or PXE)
|
||||||
|
* Install additional packages: ansible, git
|
||||||
|
`sudo apt install ansible git`
|
||||||
|
* Checkout Repository
|
||||||
|
`git clone https://codeberg.org/DigitalSouveraeneSchule/lmn-client.git`
|
||||||
|
* Create inventory
|
||||||
|
`cp inventory.yml inventory-myschool.yml`
|
||||||
|
* Edit inventory-myschool.yml
|
||||||
|
e.g.: `nano inventory-myschool.yml`
|
||||||
|
* Run Playbook
|
||||||
|
`ansible-playbook -i inventory-myschool.yml -l localhost lmn-client.yml`
|
||||||
|
|
||||||
|
## Run with other target device
|
||||||
|
|
||||||
|
If you want to run the play on an other target pc:
|
||||||
|
|
||||||
|
* You have to add the target IP or hostname in the inventory.
|
||||||
|
* SSH access on target must be configured (deploy ssh public-key on target host)
|
||||||
|
|
||||||
|
`ansible-playbook -i inventory-myschool.yml -l target lmn-client.yml`
|
||||||
|
|
||||||
|
## Upload changes to your own remote repository
|
||||||
|
|
||||||
|
If you are satisfied with your changes, you can upload the changes to your own remote repository.
|
||||||
|
|
||||||
|
* Create new git repository on your git service (e.g. https://codeberg.org)
|
||||||
|
* Add new remote origin
|
||||||
|
`git remote add myorigin git@codeberg.org:myname/mylmn-client.git`
|
||||||
|
* Push the repository to the new remote
|
||||||
|
`push -u myorigin main`
|
50
doc/install_pxe.md
Normal file
50
doc/install_pxe.md
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# Installation via PXE/Grub
|
||||||
|
|
||||||
|
* **Using DigitalSouveraeneSchule repository and LinuxMuster.Net tftp**
|
||||||
|
Simplest solution. Playbook and default inventory from DigitalSouveraeneSchule codeberg repository.
|
||||||
|
Linux kernel and initial Ramdisk from debian repository.
|
||||||
|
* **Using your own repository and LinuxMuster.Net tftp**
|
||||||
|
Here you can use your own inventory and make many custom settings.
|
||||||
|
Linux kernel and initial Ramdisk from debian repository.
|
||||||
|
* **Using your own repository and livebox tftp**
|
||||||
|
Additional kernel and Ramdisk from your own infrastrukture.
|
||||||
|
|
||||||
|
## Using codeberg repository and LinuxMuster.Net tftp
|
||||||
|
|
||||||
|
### Modification LinuxMuster.Net server
|
||||||
|
|
||||||
|
Create grub config for device group `lmnclient` on your schools server:
|
||||||
|
|
||||||
|
/srv/linbo/boot/grub/lmnclient.cfg
|
||||||
|
```
|
||||||
|
# ### NOT managed by linuxmuster.net ###
|
||||||
|
|
||||||
|
# edit to your needs
|
||||||
|
set default=1
|
||||||
|
|
||||||
|
menuentry 'Installer Debian bookworm (amd64) + preseed + ansible inventory' {
|
||||||
|
echo -n "Enter domain join password: "
|
||||||
|
read adpw
|
||||||
|
linux (http,ftp.debian.org)/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux auto=true priority=high \
|
||||||
|
url=https://codeberg.org/DigitalSouveraeneSchule/lmn-client/raw/branch/fvs/misc/preseed.cfg interface=auto \
|
||||||
|
playbook=lmn-client.yml adpw="${adpw}" ---
|
||||||
|
initrd (http,ftp.debian.org)/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Insert host in devices.csv and set device group to `lmnclient`:
|
||||||
|
|
||||||
|
devices.csv
|
||||||
|
```
|
||||||
|
classroom;mypc01;lmnclient;F2:81:6B:C9:E3:EF;10.0.5.51;;;;classroom-studentcomputer;;1;;;;;
|
||||||
|
```
|
||||||
|
|
||||||
|
### On client PC
|
||||||
|
|
||||||
|
* In BIOS-Setting: Set boot to UEFI
|
||||||
|
* Start via PXE
|
||||||
|
* When asked for domain-join-password: Enter password of `global-admin`
|
||||||
|
* confirm `hostname` and `domain` (you will be asked in network setup)
|
||||||
|
* ... Get a cup of coffee ... wait until reboot ... login (Logging in may take a few minutes after installation)
|
||||||
|
|
||||||
|
## Using your own livebox server
|
|
@ -16,26 +16,23 @@ To enable the local home directory, set the variable `localhome` to `true` (defa
|
||||||
|
|
||||||
## Configuration / Variables
|
## Configuration / Variables
|
||||||
|
|
||||||
* **localhome**
|
* **localhome**
|
||||||
This flag indicates whether to use home on local disk.
|
This flag indicates whether to use home on local disk.
|
||||||
If set to `true` local user's home will be on local disk.
|
If set to `true` local user's home will be on local disk.
|
||||||
Type: *Boolean*
|
Type: *Boolean*
|
||||||
Values:
|
Values:
|
||||||
* `false` <-- (default)
|
* `false` <-- (default)
|
||||||
* `true`
|
* `true`
|
||||||
* **localhome_logout_missing_serverhome**
|
* **localhome_logout_missing_serverhome**
|
||||||
If this flag is set to `true`, the user will be logged out if mounting the serverhome failed.
|
If this flag is set to `true`, the user will be logged out if mounting the serverhome failed.
|
||||||
Sometimes mounting the server homes fails, but the user still logs in.
|
Sometimes mounting the server homes fails, but the user still logs in.
|
||||||
For laptops used in schools, it's better to force the server home.
|
For laptops used in schools, it's better to force the server home.
|
||||||
For teacher devices that can also be used outside of school, this flag must not be set.
|
For teacher devices that can also be used outside of school, this flag must not be set.
|
||||||
Type:: *Boolean*
|
Type:: *Boolean*
|
||||||
Values:
|
Values:
|
||||||
* `false`
|
* `false`
|
||||||
* `true` <-- (default)
|
* `true` <-- (default)
|
||||||
|
|
||||||
|
|
||||||
localhome_logout_missing_serverhome
|
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
* Hosts in group `laptops` will get the localhome. Teacherlaptops will be part of the `laptop` group (children-entry).
|
* Hosts in group `laptops` will get the localhome. Teacherlaptops will be part of the `laptop` group (children-entry).
|
||||||
|
|
|
@ -15,16 +15,16 @@ Default: `firewall.{{ domain }}`
|
||||||
|
|
||||||
## Configuration / Variables
|
## Configuration / Variables
|
||||||
|
|
||||||
* **localproxy**
|
* **localproxy**
|
||||||
This flag indicates whether to install the local proxy.
|
This flag indicates whether to install the local proxy.
|
||||||
If set to `true` local Squid proxy will be installed.
|
If set to `true` local Squid proxy will be installed.
|
||||||
Type: *Boolean*
|
Type: *Boolean*
|
||||||
Values:
|
Values:
|
||||||
* `false` <-- (default)
|
* `false` <-- (default)
|
||||||
* "username"
|
* "username"
|
||||||
* **localproxy_parent**
|
* **localproxy_parent**
|
||||||
This variable specifies the name of the parent HTTP proxy that accepts the user's Kerberos ticket.
|
This variable specifies the name of the parent HTTP proxy that accepts the user's Kerberos ticket.
|
||||||
Default: "firewall.{{ domain }}"
|
Default: "firewall.{{ domain }}"
|
||||||
Type: *String*
|
Type: *String*
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
|
@ -15,20 +15,20 @@ Default: `Muster!`
|
||||||
|
|
||||||
## Configuration / Variables
|
## Configuration / Variables
|
||||||
|
|
||||||
* **localuser**
|
* **localuser**
|
||||||
Username of local guest account
|
Username of local guest account
|
||||||
If set to `false` no user will be created
|
If set to `false` no user will be created
|
||||||
Type: *String*/*Boolean*
|
Type: *String*/*Boolean*
|
||||||
Values:
|
Values:
|
||||||
* `false` <-- (default)
|
* `false` <-- (default)
|
||||||
* "username"
|
* "username"
|
||||||
* **localuser_password**
|
* **localuser_password**
|
||||||
Password of local guest user
|
Password of local guest user
|
||||||
Default: "Muster!"
|
Default: "Muster!"
|
||||||
Type: *String*
|
Type: *String*
|
||||||
* **localuser_secretsalt**
|
* **localuser_secretsalt**
|
||||||
Salt for creation of password hash
|
Salt for creation of password hash
|
||||||
Default: "4ANAxPycC3q"
|
Default: "4ANAxPycC3q"
|
||||||
Type: *String*
|
Type: *String*
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,31 +2,31 @@
|
||||||
|
|
||||||
Presentation PCs have a habit of displaying the primary screen on the wrong device. Furthermore, the workspace is extended by default instead of mirrored.
|
Presentation PCs have a habit of displaying the primary screen on the wrong device. Furthermore, the workspace is extended by default instead of mirrored.
|
||||||
|
|
||||||
These issues can be resolved using the 'misc_clonescreen' variable.
|
These issues can be resolved using the 'misc_clonescreen' variable.
|
||||||
If the login screen appears on the wrong device, this can be corrected using the `dual_screen` variable.
|
If the login screen appears on the wrong device, this can be corrected using the `dual_screen` variable.
|
||||||
Furthermore, the display devices are mirrored by default instead of extended.
|
Furthermore, the display devices are mirrored by default instead of extended.
|
||||||
|
|
||||||
If the cabling does not properly support large screen resolutions, the desired resolution and refresh rate can be set.
|
If the cabling does not properly support large screen resolutions, the desired resolution and refresh rate can be set.
|
||||||
|
|
||||||
## Configuration / Variables
|
## Configuration / Variables
|
||||||
|
|
||||||
* **misc_clonescreen**
|
* **misc_clonescreen**
|
||||||
This flag indicates whether to prepare clonescreen mode.
|
This flag indicates whether to prepare clonescreen mode.
|
||||||
If set to `true` clonescreen will be default.
|
If set to `true` clonescreen will be default.
|
||||||
Type: *Boolean*
|
Type: *Boolean*
|
||||||
Values:
|
Values:
|
||||||
* `false` <-- (default)
|
* `false` <-- (default)
|
||||||
* "username"
|
* "username"
|
||||||
* **misc_clonescreen_mode**
|
* **misc_clonescreen_mode**
|
||||||
This variable specifies the resolution and frequency of display.
|
This variable specifies the resolution and frequency of display.
|
||||||
Default: "1920x1080@60"
|
Default: "1920x1080@60"
|
||||||
Type: *String*
|
|
||||||
* ** dual_screen **
|
|
||||||
Array with X11 and Wayland naming of desired primary display.
|
|
||||||
Type: *String*
|
Type: *String*
|
||||||
|
* ** dual_screen **
|
||||||
|
Array with X11 and Wayland naming of desired primary display.
|
||||||
|
Type: *String*
|
||||||
Example: [DisplayPort-3, DP-4]
|
Example: [DisplayPort-3, DP-4]
|
||||||
* ** audio_output **
|
* ** audio_output **
|
||||||
Array of audio-output device to be selected.
|
Array of audio-output device to be selected.
|
||||||
Example: [pci-0000_00_1f.3, analog-stereo]
|
Example: [pci-0000_00_1f.3, analog-stereo]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,25 +10,25 @@ VMs based on Qemu/KVM in school network.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
* For distribution of VMs, you have to run a `seedbox` with aria2 server (torrent server).\
|
* For distribution of VMs, you have to run a `seedbox` with aria2 server (torrent server).
|
||||||
Repository with ansible-playbook for seedbox install: https://codeberg.org/digitalsouveraeneschule/...
|
Repository with ansible-playbook for seedbox install: https://codeberg.org/digitalsouveraeneschule/...
|
||||||
* `seedbox`-hostname must be resolvable via DNS
|
* `seedbox`-hostname must be resolvable via DNS
|
||||||
|
|
||||||
## Configuration / Variables
|
## Configuration / Variables
|
||||||
|
|
||||||
* **vm_support**
|
* **vm_support**
|
||||||
This flag indicates whether to activate VM support.
|
This flag indicates whether to activate VM support.
|
||||||
Type: *Boolean*
|
Type: *Boolean*
|
||||||
Values:
|
Values:
|
||||||
* `false` <-- (default)
|
* `false` <-- (default)
|
||||||
* `true`
|
* `true`
|
||||||
* **vm_torrent_serv**
|
* **vm_torrent_serv**
|
||||||
Name of the torrent server.
|
Name of the torrent server.
|
||||||
Type: *String*
|
Type: *String*
|
||||||
Default: `vm_torrent_serv: "seedbox.{{ domain }}"`
|
Default: `vm_torrent_serv: "seedbox.{{ domain }}"`
|
||||||
* **vm_uploadseed_pwd**
|
* **vm_uploadseed_pwd**
|
||||||
Password for upload-seed. Used for image upload to torrent-server.
|
Password for upload-seed. Used for image upload to torrent-server.
|
||||||
Type: *String*
|
Type: *String*
|
||||||
Default: `secret = "token:topsecret"`
|
Default: `secret = "token:topsecret"`
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
46
doc/wlan.md
46
doc/wlan.md
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
Supported modes authenticating via WLAN:
|
Supported modes authenticating via WLAN:
|
||||||
|
|
||||||
* **WPA-Personal** (WPA-PSK)
|
* **WPA-Personal** (WPA-PSK)
|
||||||
authentication via preshared key (psk)
|
authentication via preshared key (psk)
|
||||||
* **WPA-Enterprise** (WPA-802.1x) with **EAP-TLS**
|
* **WPA-Enterprise** (WPA-802.1x) with **EAP-TLS**
|
||||||
authentication via client certificates (eap-tls)
|
authentication via client certificates (eap-tls)
|
||||||
|
|
||||||
Which method is used is determined by the variable `wlan`
|
Which method is used is determined by the variable `wlan`
|
||||||
|
@ -16,19 +16,19 @@ Choices:
|
||||||
|
|
||||||
## Common Configuration / Variables
|
## Common Configuration / Variables
|
||||||
|
|
||||||
* **wlan**
|
* **wlan**
|
||||||
Authentication mode
|
Authentication mode
|
||||||
Type: *String*
|
Type: *String*
|
||||||
Values:
|
Values:
|
||||||
* "none" <-- (default)
|
* "none" <-- (default)
|
||||||
* "psk" <-- set to use WPA-Personal
|
* "psk" <-- set to use WPA-Personal
|
||||||
* "eap-tls" <-- set to use WPA-Enterprise with EAP-TLS
|
* "eap-tls" <-- set to use WPA-Enterprise with EAP-TLS
|
||||||
* **wlan_ssid**
|
* **wlan_ssid**
|
||||||
SSID of used WLAN
|
SSID of used WLAN
|
||||||
Type: *String*
|
Type: *String*
|
||||||
* **wlan_enable_on_boot**
|
* **wlan_enable_on_boot**
|
||||||
If set to `true` wlan will be enabled on boot
|
If set to `true` wlan will be enabled on boot
|
||||||
Type: *Boolean*
|
Type: *Boolean*
|
||||||
Default: `true`
|
Default: `true`
|
||||||
|
|
||||||
## WPA-Personal
|
## WPA-Personal
|
||||||
|
@ -39,8 +39,8 @@ WLAN with configured WPA-Personal (WPA-PSK)
|
||||||
|
|
||||||
### Additional Configuration / Variables
|
### Additional Configuration / Variables
|
||||||
|
|
||||||
* **wlan_password**
|
* **wlan_password**
|
||||||
Password of WLAN. Only for `wlan: "psk"`
|
Password of WLAN. Only for `wlan: "psk"`
|
||||||
Type: *String*
|
Type: *String*
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
@ -80,7 +80,7 @@ laptop_teachers:
|
||||||
|
|
||||||
## WPA-Enterprise with EAP-TLS
|
## WPA-Enterprise with EAP-TLS
|
||||||
|
|
||||||
Authentication is based on individual certificates, which will be automaticaly created on the radius server.
|
Authentication is based on individual certificates, which will be automaticaly created on the radius server.
|
||||||
Every devices gets his own certificate. When creating new certificates, the old one will be revoked.
|
Every devices gets his own certificate. When creating new certificates, the old one will be revoked.
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
@ -90,9 +90,9 @@ Every devices gets his own certificate. When creating new certificates, the old
|
||||||
|
|
||||||
### Additional Configuration / Variables
|
### Additional Configuration / Variables
|
||||||
|
|
||||||
* **wlan_eap_ca**
|
* **wlan_eap_ca**
|
||||||
CA data for certs and crl
|
CA data for certs and crl
|
||||||
Type: *Dictionary of Strings*Keys:
|
Type: *Dictionary of Strings*Keys:
|
||||||
* C <-- default: "DE"
|
* C <-- default: "DE"
|
||||||
* ST <-- default: "Baden-Wuerttemberg"
|
* ST <-- default: "Baden-Wuerttemberg"
|
||||||
* L <-- default: "Reutlingen"
|
* L <-- default: "Reutlingen"
|
||||||
|
@ -100,15 +100,15 @@ Every devices gets his own certificate. When creating new certificates, the old
|
||||||
* emailAddress <-- default: "admin@example.com"
|
* emailAddress <-- default: "admin@example.com"
|
||||||
* CN <-- default: "Radius Certificate Authority"
|
* CN <-- default: "Radius Certificate Authority"
|
||||||
* password <-- default: "OtherVerySecurePassw0rd"
|
* password <-- default: "OtherVerySecurePassw0rd"
|
||||||
* **wlan_force_issue**
|
* **wlan_force_issue**
|
||||||
Force to issue a new certificateOnly for `wlan: "eap-tls"`
|
Force to issue a new certificateOnly for `wlan: "eap-tls"`
|
||||||
Type: *Bolean*
|
Type: *Bolean*
|
||||||
Values:
|
Values:
|
||||||
* true
|
* true
|
||||||
* false <-- (default)
|
* false <-- (default)
|
||||||
* **wlan_eap_ca_crl**
|
* **wlan_eap_ca_crl**
|
||||||
URL of the certificate revocation list
|
URL of the certificate revocation list
|
||||||
Type: *String*
|
Type: *String*
|
||||||
Default: "http://radius.{{ domain }}/radius-ca.crl"
|
Default: "http://radius.{{ domain }}/radius-ca.crl"
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
@ -184,7 +184,7 @@ laptop_staff:
|
||||||
|
|
||||||
The issue of certificates can be forced.
|
The issue of certificates can be forced.
|
||||||
|
|
||||||
Force issue of new certs for hosts in group laptop_teacher.
|
Force issue of new certs for hosts in group laptop_teacher.
|
||||||
If there is a valid certificate, the old one will be revoked and a new certificate will be issued.
|
If there is a valid certificate, the old one will be revoked and a new certificate will be issued.
|
||||||
|
|
||||||
ansible-playbook -i myinventory.yml -l laptop_teachers lmn-client.yml -e "wlan_force_issue=true"
|
ansible-playbook -i myinventory.yml -l laptop_teachers lmn-client.yml -e "wlan_force_issue=true"
|
||||||
|
|
Loading…
Add table
Reference in a new issue