Saturday, April 18, 2015

Installing Puppet 4 On RHEL/CentOS-7

Installing Puppet Open Source 4


Pre-Install Checks:

1. Decide on a Deployment Type:

Because Puppet can run in Mater/Agent(Server/Client) mode and also in stand-alone mode, So we need to decide which type of installation we are going to install. Accordingly we need to choose the packages.


2. Hardware Requirements:

I. The Puppet agent service has no particular hardware requirements and can run on nearly anything.

II. At minimum, Puppet master server should have two processor cores and at least 1 GB RAM.

III. To comfortably serve at least 1000 nodes, it should have 2-4 processor cores and at least 4 GB RAM.


3. Network Configuration.

I. In an agent/master deployment, we must prepare our network for Puppet’s traffic.

Firewall: 8140 port

Name Resolution: Every node must have a unique hostname.Forward and reverse DNS must both be configured correctly. Or we can create entries in /etc/hosts file.


4. Timekeeping on the Puppet Master Server:

The time must be set accurately on the Puppet master server that will be acting as the certificate authority. We Have to use NTP.



Installing the Packages:

Most Linux systems including CentOS, Redhat, Ubuntu, and Debian have packages. Still not available for Mac OS X package. For a complete list of supported platforms, view the system requirements page.


First of all we need to Install a Release Package to Enable Puppet Labs Package Repositories:

Installing on CentOS-7/RHEL-7

# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

Now we can install the puppetserver package:

# yum install puppetserver

Note: This will also install puppet-agent package on the machine.

If we want to edit the master machine settings, we can simply open the config file, which is on different location then the previous version.

/etc/puppetlabs/puppet/puppet.conf

Now we need to set Java Heap Size:

What is Java heap size ?
Java heap size is for hardware and for the amount of traffic the service will be handling.

# vim /etc/sysconfig/puppetserver 

JAVA_ARGS="-Xms1g -Xmx1g
It means we are going to set 1g memory for the puppet master service.

If we want to assign 512M memory then, we can set: -Xms512m -Xmx512m

Stating the PuppetServer Service:

# systemctl start puppetserver

or

# /opt/puppetlabs/bin/puppetserver foreground – -debug


Now we can verify the service is running or not:

# netstat -tupnl | grep 8140

<<==NEXT WILL CHECK THE DIFFERENCE BETWEEN PUPPET 3 AND 4 ==>>


Monday, April 13, 2015

Remote Docker Host Using Docker Client

Connecting remote docker host using docker client

In previous post (here) we have seen, by default docker is going to start within host using UNIX socket unix:///var/run/docer.sock. At this time we can only manage docker from the local machine, if we want to accept the connection requests from a remote client we need to start the docker daemon on remote port. So here we are going to setup the remote port.

First we need to stop the existing socket, we can stop it by using the following comamnd:

# systemctl stop docker

Some time socket not get closed by stopping the service, so we can remove the socket manually as well.

# rm -r /var/run/docker.sock


Now we can start it on a specific port by using following command:

# docker -H tcp://0.0.0.0:5050 -H unix:///var/run/docker.sock -d &


Now we can verify it using following command:

# netstat -tupnl | grep 5050


Let's try to access the docker port from the remote client.

# docker -H 10.10.1.186:5050 ps

Here 10.10.1.186 is my docker host ip.

Now also we can create the container using the remote port.

# docker -H 10.10.1.186:5050 run -it –name linux-container ubuntu


We can verify it now using the ls command, because this is the interactive container.

# ls

<=== Previous post about the Linux Container Installation and Configuration ===> 



Sunday, April 12, 2015

LINUX CONTAINERS

LINUX CONTAINERS

What is Linux Container: 
Linux containers have different approach than the Virtualization technology. Simply we can say this is OS level Virtualization, which means all containers run on top of one linux operating system. We can start containers on a hardware running machine or inside of running virtual machine. Each container run's as a fully isolated operating sysem.

In container virtualization rather than having an entire Operating System guest OS, containers isolate the guest but do not virtualize the hardware. For running containers one needs a patched kernel and user tools, the kernel provides process isolation and performs resource management. Thus all containers are running under the same kernel but they still have their own file system, processes, memory etc.

Linux based containers mainly involved with two concepts:

1. Namespaces
2. Cgroups ( Controll Groups)

There are total 6 types of Namespaces:
1. PID Name space.
2. Net Name space.
3. Ipc Name space
4. Mnt Name space
5. Uts Name space
6. User Name space.


Cgroups are already well known technology. We can find more detail about Cgroups here

There is an another important aspect of containers “Copy on write file system” This is also a well known technology in market:

Docker Architecture:

1. Docker Daemon
docker daemon is responsible for all the conainer operations. It runs on the docker host machine. We can't interact with this directly, all the instructions have to be sent through the docker.

2. Docker Client: It is the main interface to connect wit docker daemon. It can be install on the same machine or on the different machine.

3. Docker image: A Docker image is like a golden template. An image consists of OS (Ubuntu, centos etc.,) and applications installed on it.

4. Docker registry: That is a repository for docker images. It can be public or private. Public repository are maintained by docker is called docker hub. Users can upload and download images from there.

5. Docker Container: It is created on top of a docker image and it is completely isolated. Each container has it's own user space, Networking, and security settings associated with it.


INSTALLATION OF DOCKER

Docker can be installed on CentOS 7 without activating extra repository. Only we need to update the system:

# yum update -y

# yum install docker docker-registry

# systemctl start docker

# systemctl enable docker

# systemctl status docker


Now we can launch the container using following command:

# docker run ubuntu:14.04 /bin/echo ‘Welcome to the Container world’


1. docker run ==> is the command to run a container

2. ubuntu:14.04 ==> This is the image name. First it will find the image locally, if this is not there then pull it from docker hub account.

3. /bin/echo 'Welcome to the Container world' ==> This is the command, which will be executed inside if container.

Creating an interactive container

Previous command will create the container, but it was not interactive. To create the interactive container we can use following comamnd.

# docker run -it ubuntu:14.04 /bin/bash


1. -i ==> Make it interactive

2. -t ==> Open the terminal.

3. /bin/bash ==> Command which we want to execute inside the container.



Done...