V tomto dokumentu jsou popsány problémy, ke kterým postupně docházelo v průběhu nasazování platformy OpenStack a posléze platformy KYPO.
Součástí každého problému je také návod, jakým způsobem problému předcházet či jak byl problém vyřešen.


Platforma OpenStack
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1) Spuštění skriptu create-base.sh 
- Problém: "Not valid host was found".
- Příčina: V tomto případě nebyly dostatečné přidělené zdroje virtuální stanice.
- Jak problému předcházet: Při vytváření tzv. flavors je potřeba přiřadit instancím kypo-head a kypo-proxy-jump zdroje (CPU, RAM, disk), které nesmí být vyšší než zdroje virtuální stanice.
- Poznámka: Problém se také objevil později při alokaci sandboxu, jelikož všechny zdroje byly vyčerpány právě instancemi kypo-head a kypo-proxy-jump, zdroje byly poté navýšeny.

2) Spuštění skriptů ./ansible-check-base.sh a ./ansible-user-access.sh 
- Problém: Nelze ověřit dostupnost stanic, stanice nejsou dostupné.
- Příčina: U provider rozhraní nebyl zapnut promiskuitní mód, provider rozhraní bylo ve stavu DOWN.
- Řešení: Byl zapnut promiskuitní mód a provider rozhraní bylo uvedeno do stavu UP pomocí příkazů:  
										    		   sudo apt install net-tools         
									            		   sudo ifconfig ens192 up

Platforma KYPO
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3) Playbook "ansible-playbook -i inventory.ini provisioning/docker.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml" 
- Problém: TASK [install python3 package docker-compose].
- Příčina: Špatná verze nástroje pip.
- Řešení: Bylo provedeno manuální přihlášení na stanici kypo-head pomocí SSH a byl nainstalován nástroj pipenv, kdy při jeho instalaci byla opravena verze nástroje pip.
- Postup: 
	  ssh -i ../kypo-crp-openstack-base/admin_kypo-base-key.key ubuntu@172.24.1.19
	  sudo pip3 install pipenv
          znovuspuštění výše uvedeného playbooku

4) Playbook "ansible-playbook -i inventory.ini provisioning-oidc/oidc.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml" 
- Problém: TASK Ensure ou for users => FAILED - RETRYING.
- Příčina: Tento problém způsoboval nízký počet zdrojů (především paměť RAM), který byl stanici kypo-head přidělen (byly přiděleny 2 GB).
- Řešení: Po konzultaci s podporou KYPO byla RAM navýšena na 16 GB.
- Jak problému předcházet: Doporučené požadavky na stanici kypo-head jsou 16 GB RAM a 4 CPU.

5) Playbook "ansible-playbook -i inventory.ini provisioning-oidc/oidc.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml" 
- Problém: Jeden z těchto 3 uvedených tasků skončí ve stavu FAILED.
	- Fetch OIDC superadmin client data
	- Obtain Superadmin Bearer Access Token
	- Ensure ou for users
- Příčina: Zdroj problémů nebyl v tomto případě identifikován, problém se objevil zhruba ve 3/10 případů.
- Řešení: Před spuštěním tohoto playbooku bylo potřeba vytvořit snapshot virtuálního stroje, na kterém bylo nasazení prováděno. V případě problému byl virtuální stroj obnoven a playbook znovu spuštěn.

6) Playbook "ansible-playbook -i inventory.ini provisioning/playbook.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml --extra-vars=@oidc-local-provider.yml"
- Problém: TASK [kypo-crp-head : get certificate info].
- Příčina: Špatná verze knihovny cryptography.
- Řešení: Bylo provedeno manuální přihlášení na stanici kypo-head pomocí SSH, stávající verze knihovny cryptography byla odinstalována a byla nainstalována verze 3.4.8.
- Postup: 
	  ssh -i ../kypo-crp-openstack-base/admin_kypo-base-key.key ubuntu@172.24.1.19
	  sudo pip uninstall cryptography
	  sudo pip install cryptography==3.4.8
	  znovuspuštění výše uvedeného playbooku

7) Playbook "ansible-playbook -i inventory.ini provisioning/playbook.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml --extra-vars=@oidc-local-provider.yml"
- Problém: Uvíznutí (freeze) TASKu [wait-for-container : wait for docker contaniner services to start] na déle než 5 minut.
- Řešení: Ukončení tasku pomocí CTRL+C, znovuspuštění výše uvedeného playbooku.

