You are on page 1of 27

What is a Git Repository?

A Git repository tracks and saves the history of all changes made to the files in a Git
project. It saves this data in a directory called .git, also known as the repository folder.

Git uses a version control system to track all changes made to the project and save them
in the repository. Users can then delete or copy existing repositories or create new ones
for ongoing projects.

Repository can contain folder and files images and audio, video, datasets so on ..
anything the project needs.
Types of Git Repository

There are two types of Git repositories, based on user permissions:

Bare Repositories

Software development teams use bare repositories to share changes made by team members.
Individual users aren't allowed to modify or create new versions of the repository.

Non-Bare Repositories

With non-bare repositories, users can modify the existing repository and create new versions.
By default, the cloning process creates a non-bare repository.
Infrastructure as Code (IaC) is the process of managing your IT infrastructure using
automatic scripts instead of manually.

Infrastructure as code is the process of managing and provisioning computer data center
resources through machine-readable definition files, rather than physical hardware
configuration or interactive configuration tools.

One of the crucial elements of the DevOps software development approach, it allows you to
fully automate deployment and configuration, thus making continuous delivery possible.

Infrastructure on the whole is a combination of components required to support the operations


of your application. It consists of hardware such as servers, data centers, desktop computers and
software including operating systems, web servers, etc.
1. The team writes infrastructure configurations in a required programming
language.
2. The code files are sent to a code repository.
3. An IaC tool runs the code and performs the required activities.
Enabling Infrastructure as Code (IaC) Uses :
1. Version Control: Infrastructure definitions can be version controlled, which provides traceability
and accountability for infrastructure changes. Version control systems enable you to see who made
the changes, when they made them, and what changes were made.
2. Reusability: IaC enables organizations to reuse code for infrastructure components like servers,
databases, and networks. This helps to reduce duplication of effort and increases efficiency.
3. Consistency: Infrastructure definitions can be tested and validated before deployment, which
ensures consistency in the environment. This helps to prevent issues caused by manual
configuration errors.
Choosing an IaC tool
In a declarative approach, you only need to define the desired final condition of the infrastructure without going into detail on
how it should be achieved, allowing the platform to handle it by itself. It’s the dominant method because it requires less
knowledge on the user’s part and it’s idempotent – it always produces the same result. This is done via a declarative language
such as SQL, YAML, or JSON.

In an imperative (procedural) approach, you must define specific step-by-step commands to achieve the required
configuration. Here, you can be very detailed and create complex configurations, having more control over the task. But you do
need a high level of skill to write those commands with languages like Java, Ruby, or Python.

Provisioning is the process of setting up an IT infrastructure: virtual machines, databases, access to resources, and making
them available to the users. The configuration job is then done by a different tool.

Configuration management comes after provisioning and it means installing software, configuring servers’ desired state and
maintaining them.

A mutable infrastructure can be changed to fit business needs. You can easily introduce updates to the existing version, apply
patches, and scale. While this may be handy, each upgrade compromises your operation security. Besides, this may negate one
of IoC purposes - consistency.

An immutable infrastructure can’t be changed once deployed. If you want to make alterations to it, you have to replace it with a
new version. Since versions are independent, you can easily roll back, track mistakes, and enjoy consistency and predictability.

Immutable infrastructures are considered a preferred method since it actually delivers on all the benefits of IaC.

You might also like