There are many different approaches and orders that can be taken to troubleshoot and fix the deployment. Below are the logical steps for diagnosing and solving each issue starting from the outermost level inwards.
Warning
Let the students know that they should only issue observational commands. The resources are restricted to read-only access but within the VM the students can technically do anything the TA can do. Let them know that it is critical to be aware of all changes to system state when troubleshooting.
To that end it is important they understand that:
Your primary goal is to provide the bare minimum guidance to the group. You should only guide them with hints if they are completely at a loss or way off track. There is ample time for them to troubleshoot and if they do not complete it in time everyone will see the solution during the instructor walkthrough.
Note
The temptation as a teacher is to help people who are struggling. But troubleshooting can only be learned through experience. In this context the best help you can provide is the minimal amount necessary to keep them on track.
You should keep in mind the following additional goals as the facilitator:
Warning
Only take a mutating action after the group has come to a consensus on what next action to take. Do not start typing it in or reveal it to them before they have considered it.
At a high level this approach can be used to facilitate discussion by engaging each student in the group and providing hints if they are stuck. There are two lists you will use to stay on track:
Tip
As the group begins troubleshooting listen to what they are discovering and cross out the diagnosis step for the related issue. By crossing out steps a student or the group have completed you always know what the next hint should be if necessary.
Starting at the top of the student list select one at a time going down the list and ask “What should we do next?”. Let them answer and entertain the group discussing what they are saying.
To keep the discussion moving forward you can ask the following questions:
Note
If they are still not progressing then let them struggle for 3-5 minutes. Students should feel the tension of not knowing which will promote them to get creative.
If there is still no progress then proceed to the next approach:
Warning
Give the students time to discuss and troubleshoot. Only use this approach if they are not making progress because they are:
Starting from the top of the list of issues select the next available diagnosis or solution step and use it as a hint. As each diagnosis or solution step is taken by the student / group make sure to cross it out.
Note
Each step has an action on the left and (the outcome to discuss in parenthesis)
az vm start
service ngin x status
(inactive (dead))sudo service nginx start
service nginx status
(active (running))service mysql status
(inactive (dead))service mysql start
service mysql status
(active (running))journalctl -fu coding-events-api
(Unhandled exception. System.UriFormatException: Invalid URI: The hostname could not be parsed.
)cat /opt/coding-events-api/appsettings.json
(notice the value for KeyVaultName
is blank)az keyvault list --query '[0].name'
or use the Azure Portal)sudo nano /opt/coding-events-api/appsettings.json
)KeyVaultName
you found in step onenano
editor with ctrl+o
and then hit enter to confirmnano
editor with ctrl+x
appsettings.json
file (sudo service coding-events-api restart
)journalctl -fu coding-events-api
(Unhandled exception. Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: Operation returned an invalid status code 'Forbidden'
)az keyvault -h
)az keyvault set-policy -h
, need objectId and Key Vault Name)$VmId = az vm show --query 'identity.principalId'
)$KvName = az keyvault list --query '[0].name'
)