Windows Svr Std Eval 2022 konwersja do Windows Svr Std 2022

Jeżeli zainstalowaliśmy wersję Windows Svr Std Eval 2022 w celach testowych możemy przekonwertować ją do Windows Svr Std 2022. Unikniemy w ten sposób ponownej instalacji Windows Serwera

Wszystkie polecenia uruchamiamy w PowerShell z uprawnieniami admina.

Sprawdzamy wersję którą posiadamy:

DISM /online /Get-CurrentEdition

Sprawdzamy do jakich wersji możemy przekonwerować:

DISM /online /Get-TargetEditions

Konwerujemy:

DISM /online /Set-Edition:<target edition> /ProductKey:<product key> /AcceptEula

Po konwersji system poprosi o restart.

Na podstawie: https://learn.microsoft.com/en-us/windows-server/get-started/upgrade-conversion-options#convert-an-evaluation-version-to-a-retail-version

Kubernetes – rke2 upgrade

Najpierw aktualizujemy nody Master następnie workery. Aktualizujemy do najnowszej wersji pomocniczej (minor) następnie do najnowszej następnej wersji minor
1.27.7 -> 1.27.11 -> 1.28.11 -> 1.29.5
Dostępne wersje możemy sprawdzić na stronie https://github.com/rancher/rke2/releases

Automatyczna aktualizacja

Na podstawie https://docs.rke2.io/upgrades/automated_upgrade

Przygotowanie komponentów

Instalacja system-upgrade-controller. (Sprawdzić czy nie ma nowej wersji) https://github.com/rancher/system-upgrade-controller/releases

W url podmieniamy xxxxxxx na aktualny numer wersji np” v0.13.4

# kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/download/xxxxxxx/system-upgrade-controller.yaml

Przygotować plan aktualizacji osobno dla nodów master i worker

# cd /opt/kubernetes/auto-upgarde
# nano upgrade_plan.yaml

# Server plan
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
  name: server-plan
  namespace: system-upgrade
  labels:
    rke2-upgrade: server
spec:
  concurrency: 1
  nodeSelector:
    matchExpressions:
       - {key: rke2-upgrade, operator: Exists}
       - {key: rke2-upgrade, operator: NotIn, values: ["disabled", "false"]}
       # When using k8s version 1.19 or older, swap control-plane with master
       - {key: node-role.kubernetes.io/control-plane, operator: In, values: ["true"]}
  tolerations:
  - key: "CriticalAddonsOnly"
    operator: "Equal"
    value: "true"
    effect: "NoExecute"
  serviceAccountName: system-upgrade
  cordon: true
#  drain:
#    force: true
  upgrade:
    image: rancher/rke2-upgrade
  version: v1.27.7-rke2r2
---
# Agent plan
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
  name: agent-plan
  namespace: system-upgrade
  labels:
    rke2-upgrade: agent
spec:
  concurrency: 1
  nodeSelector:
    matchExpressions:
      - {key: rke2-upgrade, operator: Exists}
      - {key: rke2-upgrade, operator: NotIn, values: ["disabled", "false"]}
      # When using k8s version 1.19 or older, swap control-plane with master
      - {key: node-role.kubernetes.io/control-plane, operator: NotIn, values: ["true"]}
  prepare:
    args:
    - prepare
    - server-plan
    image: rancher/rke2-upgrade
  serviceAccountName: system-upgrade
  cordon: true
  drain:
    force: true
  upgrade:
    image: rancher/rke2-upgrade
  version: v1.27.7-rke2r2

Dodajemy etykiety do wszystkich nodów

# kubectl label node --all rke2-upgrade=true

Upgrade klastra

Sprawdzamy aktualną wersję

# kubectl get nodes

Zmieniamy w upgrade_plan.yaml version pilnując ścieżki upgrade i aplikujemy nowy plan

# kubectl apply -f upgrade_plan.yaml

Zaraz po aplikacji nowego plany rozpocznie sie upgrade klastra

Możemy sprawdzić działanie

# kubectl -n system-upgrade get plans -o yaml
# kubectl -n system-upgrade get jobs -o yaml
# kubectl get nodes

Mialem przypadek, że jeden z nodów nie chał się zaktualizować automatycznie. Aby rozwiązać problem skasowałem plan i wykonałem aktualizacje ręczną tego noda.

# kubectl delete -f upgrade_plan.yaml

