Code

How a Systems Engineer Can Switch from Windows to macOS

How a Systems Engineer Can Switch from Windows to macOS

Learn: Start in DevOps: system administration for beginners

Learn more

Senior Systems Engineer at EPAM Systems with experience in developing infrastructure solutions and software build and deployment systems. Specializes in implementing DevOps practices to optimize software development and delivery processes. Actively participates in Sysadminka community events, sharing knowledge and experience in the field of system administration. His hobbies include mountain hiking, snowboarding, traveling, and photography. He organizes IT events, facilitating the exchange of experiences and ideas among technology professionals. Links play a key role in the structure and functionality of the internet. They provide connections between web pages and allow users to easily navigate between different resources. There are several types of links, including internal and external. Internal links point to pages within a single site, which helps improve navigation and user retention. External links point to resources outside the site and can increase the authority and trust of your content in the eyes of search engines. Link optimization is also important for SEO. Using keywords in link anchors and ensuring they are relevant to the content can significantly improve a site's visibility in search engines. It's also important to maintain link quality, avoiding links to unreliable or low-quality resources, as this can negatively impact your site's reputation. Proper use of links not only improves user experience but also contributes to effective website promotion in search engines. Developing a link strategy should be part of an overall approach to SEO and content marketing. I'm a systems engineer specializing in infrastructure. My workday starts at 11 a.m., as I live in the Urals and have been working remotely in Moscow for over four years. To complete my tasks, I only need a laptop and internet access. My primary tools include instant messaging (currently MS Teams), a browser, a terminal, and an integrated development environment (IDE) like IntelliJ or a text editor like Sublime Text. My experience allows me to effectively manage infrastructure projects and maintain high productivity while working remotely.

The console provides a variety of utilities for managing virtual machines, containers like Docker, and the overall infrastructure. I prefer to access these utilities through virtual machines, which I manage locally on my laptop using Vagrant. Vagrant is software from HashiCorp that simplifies the process of managing virtual machines and containers, providing flexibility and ease of use across various development environments.

I've been using a MacBook with macOS for over two and a half years. Previously, I worked with both Windows and Linux, which allowed me to gain experience with different operating systems. This transitional lifestyle and use of different devices is common for systems engineers who are looking to adapt to a variety of technologies and optimize their workflows.

You can use Apple's Migration Assistant to migrate from Windows to macOS, but you should first consider the process of transferring data, applications, and settings manually. Understanding the migration mechanism will help you better prepare for the process and avoid potential problems. Before using specialized software, it is useful to familiarize yourself with the basic steps necessary for a successful migration.

When transferring data from one device to another, there are several key aspects to consider. Software must be transferred, as well as access keys and passwords. You should also transfer all data, including photos, music, documents, and other files that are typically stored on the D drive in the Windows ecosystem. In addition, it is important to preserve your operating system settings. If you're a developer or systems engineer, be sure to also migrate your projects' code to preserve all your work. Organizing these processes properly will ensure smooth operation on your new device.

Software

When reinstalling the system, you'll need to install software manually. I don't have many: the Sublime Text code editor, the MS Teams messenger, and the Telegram and Slack I used previously. I also need a browser, a console terminal, a development IDE, and Lens, a tool for managing Kubernetes clusters.

I started using Lens when I switched to macOS, but it works great on any operating system. Simply install it on the new device, log in, and migrate your settings to continue working without any hassle. Lens provides a convenient and efficient interface for managing Kubernetes clusters, making it an indispensable tool for developers and system administrators.

I have developed not only graphical applications, but also console utilities that provide a convenient and efficient interface for users. These utilities are designed to perform various tasks on the command line, making them ideal for professionals and developers. They are optimized for quick operations and can be easily integrated into workflows.

  • Git;
  • various utility tools like mtr, traceroute, SSH, telnet, available on any OS;
  • utilities for infrastructure management: Ansible, Terraform, Terragrunt, kubectl;
  • console utility for managing Openshift clusters, AWC CLI;
  • Vagrant.

Until recently, using console utilities on Windows was not the most convenient. To improve my command-line experience, I installed Cygwin, a console interface that provides users with a more familiar environment for executing Unix-style commands. Cygwin allows you to run various utilities and scripts, significantly simplifying the console experience for Windows users. Current versions of Windows include a full-fledged PowerShell, which greatly simplifies working with the console. However, it still can't compare to *nix terminals and the utilities they offer. Most servers and server systems today run UNIX-like operating systems such as Linux. Personally, I prefer to work exclusively with Linux-based servers, as macOS, being a UNIX-like operating system, provides a more familiar experience and similar capabilities for server administration.

