Quick HOWTO: Reset Jenkins Admin Password

To reset the jenkins admin password, You can simply disable the security in the config.xml file.

1. If your jenkins is running on the Linux OS, edit the below file.

vi /var/lib/jenkins/config.xml file.

2. Search for the word <useSecurity>true</useSecurity>
and change the word true to false

3. Restart the Jenkins server.
service jenkins restart

4. Now go to Jenkins portal and set the password again.

5. Enable the security again by changing settings to <useSecurity>true</useSecurity> and restart the Jenkins again.


If your jenkins is running on Windows OS, config.xml file located in C:\Program Files (x86)\Jenkis\ folder.

Quick HOWTO: dracut fails in Linux

Issue:  dracut fails when you trying to create initramfs image file.

[root@linux_server1 boot]# dracut -f /boot/initramfs-2.6.39-400.298.2.el6uek.x86_64.img 2.6.39-400.298.2
E: Failed to install /etc/system-fips

[root@linux_server1 boot]# ls -l /boot/initramfs-2.6.39-400.298.2.el6uek.x86_64.img

ls: cannot access /boot/initramfs-2.6.39-400.298.2.el6uek.x86_64.img: No such file or directory

Fix / Solution: Touch /etc/system-fips and try again.

[root@linux_server1 boot]# touch /etc/system-fips
[root@linux_server1 boot]# dracut -f /boot/initramfs-2.6.39-400.298.2.el6uek.x86_64.img 2.6.39-400.298.2.el6uek.x86_64
[root@linux_server1 boot]# ls -l /boot/initramfs-2.6.39-400.298.2.el6uek.x86_64.img
-rw------- 1 root root 31035863 May 21 03:06 /boot/initramfs-2.6.39-400.298.2.el6uek.x86_64.img 

Hope this helps..!

Quick HOWTO: Run SSH sessions in Parallel

 You often used "for loop" in shell script to gather an information from large number of your Linux / Unix infrastructure servers. However if your server count is more, it may take lot of time to finish the task. Do you think it will be good if the ssh sessions to remote servers run in parallel? Since the modern day servers having multi-core CPU's we can utilize the real parallel and multi processing of them. 

xargs is your friend here to accomplish your this.

Here is the example to run the SSH sessions in parallel:

xrags -a -n1 -P50 -I{} sh -c "ssh -q {} 'df -Ph /var' "

In this example,

-a --  Takes the input from the file instead of STDIN

-P -- number to processes to execute in parallel. In our example we are starting 50 processes in parallel.

-I -- Used to specify a name to the variable passing to the command we are executing. In our example, we have used {}. For example, You can specify like -I"server" instead of I{}.

Another example:

xrags -a -n1 -P50 -I"server" sh -c "scp server:/tmp/"

One disadvantage in xargs is the output will not be in a order. you need to make your script writes to a log with clear host identification to gather a report from multiple hosts.

Not only SSH and SCP, you can run any process / task which you want to start and run in parallel. Alternatively you can download and use "parallel" tool which is slightly better than xargs.

Quick HOWTO: View contents of RPM without installing it

In Linux, You may wonder what are the files inside a rpm package and you may want to check them before installing it.

You can do this with the below rpm commands:

If the rpm file available locally:
[root@linux_server1 ~]# rpm -qlp telnet-0.17-48.el6.x86_64.rpm
[root@linux_server1 ~]#

[root@linux_server1 ~]# rpm -q -filesbypkg -p numactl-devel-2.0.9-2.el6.x86_64.rpm
numactl-devel             /usr/include/numa.h
numactl-devel             /usr/include/numacompat1.h
numactl-devel             /usr/include/numaif.h
numactl-devel             /usr/lib64/libnuma.a
numactl-devel             /usr/lib64/libnuma.so
[root@linux_server1 ~]#

If you want to check the contents of a rpm located in a remote repository:
[root@linux_server1 ~]# repoquery --list telnet
[root@linux_server1 ~]#

If you want to check the pre installation and post installation scripts which runs while you installing a rpm package.
[root@linux_server1 ~]# rpm -qp --scripts sysstat-9.0.4-33.el6.x86_64.rpm
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add sysstat
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ]; then
  # Remove sa logs if removing sysstat completely
  rm -f /var/log/sa/*
  # Remove service
  /sbin/chkconfig --del sysstat
[root@linux_server1 ~]#

If the rpm is already installed, you can use same commands without passing the arguement "-p".

rpm -ql sysstat-9.0.4-33.el6.x86_64
rpm -q --scripts sysstat-9.0.4-33.el6.x86_64

If you want to extract the rpm contents without installing it.
root@linux_server1~]# rpm2cpio telnet-0.17-48.el6.x86_64.rpm | cpio -idmv
220 blocks

Quick HOWTO: Pacemaker Cluster on Redhat Linux - Enable Web GUI Interface

You will notice that your PCS web interface is not working after your pacemaker cluster installation. Because it is not enabled by default. Here is the steps to enable it.

cd /usr/lib/pcsd
vi pcsd.rb
search for "DISABLE_GUI=true"
edit that line to "DISABLE_GUI=false"
service pcsd restart

Now you will be able to access the pacemaker web interface as below:


Quick HOWTO: Change I/O Scheduler in Linux

I/O schedulers in Linux

noop - It can be helpful for devices that do I/O scheduling themselves, as intelligent storage, or devices that do not depend on mechanical movement
cfq - A fairness-oriented scheduler. It tries to maintain system-wide fairness of I/O bandwidth
deadline - A latency-oriented I/O scheduler. Each I/O request has got a deadline assigned.
as (anticipatory) - conceptually similar to deadline, but with more heuristics to improve performance (It may decrease performance in some cases)

Here is the procedure to change the default I/O scheduler in Linux.

Dynamically setting the default I/O scheduler to a Particular Disk:

echo "scheduler_name" > /sys/block/<Disk_Name>/queue/scheduler

To set I/O scheduler to all the Disk drives on the Linux server:

for disk in `ls -1 /sys/block |egrep '^emc|^sd'`;
echo "deadline" > /sys/block/$disk/queue/scheduler;

To verify the settings:
for dsk in `ls -1 /sys/block |egrep '^emc|^sd'`;
echo -e "$i\t\c";
cat /sys/block/${dsk}/queue/scheduler;
Permanently set the default I/O scheduler in Linux via Grub menu:

Implement permanent setting by adding “elevator=noop” to the default stanza in the /boot/grub/menu.lst file

1. Create backup 
cp -p /boot/grub/menu.lst /boot/grub/menu.lst-backup
2. Update menu.lst 

kernel /vmlinuz- root=/dev/sysvg/root splash=silent splash=off showopts elevator=noop