{"id":18601688,"url":"https://github.com/eficode/gitlab-practice","last_synced_at":"2026-01-23T06:45:11.647Z","repository":{"id":202613541,"uuid":"706586660","full_name":"eficode/gitlab-practice","owner":"eficode","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-04T13:30:58.000Z","size":4,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-16T17:44:34.202Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eficode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-18T08:39:30.000Z","updated_at":"2024-06-20T11:26:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"987fc663-58a0-45e1-9eb2-50c2db84c9da","html_url":"https://github.com/eficode/gitlab-practice","commit_stats":null,"previous_names":["eficode/gitlab-practice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eficode/gitlab-practice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eficode%2Fgitlab-practice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eficode%2Fgitlab-practice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eficode%2Fgitlab-practice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eficode%2Fgitlab-practice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eficode","download_url":"https://codeload.github.com/eficode/gitlab-practice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eficode%2Fgitlab-practice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28682260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T02:09:10.020Z","updated_at":"2026-01-23T06:45:11.621Z","avatar_url":"https://github.com/eficode.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Eficode Technical Task\n\n---\n\nThis task involves deploying infrastructure using automation tools, updating system software, and configuring access for end users. The focus is on automating the process, documenting your work, and adhering to best practices. This should be considered as a production environment, so ensure all configurations and implementations are robust and secure.\n\n## Prerequisites\n\nTo complete this task, you should be proficient in the following areas:\n\n- **Git and GitLab**: Knowledge of Git is essential for forking repositories, creating branches, and submitting pull requests. Familiarity with GitLab is required for configuring and updating the instance.\n\n- **SSH Key Management**: You should know how to generate an SSH key pair and understand the roles of the public and private keys.\n\n- **Infrastructure as Code (IaC)**: Basic knowledge of IaC tools like Terraform or Ansible is needed to understand and manage infrastructure configuration.\n\n- **System Administration**: Experience with Linux system administration, including connecting to remote servers using SSH, performing system updates, and software installation, is required.\n\n- **Load Balancing**: Understanding load balancing concepts and tools is necessary to configure user access.\n\n- **Security Best Practices**: Adherence to security best practices is critical, especially when working with SSH, sensitive data, and infrastructure management.\n\n## Task Overview\n\n### SSH Key Submission\n\nSubmit your SSH public key via [eficrypto](https://eficrypto.eficode.com) to your contact person.\n\n### Connectivity\n\nThe infrastructure includes two servers: Nginx and GitLab. The Nginx server has a public IP address, while the GitLab server does not. Both servers will accept the submitted SSH Key for management.\n\n### Software Updates\n\n1. Update the Nginx server from Ubuntu 20 to Ubuntu 22.\n2. Update the GitLab server to v17.0.2.\n\n### GitLab SSH Cloning\n\nConfigure the infrastructure to allow end users to clone Git repositories using SSH.\n\n### GitLab Runner Configuration\n\nEnable a GitLab runner on the appropriate machine. Add a job to build a container and store it in the GitLab Container Registry.\n\n### GitLab Pages Configuration\n\nEnable GitLab Pages on the appropriate machine. Add a job to build a static website and store it in GitLab Pages.\n\n### DNS\n\nYou will be given the necessary domain entries at the beginning of the task.\n\n### Documentation\n\n- Create a network and logical architecture diagram of the system you built.\n- Document the process thoroughly.\n- Automate the tasks to an appropriate level.\n\n### Evaluation Criteria\n\n- **Automation**: Utilize automation tools wherever possible to ensure consistency and repeatability.\n- **Documentation**: Provide clear and comprehensive documentation for all steps, configurations, and processes. This includes commenting on code and scripts used for automation.\n- **Security**: Adhere to security best practices throughout the task, particularly concerning SSH and sensitive data handling.\n- **Completeness**: Ensure that all required steps of the assignment are fully completed.\n\n### Additional Information\n\nKeep in mind that this assignment is designed to evaluate your suitability for a role as a DevOps Expert at Eficode. Your solution should be easy to understand and reusable. Avoid over-engineering; often, the simplest solution is the best.\n\n### Helpful Links\n\n- [Nginx Documentation](https://nginx.org/en/docs/)\n- [GitLab Documentation](https://docs.gitlab.com/)\n- [Ansible Documentation](https://docs.ansible.com/)\n- [Terraform Documentation](https://www.terraform.io/docs/)\n\n## Support\n\nIf you encounter any issues or have questions, please reach out to the designated support contact for this task.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feficode%2Fgitlab-practice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feficode%2Fgitlab-practice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feficode%2Fgitlab-practice/lists"}