As a software developer, I constantly work with a bunch of virtual environments used for testing.
As a software developer, I constantly work with a bunch of virtual environments used for testing.
As a contractor software developer, I am asked from time to time to perform an audit of LAMP projects. As project configuration is different, I use a so-called “umbrella repository environment”, which allows me to wrap such projects into a reusable vagrant environment without the need to amend an audited project’s codebase itself.
As a contractor - software developer, I remaster my work environment often, depending on the project requirements. Also, depending on the NDA, sometimes I work remotely on the boxes provided by my client. All in all, it is important for me to get a typical set of work tools quickly. So, let me share here how I get my new environment up and running while I am drinking coffee.
One day I got a task to implement a Vagrant-based scenario for my client. For quite a long time, I’ve been using free VMWare ESX-i hypervisor for my experiments, as it allows up to 4 virtual boxes to be run in parallel for my labs experience.
Short summary on a previous steps - we have created network infrastructure in VPC, created necessary IAM roles on AWS, and obtained access token for our docker hub to access private images. We have also created variables file where we have stored our findings.
In order to be ready to create our first cluster, we need to prepare some parameters in advance. Those are:
Let’s assume we want to deploy our solution to one of the docker friendly platforms available - Amazon ECS.
Most Dockerfiles start from a parent image. Application baseimage is a special Docker image that is configured for correct use within Docker containers and aware about your application requirements, expectations + set of additional tools.
Containers continue to be a buzz word this year too. A lot of teams try to implement microservices, dividing application into individual units: mini- website contains only presentation layer, REST API (sometimes several REST APIs) handling all business logic. Databases are hosted externally, in some situations running in containers too. Database — sometimes one, sometimes many (depending on business task)
Even today, approach to creating and managing containers is both manual and, in many ways, antiquated. Even for startups that use automation for their build processes, implementing containers often means maintaining complicated shell scripts to build the containers themselves. At the same moment, in classic server provisioning there are bunch of tools like Ansible, Chef, Puppet, Salt that efficiently take care on box provisioning. At the same moment, trying to apply those tools inside containers usually lead to size problem, as well as eliminating garbage upon use. That’s why for now still, if you want minimal image, you manage Dockerfile on your own.
Nowadays deployments have moved from bare-metal servers to virtual machines that are quicker to start, e.g. the one provided by Amazon, Digital Ocean, and OpenStack-based providers. Thus, developers are no longer required to go through manual administration steps when configuring an Ubuntu box.
Let’s Encrypt is probably one of the
most well-known authority supplying free green seal certificates. In
this article, I will share how I make use of letsencrypt
as part of
a server’s provisioning process.
A jump server https://en.wikipedia.org/wiki/Jump_server or jump host or jumpbox is a (special-purpose) computer on a network typically used to access devices in a separate security zone. The most common example is managing a host in a DMZ from trusted networks or computers. This could be accessing your home network from remote location. Access internet from your mobile device in public locations via VPN and so on.
For a long time, Amazon Web Services has been one of the most often used platforms to deploy and run new projects. For more complex projects, you usually start with mastering your network infrastructure. Fortunately, Amazon provides a definitive guide to most-used network topologies. You can review some at http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenarios.html.
Nowadays, continuous integration is an important part of the agile software development life-cycle. There is a number of tools on the market: Atlassian Bamboo, Jenkins, Jetbrains TeamCity.
Nowadays, you can get your own dedicated server up and running in seconds. Once you get it up, do you really need to spend several hours on configuring it for your application’s needs? Do you really want to repeat the same steps with each new server? In this article, I will give you an idea about automated installation with Ansible, a Simple IT Automation toolkit, and Ubuntu 14.04 LTS server as your box OS.
This article, based on my experience, demonstrates approach of organizing documentation in your project aiming following:
“Don’t Check Passwords into Source Control or Hard-Code Them in Your Application Operations staff will remove your eyes with a spoon if they catch you doing this. Don’t give them the pleasure.
Perhaps most developers are familiar with the git-flow model that makes the release process controlled. In this article, I will demonstrate one of approaches to introduce git-flow releasing into your project, and this git-flow can be integrated with the continuous integration tool of your choice. In this article, I will be using Atlassian Bamboo as an example.