Zdarzyło mi się, że po aktualizacji ręcznej system nadal cały czas próbuje go zaktualizować blokując noda. Aby usunąć problem odczytałem z innego noda label „plan.upgrade.cattle.io/agent-plan” i nadpisałem label w problematycznym nodzie.

# kubectl get node NODE-NAME-OK -o yaml
...
metadata:
  labels:
    plan.upgrade.cattle.io/agent-plan: xxxxxxxx
...

# kubectl label node NODE-NAME-PROBLEM plan.upgrade.cattle.io/server-plan=xxxxxxxx --overwrite

lub w przypadku workera

# kubectl label node NODE-NAME-PROBLEM plan.upgrade.cattle.io/agent-plan=xxxxxxxx --overwrite

# kubectl uncordon k8s-worker02

Ręczna aktualizacja

Na każdym nodzie MASTER uruchamiamy

# kubectl cordon NODE-NAME -  zapobiega uruchomieniu nowych podów
# kubectl drain --ignore-daemonsets NODE-NAME - migruje pody zwalniając noda
# curl -sfL https://get.rke2.io/ | INSTALL_RKE2_VERSION=v1.27.12+rke2r1 sh -
# systemctl restart rke2-server
# kubectl uncordon NODE-NAME

Na każdym workerze

# kubectl cordon NODE-NAME
# kubectl drain --ignore-daemonsets NODE-NAME
# curl -sfL https://get.rke2.io/ | INSTALL_RKE2_TYPE="agent" INSTALL_RKE2_VERSION=v1.27.12+rke2r1 sh -
# systemctl restart rke2-agent
# kubectl uncordon NODE-NAME

Samba – zarządzanie użytkownikami i polityką haseł

Sprawdzenie domyślnej polityki haseł

# samba-tool domain passwordsettings show

Ustawienie domyślnej polityki haseł

# samba-tool domain passwordsettings set --complexity=on --store-plaintext=off --history-length=12 --min-pwd-length=8 --min-pwd-age=0 --max-pwd-age=30 --account-lockout-duration=30 --account-lockout-threshold=10 --reset-account-lockout-after=15

Lista użytkowników

# samba-tool user list

Informacje o użytkowniku

# samba-tool user show <username>

Dziedziczenie w linuxie grupy i uprawnień z katalogu nadrzędnego

Aby w linuxie nowo utworzony plik lub folder dziedziczył przynależność do grupy z katalogu nadrzędnego wydajemy polecenie:

# chmod g+s /katalog_nadrzedny

lub na całym drzewie katalogów

# find /katalog_nadrzedny -type d -exec chmod g+s {} \;

Aby nowo utworzony plik lub katalog dziedziczył uprawnienia do grupy wydajemy polecenie

# setfacl -R -d -m g::rwx /katalog_nadrzedny

tmux – polecenia

Sesje

tmux ls – lista sesji
tmux a -t 0..9 – (attach to session terminal 0) podłączenie do sesji o podanym numerze
tmux kill-ses -t 0..9 – zamknięcie sesji o podanym numerze
ctrl + b d – (detach) odłączenie od sesji
ctrl + b s – lista sesji

Okna

ctrl + b c – dodanie nowego okna
ctrl + b n – przełączenie do następnego okna
ctrl + b p – przełączenie do poprzedniego okna
ctrl + b 0..9 – przełączenie do okna o podanym numerze
ctrl + b w – lista okien
ctrl + b & – zamknięcie okna

Szyby

ctrl + b % – dodanie do okna pionowej szyby
ctrl + b „ – dodanie do okna poziomej szyby
ctrl + d – zamknięcie aktywnej szyby . Jeżeli to ostatna szyba to całe okno lub sesja zostanie zamknięta.
ctrl + b ctrl + strzałki – zmiana wielkości aktywnej szyby
ctrl + b q – wyświetla numery szyb
ctrl + b q 0..9 – przełączenie do szyby numer
ctrl + b strzałki – przełączenie między szybami
ctrl + b x – zamknięcie aktualnej szyby

Copy mode

ctrl + b ] – Wejście w tryb Copy
ctrl + b PgUp – Wejście w tryb Copy i przesunięcie ekranu o jedną stronę do góry
strzałki, PgUp, PgDown – Przesunięcie ekranu
ctrl +b q – Wyjście z trybu Copy
ctrl + b : set mouse on – Włączenie obsługi myszy

Zapis zawartości szyby do pliku

