SE4 Virtualisation TP Wasilewski
Déroulé du TP
Target: discover technologies and use a web server
1. Create VM
- Create a virtual machine on Proxmox (server is accessible through: this link) by cloning the template. The virtual machine must be named
team-XX
with XX being your team number assigned at the beginning of the tutorial. - Manual configure virtual machine's network to be persistent. Your VM's IP must be
10.99.XX.1/16
with the gateway being10.99.99.254
. - Update
/etc/hostname
to reflect the VM's name to the hostname - Update
/etc/hosts
with the two previous updates - Ensure it can ping google.
- Reboot the VM and validate it.
2. First web server
- Install nginx. (Hint: if it fails, do not forget to configure your VM's DNS).
- Setup a custom/cool static page.
3. First load balancer
- Install HAProxy 2.8 (Hint: Search "debian haproxy" on your favorite search engine)
- Redirect port 8888 to the previously installed nginx.
4. Docker time
- Install docker.
- Pull nginx image.
- Copy your custom static page into the container.
- Reconfigure HAProxy to use port 8889 onto the container.
Target: discover technologies and use a web server
5. First Docker image
- Create a Docker image based on
nginx:latest
that use your previously created static page. This image will be namedtXX-web
and will use semantic versioning. - Publish this new image on the common registry, located at
http://10.99.99.254:5000
. (Hint: you will have to update your Docker daemon configuration to allow this insecure registry).
6. Nomad installation
- Install nomad as a Debian package. See the official documentation
- Have Nomad running as client and server. Validate it through its interface which should be accessible through
http://10.99.XX.1:4646
. (Check it withcurl
)
7. Access Nomad UI from Zabeth
- Add a route on your Zabeth to view Nomad UI from it.
8. First Nomad deployment
- Create a nomad job definition with
nomad job init
command. - Adapt it to deploy the container you created on step 5.
9. Scale and load-balance
- Increase job definition count to run 3 container.
- Configure HAProxy to redirect port 8890 to those containers through service discovery.
Target: setup a distributed service + deploy from CI
10. Reconfigure nomad to use the common consul and common nomad server
11. Create git repo on Gitlab / Store dockerfile + static page
12. Update job definition in repo / setup CI / deploy new configuration to global nomad
13. Update global haproxy configuration to redirect to the the newly deployed web service
Target: build and deploy more complex services
14. Create new repo as the web repo to build and push a dockerized DHCP server
15. Create a new repo as the web repo to build and push a dockerized TFTP server with ipxe
16. Create a new repo to build and push on S3 a debootstrap image of latest debian version
Target: boot an OS from the network
17. Update web server to host an ipxe configuration file boot this new OS
18. Mount `/home/xxx` as rbd volume from Ceph
Now the new OS boots and use remote storage for users.
Extra parts for experimented SE4
Target: build a custom OS
19. Build a kernel (Bonus: less than 50 Mo + boot time < 2s)
20. Build an init that displays your team ID on the terminal (Bonus: pimped init banner)
21. Build an init that starts network interfaces
Target: create a logging service
22. Create a script / service that request user credentials, checks its validity against /etc/passwd, then mount dynamically user's home from rbd
23. Improve script and update initrd to have a window manager starting after logging
Notation des élèves
La notation du TP est décomposée en deux parties.
14 points sont liés à l’achèvement des différentes étapes décrites précédemment.
6 points sont liés à la performance. En effet; à la fin de chaque étape, il sera noté le classement des équipes.
Equipe \ Etape | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|