Inux系统标准化
配置环境:4台Centos7.6版本的虚拟机,刚刚最小化安装完成,未作任何操作,分别是node1、node2、node3、node4
本文打算利用ansible工具对这四台虚拟机进行统一配置,步骤如下:
1、配置静态IP
2、更改主机名
3、每个节点向其他节点分发自己的公钥
4、配置ansible
5、关闭Iptables和SELINUX
6、调整时区、同步时间(ntpdate),使用crontab定时同步时间
7、安装常用软件包:wget、net-tools、
8、配置VIM(行数、自动缩进、语法高亮显示等)
1、配置静态IP
# vi /etc/sysconfig/network-scripts/ifcfg-ens33   //修改加红加粗 TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DNS1=8.8.8.8
GATEWAY=192.168.128.2
IPADDR=192.168.128.131
UUID="73f52f11-1a3a-4d44-94a9-f971ae9d1ff5"
DEVICE="ens33"
ONBOOT="yes" # systemctl restart network   //重启网络
这里编辑脚本
#!/bin/bash
#
sed -i 's/BOOTPROTO="dhcp"/BOOTPROTO="static"/g' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "DNS1=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-ens33
echo "GATEWAY=192.168.128.2" >> /etc/sysconfig/network-scripts/ifcfg-ens33
read -p "Please input the IPADDR you want: 192.168.128." IP
echo "IPADDR=192.168.128.$IP" >> /etc/sysconfig/network-scripts/ifcfg-ens33
 
read -p "The network was changed, do you want to restart network {yes|no}: " choice
if [ $choice = "yes" ]; then
    echo "Your network will restart"
    systemctl restart network
else
    exit
fi
其他三台主机分别配置,组主机IP分别为132、133、134
2、更改主机名
# vi /etc/hosts   //注意所有主机都要按此修改  
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.128.131 node1
192.168.128.132 node2
192.168.128.133 node3
192.168.128.134 node4
3、生成公钥,并分发到个节点,而可以让各节点之间通过主机名进行通信
# ssh-keygen -t rsa -P ''  //回车到底 Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:KksQbpC72SHZHCGHtKAKEU4H1TgrWwRGkjpZ2VRuLuA root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|O@**+.. |
|X===.o |
|*== o o |
|*X * o |
|=.E . . S |
| B o . . |
|o . o . |
| . o |
| . |
+----[SHA256]-----+ # ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.128.131   //把公钥分发到各节点,同时也要给自己一份
# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.128.132
# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.128.133
# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.128.134
# ssh 192.168.128.131 'date'; ssh 192.168.128.132 'date'; ssh 192.168.128.133 'date'; ssh 192.168.128.134 'date'    //进行测试 Thu Jan 24 14:07:09 CST 2019    //四台主机时间不一致,后续再配置
Fri Jan 25 03:07:08 CST 2019
Thu Jan 24 14:07:10 CST 2019
Thu Jan 24 14:11:49 CST 2019
4、配置ansible
# yum install ansible -y   
# vi /etc/ansible/hosts //定义主机组 # This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
# - Comments begin with the '#' character
# - Blank lines are ignored
# - Groups of hosts are delimited by [header] elements
# - You can enter hostnames or ip addresses
# - A hostname/ip can be a member of multiple groups
 
[3h]
192.168.128.132
192.168.128.133
192.168.128.134
 
[4h]
192.168.128.131
192.168.128.132
192.168.128.133
192.168.128.134 # ansible 4h -a 'date'  //测试ansible可用 192.168.128.131 | SUCCESS | rc=0 >>
Thu Jan 24 14:14:03 CST 2019
192.168.128.132 | SUCCESS | rc=0 >>
Fri Jan 25 03:14:02 CST 2019
192.168.128.133 | SUCCESS | rc=0 >>
Thu Jan 24 14:18:42 CST 2019
192.168.128.134 | SUCCESS | rc=0 >>
Thu Jan 24 14:14:03 CST 2019  

5、关闭Iptables和SELINUX

首先编写脚本

# vi seip.sh