Passwords

I used a password manager to migrate my passwords, which made the process much easier. I used the Google Chrome password manager before, but now I prefer LastPass. One of the benefits of LastPass is that you don't have to manually transfer your data—just install the app on the new system and sign in to your account. Both LastPass and the Google Chrome password manager are available for all popular operating systems, including Windows and macOS. Using password managers not only provides convenience but also security when storing your passwords.

Keys

Users often transfer their SSH keys from one computer to another, using the same key for different devices. This can lead to a situation where the same SSH key is used for both personal and work projects. This approach is unfavorable from a security standpoint, since if the key is leaked, several projects will be at risk. It is recommended to create separate SSH keys for each project and device to minimize risks and increase the level of protection of your information.

To ensure long-term security, it is recommended to use virtual machines for work projects. By creating separate keys and configuring the necessary system utilities in a virtual environment, you minimize risks. For personal projects, you can use the main key from your computer, and for work, simply transfer the key from a specially created virtual machine. Although this may seem complicated at first, over time you will get used to this approach and appreciate its benefits.

Virtual Machines

Virtual machines significantly simplify the process of switching from one operating system to another. When moving a virtual machine from an older Windows laptop to a Mac, we preserve all settings and data within the virtual environment. This requires installing software or utilities for managing virtual machines, as well as copying the virtual machine files themselves. This allows users to easily adapt to the new system, minimizing the time spent setting up and transferring information.

Mac has a useful feature called Migration Assistant. It allows you to transfer files from your old laptop, including virtual machines, even if they are running Windows. This tool significantly simplifies the process of migrating data between devices and ensures the safety of important information.

Everything I mentioned about virtual machines applies to Macs with an Intel processor. If you have a Mac with an M1 chip, it is recommended to abandon virtual machines and transfer data manually. However, you can use Docker as an alternative to virtual machines, as there are Docker images compatible with the M1. This will allow you to work efficiently with containers and develop applications without the need for traditional virtual machines.

Repositories

Repositories are typically stored in cloud storage, with only a local copy stored on your computer. When switching to a new laptop, simply run the git clone command to clone your repositories. Git functions effectively on all operating systems, making it a universal tool for code version control.

If you're too lazy to go through all the migration steps, you can simply copy the local directories with your repositories manually or use Migration Assistant. Be sure to generate new keys, as this is the most secure and correct approach. Afterwards, add them to your repository management system, such as GitHub or GitLab. This will protect your code and allow you to work with the repositories correctly.

A modern infrastructure engineer works largely with code that describes the infrastructure and various pipelines. Manually configuring servers via SSH is becoming a rarity. Instead, engineers prefer to describe the infrastructure in code. This allows for easy copying and deployment of the necessary data by simply cloning repositories with configuration code. This approach significantly simplifies infrastructure management, increases its stability, and allows for faster response to changes.

Infrastructure as Code, containers, Kubernetes

Infrastructure as Code (IaC) covers not only production infrastructure but also testing processes. An effective IaC setup allows for the rapid creation of copies of the production infrastructure for testing. With the introduction of containers such as Docker and orchestration systems such as Kubernetes, this process has become significantly simplified and more manageable. Using these technologies promotes greater agility and speed of development, allowing teams to respond more quickly to changes and improve software quality.

Modern work trends show that being tied to physical workstations, specific devices, or operating systems is becoming less relevant. Today, access to a convenient browser and a set of console utilities is sufficient. Production applications can be efficiently run on a remote Kubernetes cluster, eliminating the need to transfer data and software from one computer to another. This provides flexibility and mobility, allowing users to work from anywhere without worrying about local restrictions. For local testing, a properly implemented infrastructure as code (IaC) using Kubernetes containers enables testing on any operating system. However, in this case, all code and software required to deploy the infrastructure must be transferred between the old and new computers. This requires attention and careful organization to avoid possible errors and data loss.

Read also:

  • What is DevOps and why is it needed?
  • "When I wanted to drop out of school, I remembered that I would have to get under the hood again"
  • TypeScript: how to work with it and how it differs from JavaScript

Getting Started in DevOps: System Administration for Beginners

You'll learn how to administer Linux, configure web servers, and maintain websites. You'll be able to start a career as a system administrator and gain the fundamental knowledge to advance in DevOps engineering.

Learn More