ctrl + b : capture-pane -S -3000 – stworzenie bufora z ostanich 3000 linijek
ctrl + b : save-buffer buf.txt – zapisanie całego buffora w pliku buff.txt w katalogu domowym.

Jeżeli damy ctrl + b : i zaczniemy pisać komędę, to klawiszem tab mamy podpowiedzi

ctrl + b ? – pomoc

Linux – restart urządzenie pci

Linux udostępnia funkcję wyłączenia urządzenia pci na poziomie funkcji w postaci plików.

Identyfikujemy urządzenie:

# lspci -D | grep -i network
0000:01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
0000:01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
0000:09:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
0000:09:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

Teraz wyłączamy urządzenie o wybranym adresie np „01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network” :

# echo "1" > /sys/bus/pci/devices/0000\:01:00.0/remove

Po przerwie mini 1s robimy rescan aby włączyć:

# echo "1" > /sys/bus/pci/rescan

Drugą metodą jest wykonanie resetu

# echo "1" > /sys/bus/pci/devices/0000\:01:00.0/reset

Truenas Scale – Własne CA

Aby Trunas Scale Bluefin używał własnych CA, które wykorzystujemy do np Inspekcji SSL musimy wgrać nasz certyfikat CA w GUI: Credentials > Certificates > Certificate > Authorities > Add > Import CA oraz linkować go do katalogu /etc/ssl/certs. W System Settings > Shell wykonujemy:

ln -s /etc/certificates/CA/MyCA.crt /etc/ssl/certs/myCA.crt

Dodatkowo jeżeli moduł Apps ma pobierać image z naszych prywatnych repo:

service docker restart

Zabbix – Monitorowanie Proxmoxa

Aby monitorować Proxmoxa instalujemy na każdym nodzie Agenta Zabbix i dodajemy go do Zabbixa wskazując Templates „Linux by Zabbix agent”, „Proxmox VE by HTTP”.

Teraz w Proxmoxie dodajemy użytkownika zabbix oraz token.

Datacenter > Permissions > User > Add
Wypełniamy:

  • User name: zabbix
  • Realm: Linux PAM
  • Expire: never
  • Enabled: checked
  • First Name: dowolny
  • Last Name: dowolny

Datacenter > Permissions > Api Tokens > Add
Wypełniamy:

  • User: Wybieramy utworzonego
  • Token ID: Dowolny (np: ZabbixMonito01)
  • Privilege separation: checked

Po kliknięciu Add zapisujemy sobie Token ID oraz Secret, gdyż później Secret nie będzie już dostępny.

W Proxmoxie dodajemy uprawnienia do użytkownika i tokena
Datacenter > Permissions > Add > User Permission
Wypełniamy:

  • Path: /
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: no checked
  • Path: /nodes
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: checked
  • Path: /vms
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: checked
  • Path: /storage
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: checked

Datacenter > Permissions > Add > Api Token Permission

Dla tokena ustawiamy identyczne uprawnienia jak dla użytkownika

Wracamy do konfiguracji Zabbixa aby ustawić wygenerowany Token

Data collection > Hosts > <Proxmox name> > Macros

  • {$PVE.TOKEN.ID} value: Token ID
  • {$PVE.TOKEN.SECRET} value: Secret

Linux – Network Manager – dodanie tls-cipher do konfiguracji VPN

Aplet GUI do Network Managere nie obsługuje właściwości tls-cipher. Dodamy go narzędziem lini poleceń nmcli.

Wyszukujemy interesującą nas nazwę profilu vpn.

$ nmcli connection show

. . . . 
POLACZENIE1            xxxxx-xxxxxx  vpn       
. . . .

Dodajemy tls-cipher.

$ nmcli connection edit POLACZENIE1

nmcli> set vpn.data tls-cipher = DEFAULT:@SECLEVEL=0
nmcli> save
nmcli> quit

Jeżeli później będziemy edytować ten profil za pomocą narzędzia w GUI to musimy powtórzyć tą operację, gdyż właściwość ta zostanie usunięta.

Fortigate – włączenie trybu proxy w GUI

Gdy w gui w politykach firewall nie widzimy przełącznika Inspection Mode Flow-based / Proxy-based musimy w cli wykonać polecenie:

config system settings
set gui-proxy-inspection enable
end

gui-proxy-inspection należy również ustawić aby aktywować niektóre veature np: Web Application Firewall