chmod +x seip.sh

 #!/bin/bash
# echo "此段代码是判断和永久关闭SELinux"
sleep sefile=/etc/selinux/config if [ "`getenforce`" == "Enforcing" ]; then
echo "selinux is starting,the scripts will set up"
setenforce
else
if [ "`getenforce`" == "Permissive" ]; then
echo "selinux was down"
fi
fi if [ `grep 'SELINUX=enforcing' $sefile | wc -l` -eq ]; then
echo "selinux is start up with system boot,the scripts will set up."
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' $sefile
else
if [ `grep 'SELINUX=disabled' $sefile | wc -l` -eq ]; then
echo "selinux will not start up with your system boot."
fi
fi sleep
echo
echo "此段代码是判断和永久关闭firewalld"
sleep systemctl status firewalld &>/tmp/.txt
fifile=/tmp/.txt if [ `head -n $fifile | grep 'running' | wc -l` -eq ]; then
echo "firewalld is running,the script will set up."
systemctl stop firewalld
systemctl disable firewalld &>/dev/null
else
echo "firewalld is stopped"
fi 一键关闭SELinux和firewalld

使用ansible把此脚本分发到其他主机

# ansible 3h -m copy -a "src=/root/seip.sh dest=/root/seip.sh mode=0755"

# ansible all -m shell -a "/root/seip.sh"  //调用此脚本执行命令

6、调整时区、同步时间(ntpdate),使用crontab定时同步时间

# ansible all -m yum -a "name=ntpdate state=present"

# ansible all -m cron -a 'name="sync time from ntpserver" minute="*/10" job="/usr/sbin/ntpdate -u 133.100.11.8 &> /dev/null"'

# ssh 192.168.128.131 'date'; ssh 192.168.128.132 'date'; ssh 192.168.128.133 'date'; ssh 192.168.128.134 'date'

Thu Jan 24 16:40:47 CST 2019
Thu Jan 24 16:40:47 CST 2019
Thu Jan 24 16:40:47 CST 2019
Thu Jan 24 16:40:47 CST 2019

# ansible all -a 'timedatectl'   //可以全面查看一下

192.168.128.134 | SUCCESS | rc= >>
Local time: Thu -- :: CST
Universal time: Thu -- :: UTC
RTC time: Thu -- ::
Time zone: Asia/Shanghai (CST, +)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a 192.168.128.131 | SUCCESS | rc= >>
Local time: Thu -- :: CST
Universal time: Thu -- :: UTC
RTC time: Thu -- ::
Time zone: Asia/Shanghai (CST, +)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a 192.168.128.132 | SUCCESS | rc= >>
Local time: Thu -- :: CST
Universal time: Thu -- :: UTC
RTC time: Thu -- ::
Time zone: Asia/Shanghai (CST, +)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a 192.168.128.133 | SUCCESS | rc= >>
Local time: Thu -- :: CST
Universal time: Thu -- :: UTC
RTC time: Thu -- ::
Time zone: Asia/Shanghai (CST, +)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a

7、安装常用软件包:wget、net-tools、

# ansible all -m yum -a 'name=vim state=present'

# ansible all -m yum -a 'name=wget state=present'

# ansible all -m yum -a 'name=net-tools state=present'

8、配置VIM(行数、自动缩进、语法高亮显示等)

# vim /etc/vimrc   参考  https://blog.csdn.net/amoscykl/article/details/80616688

set nu
set syntax=on
set ai
set confirm
set tabstop=4
set hlsearch

