# coder-template ## Terminology - **[code-server](https://github.com/coder/code-server)** : Open Source Visual Studio Code + web browser remote access - **[coder](https://github.com/coder/coder)** : Development Environments (i.e. code-server, JupyterLab, JetBrains, and etc) management software - **API-server** : LMS can call the endpoints of this API-server to manage **coder**. ## What is this? You can use this template when you create a new lab and deploy it to **coder**. Lab users will get clients that include web IDE and software/tools (e.g. **[akamai CLI](https://github.com/akamai/cli)**). - **build** : sample **API-server** - **docker-compose.yaml** : installs **coder** and **API-server** ## Sample Workflow - [ ] **Alice** : Content Creator - [ ] **Bob** : Lab Administrator **1. Servers vs Clients** ``` Alice ->> Bob: I'd like to create a new lab for DevOps. Bob ->> Alice: Do you want servers or clients? Alice ->> Bob: I'm not sure. Learners will run python, terraform, and httpie. Bob ->> Alice: I suggest clients. Each learner can run codes or tools in his/her own isolated environment. ``` > Bob can create diverse types of servers (**Linux only!**) such as, web servers, application servers, and database servers. Sample server: https://origin-akashop.akamai-lab.com/ > > Bob can create one type of clients based on **Visual Studio Code**. Clients can be assigned to learners one to one or one to many. Sample client: https://training.akamai.com/ewp **2. Software** ``` Bob ->> Alice: Do you need any software or tools other than python, terraform, and httpie? ``` > Bob can install other softwares or tools such as **akamai cli**, based on the lab scenario. **3. Infrastructure** > Bob runs *docker-compose.yaml* file to create a default **coder** and **API-server**. ``` git clone https://gitea-ptl.akamai-lab.com/akamai/coder-template.git cd coder-template docker compose up -d ``` **4. code-server Template** > Bob builds a code-server template by customizing **main.tf**. > > **/samples/main.tf** file can be a good starting point if you don't want to use persistant volume. **5. Staging** > Bob deploys a code-server to kubernetes staging environment and Alice validates it iteratively until they finalize code-server template. > > Bob should customize API-server codes, if Alice wants to integrate **coder** with **LMS** (for example, click a button on LMS to create a new code-server and get its URL). **6. Production** > Bob deploys a code-server to kubernetes production environment. > > Alice validates the client by end-to-end test.