8) Playbook "ansible-playbook -i inventory.ini provisioning/playbook.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml --extra-vars=@oidc-local-provider.yml"
- Problém: TASK [kypo-crp-head : check if kypo roles exists] - nevytvoření KYPO-SANDBOX-SERVICE rolí (role se nestihly vytvořit).
- Příčina: Nedostatečný počet přidělených zdrojů instanci kypo-head.
- Řešení: Bylo potřeba přiřadit instanci kypo-head více zdrojů (4 CPU a 16 GB RAM).

9) Playbook "ansible-playbook -i inventory.ini provisioning/playbook.yml --extra-vars=@extra-vars.yml --extra-vars=@secrets.yml --extra-vars=@oidc-local-provider.yml"
- Problém: TASK [kypo-crp-head : check if kypo roles exists] - nevytvoření KYPO-SANDBOX-SERVICE rolí (nedošlo k nastartování docker kontejneru sandbox-service).
- Příčina: Špatné zadání DNS serverů v souboru extra-vars.yml. (špatné zadání: kypo_crp_dns: 1.1.1.1)
- Řešení: Musí být zadáno přesně v tomto formátu
kypo_crp_dns:
    - 1.1.1.1
    - 1.0.0.1

10) Přihlášení na KYPO Portál 
- Problém: Authenticating To Oidc. Unknown error. Please check your internet connection or report the issue to developers.
- Řešení: Bylo potřeba restartovat docker kontejner kypo-nginx na instanci kypo-head.
- Postup: 
	  ssh -i ../kypo-crp-openstack-base/admin_kypo-base-key.key ubuntu@172.24.1.19
	  sudo su
          docker restart kypo-nginx

11) Přihlášení na KYPO Portál
- Problém: "Full authentication is required to access this resource".
- Příčina: Generování vlastního ssl certifikátu. 
  Pro generování byl využit příkaz z https://docs.crp.kypo.muni.cz/installation-guide/kypo-crp-deployment/.
	openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out kypo.crt -keyout kypo.key -subj "/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=x.x.x.x" 
		kde CN = IP adresa KYPO Head.
  Bylo otestováno, že certifikát vygenerovaný pomocí tohoto příkazu byl funkční do verze deploymentu 21.06 včetně, od této verze způsoboval výše zmíněný problém.
- Řešení: Po konzultaci s KYPO podporou byl využit nový příkaz:
	openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out kypo.crt -keyout kypo.key -subj "/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=x.x.x.x" -addext "subjectAltName = DNS:x.x.x.x, IP:x.x.x.x"
		kde CN, DNS a IP = IP adresa KYPO Head.
  Tento příkaz problém vyřešil a následně také nahradil starý příkaz na adrese https://docs.crp.kypo.muni.cz/installation-guide/kypo-crp-deployment/.

12) Alokace sandboxu - OpenStack Stage
- Problém: Nelze se připojit k OpenStacku. (The server didn't respond in time.)
- Řešení: Bylo potřeba restartovat všechny OpenStack komponenty (docker kontejnery).
- Postup: 
	  sudo su
	  docker restart $(docker ps -q)

13) Alokace sandboxu - Networking Ansible Stage
- Problém: Nelze se připojit k instanci kypo-proxy-jump.
- Příčina: Permission denied (publickey).
  Do souboru secrets.yml byl pomocí base64 zakódován klíč admin_kypo-user-key.key, což je také uvedeno v návodu KYPO CRP Deployment and Configuration na YouTube kanálu CERIT MUNI.
- Řešení: Do souboru secrets.yml bylo potřeba pomocí base64 zakódovat klíč admin_kypo-base-key.key.     

14) Alokace sandboxu - Networking Ansible Stage
- Problém: fatal: [man]: FAILED! => {"changed": false, "cmd": "apt-get install --no-install-recommends python-apt -y -q", "msg": "E: Failed to fetch...}.
- Příčina: V tomto případě nefungoval DNS resolving. Problém způsobovala defaultní hodnota DNS serverů v souboru extra-vars.yml (špatné zadání: kypo_crp_dns: []).
- Řešení:
kypo_crp_dns:
    - 1.1.1.1
    - 1.0.0.1


 
	