Linux系统初始配置标准化的更多相关文章

  1. Linux 系统 网络配置

    Linux 系统 网络配置 配置Linux系统网络的方法有几种,这里介绍本人常用的两种. 第一种:使用命令ifconfig配置,具体用法:Ipconfig  ethx   x.x.x.x    net ...

  2. 虚拟机Linux系统下配置网络

    虚拟机上安装Redhat9.0后是没有网络的,而本来的Windows系统是可以上网的,此时想在Redhat上网就需要在Linux系统上配置网络,以下是笔者自己配置的一点心得. 1.电脑本机系统打开网络 ...

  3. 在linux系统中配置NVMe over FC

    在linux系统中配置NVMe over FC与配置NVMe over TCP类似,前5步操作请参考<在linux系统中配置NVMe over TCP>,网页连接如下: https://w ...

  4. Linux系统下配置环境变量

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...

  5. Linux系统下配置JDK环境变量

    刚申请了阿里云,平时很少接触Linux,特此记录一下Linux系统下安装JDK的步骤. 1.进入usr:cd /usr: 2.创建java文件夹:mkdir java: 3.将下载好的文件拷贝至jav ...

  6. Linux系统初始流程

    一.0S(内核的功能):平台类软件(通用软件) 进程管理:进程调度器(scheduler)维持一个任务结构(task_struct) 内存管理:如何使用线性地址空间,如何分段,如何分页,如何避免内存( ...

  7. Linux系统中配置jdk

    在Linux系统下安装jdk 1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8 ...

  8. 【Linux_Fedora_系统管理系列】_1_用户登录和系统初始配置

    发现一个问题,在FC14 的Firefox浏览器中,编辑和排版好的博文,在windows下用chrome或者猎豹浏览器打开后,排版就变得阅读 不是很容易里,而且经常不经意的断行.不知道园子的管理人员时 ...

  9. [Linux][VMWare] 学习笔记之安装Linux系统-网络配置

    最近开始折腾Linux,在本机装了个VMWare和Centos,装完之后虚拟机里面的OS可以上网,但是使用SecureCRT连接不上虚拟机,开始折腾这个网络. vmware安装好以后,会自动添加两张网 ...

随机推荐

  1. 12 postgresql数据库备份和恢复

    数据表结构备份与恢复 备份 1.找到postgres 安装目录,在找到bin文件夹,会看到一堆exe后缀的文件,用win+r 打开cmd,将pg_dump.exe 拖进cmd黑窗口中 2.基本语法:- ...

  2. eclipse中的快捷键的使用

  3. ES6(六) --- Symbol

    概述: ES5 中属性名都是字符串,这容易就造成命名的冲突,特别是在混入模式(mixin模式)下.为解决这个问题ES6 引入了Symbol, Symbol是一种新的基本数据类型,表示独一无二的值!   ...

  4. Java编程基础篇第二章

    关键字 概述:被Java语言赋予特定含义的单词. 特点:组成关键字的字母全部为小写字母. 标识符 概述:给类,接口,包,方法,常量起名字时的字符序列 组成规则:英文大小写字母,数字,$和— 命名规则. ...

  5. [Luogu P1886]滑动窗口--单调队列入门

    题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The array i ...

  6. Gradle依赖无法下载问题

    之前一直在使用maven构建框架,对gradle还比较陌生.最近碰到依赖一直无法下载的问题.我采用了以下步骤进行排查: 1. 查看gradle本地仓库是否有依赖(肯定没有) 2. 查看私服是否有依赖( ...

  7. JavaScript面向对象之get和set设置读写属性

    之前我们通过this和prototype申明的属性都是可读写的属性,如果想实现单独控制,就必须使用get和set存取期. 基本方法的 步骤一般包含两个步骤,1,使用var关键字定义一个私有属性作为中间 ...

  8. 图->最短路径->单源最短路径(迪杰斯特拉算法Dijkstra)

    文字描述 引言:如下图一个交通系统,从A城到B城,有些旅客可能关心途中中转次数最少的路线,有些旅客更关心的是节省交通费用,而对于司机,里程和速度则是更感兴趣的信息.上面这些问题,都可以转化为求图中,两 ...

  9. mac系统上mysql开启外网访问

    1.首先本地连到数据库在"mysql"库下把user表里User=root的那一行,把Hosts从"locahost"改成"%" 2.然后在 ...

  10. SybaseIQ上SQL基本使用

    锁定: sp_iqlocks 踢人: 存储过程查找: sybase central里面查询的命令(查找过滤器例如:%table%),Sybase Central/Sybase IQ 15/服务器/xx ...