This guide will walk you through preparing, formatting, and mounting two disks (/dev/vdb and /dev/vdc) on a Linux system. Additionally, it covers enabling and configuring the firewall, as well as using Ansible for automation.
Preparing and Formatting Disks
Step 1: Prepare Disk /dev/vdb
To prepare the disk /dev/vdb, you need to create a partition table and a primary partition. The following command uses fdisk to achieve this:
echo -e "o\nn\np\n1\n\n\nw" | sudo fdisk /dev/vdb
Explanation:
o: Create a new empty DOS partition table.n: Add a new partition.p: Primary partition.1: Partition number 1.- The three
\ncharacters are for default values for first sector, last sector, and the next prompt. w: Write the changes and exit.
Step 2: Prepare Disk /dev/vdc
Similarly, prepare the disk /dev/vdc using the same command with the disk name changed:
echo -e "o\nn\np\n1\n\n\nw" | sudo fdisk /dev/vdc
Step 3: Format Both Disks
Format both disks with the ext4 filesystem using mkfs.ext4:
sudo mkfs.ext4 /dev/vdb
sudo mkfs.ext4 /dev/vdc
Step 4: Create Directories
Create mount points for the disks:
sudo mkdir /data1
sudo mkdir /data2
Step 5: Update /etc/fstab
Add the following entries to /etc/fstab to ensure the disks are mounted at boot:
/dev/vdb /data1 ext4 defaults 0 0
/dev/vdc /data2 ext4 defaults 0 0
Step 6: Mount All Filesystems
Mount all filesystems defined in /etc/fstab:
sudo mount -a
Firewall Configuration
Step 1: Enable and Start Firewalld
Enable and start the firewalld service:
sudo systemctl enable firewalld
sudo systemctl start firewalld
Step 2: Check Active Zones
Check the active zones in the firewall:
sudo firewall-cmd --get-active-zones
Step 3: List Services in Zones
List services for the public and internal zones:
sudo firewall-cmd --permanent --zone="public" --list-services
sudo firewall-cmd --permanent --zone="internal" --list-services
Step 4: Configure Interfaces and Ports
Assign eth1 to the internal zone and configure firewall rules:
sudo ip addr
sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
sudo firewall-cmd --permanent --zone="internal" --add-source="192.168.100.0/24"
sudo firewall-cmd --permanent --zone="internal" --add-port=0-65535/tcp
sudo firewall-cmd --reload
Automation with Ansible
Step 1: Prepare Disks with Ansible
Use Ansible to create partitions on all servers:
ansible all-servers -i hosts -m parted -a "device=/dev/vdb number=1 state=present" --become
ansible all-servers -i hosts -m parted -a "device=/dev/vdc number=1 state=present" --become
Step 2: Format Disks with Ansible
Format the disks with ext4 filesystem:
ansible all-servers -i hosts -m filesystem -a "fstype=ext4 dev=/dev/vdb" --become
ansible all-servers -i hosts -m filesystem -a "fstype=ext4 dev=/dev/vdc" --become
Step 3: Mount Disks with Ansible
Mount the disks on all servers:
ansible all-servers -i hosts -m mount -a "fstype=ext4 src=/dev/vdb path=/data1 state=mounted" --become
ansible all-servers -i hosts -m mount -a "fstype=ext4 src=/dev/vdc path=/data2 state=mounted" --become
Step 4: Install Packages with Ansible
Install necessary packages:
ansible all-servers -i hosts -m yum -a "name=wget" --become
ansible all-servers -i hosts -m yum -a "name=telnet" --become
ansible all-servers -i hosts -m yum -a "name=java-1.8.0-openjdk-devel" --become
Step 5: Create Directories with Ansible
Create directories with specific permissions:
ansible all-servers -i hosts -m file -a "path=/data1/directory state=directory owner=admin group=admin mode=0755" --become
ansible all-servers -i hosts -m file -a "path=/data2/directory state=directory owner=admin group=admin mode=0755" --become
Step 6: Synchronize Data with Ansible
Synchronize data to the created directories:
ansible all-servers -i hosts -m synchronize -a "src=/home/training/ansible/data dest=/data1/directory" --become
Step 7: Update Bash Profile with Ansible
Add a line to the bash profile for setting the JAVA_HOME environment variable:
ansible all-servers -i hosts -m lineinfile -a "dest=/home/admin/.bash_profile state=present line='export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64'"
ansible all-servers -i hosts -m command -a "cat /home/admin/.bash_profile"
Ansible Command Line Arguments
-i: Specify inventory.-m: Specify module.-a: Module arguments.-u: User to connect to the remote host.--become: Run as root.--become-user: Perform tasks as a specific user.-f,--forks: Control the degree of parallelism.-h,--help: Display help.-C,--check: Predict changes that might occur.--syntax-check: Perform syntax check without executing.-v,--verbose: Enable verbose output.
This guide covers disk preparation, formatting, and mounting for /dev/vdb and /dev/vdc on a Linux system, enabling and configuring the firewall, and using Ansible for automation. Detailed explanations for each command and Ansible usage are provided for IT professionals.





