1.背景日常服务器申请完毕后需要各种系统指标初始化,实施思路(编写系统初始化脚本,ansible 批量拷贝到目标机器执行); 初始化脚本如下;
#!/bin/bash function install_pkg(){ yum -y install lrzsz zip nuzip net-tools g++ gcc gcc-c++ epel-release lsof make cmake telnet ntp wget git tree nload nmap iftop sysstat iotop bind-utils fuse fuse-libs } function init_disk(){ if [ -b /dev/sdb ] then mkfs.xfs /dev/vdb mount /dev/vdb /devops chmod 777 /devops -R echo "/dev/sdb /devops xfs defaults 0 0 " >> /etc/fstab fi } function add_swap(){ dd if=/dev/zero of=/c/.swap bs=1G count=8 mkswap /devops/.swap swapon /devops/.swap echo "/devops/.swap swap swap defaults 0 0" >> /etc/fstab } function update_time(){ echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >/var/spool/cron/root } function kernel_optimization(){ sysctl_file= "/etc/sysctl.conf" touch $sysctl_file if [ -f $ sysctl_file ];then cat >> $sysctl_file <<EOF fs.nr_open =3000000 fs.file-max =3000000 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 655360 kernel.msgmax = 655360 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 vm.max_map_count = 262144 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 1048576 net.ipv4.tcp_max_tw_buckets = 50000 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_orphan_retries = 3 net.ipv4.tcp_reordering = 5 net.ipv4.tcp_retrans_collapse = 0 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_sack = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 EOF else echo "sysctl.conf 文件不存在 " >> /var/log/init.log fi } function f_limit(){ cp /etc/security/limits.conf /etc/security/limits.conf.bak cat > /etc/security/limits.conf <<EOF * soft nproc 3000000 * soft nproc 3000000 * hard nproc 3000000 * soft nofile 3000000 * hard nofile 3000000 * soft memlock unlimited * hard memlock unlimited EOF } function add_keys(){ curl http://ops.chehejia.com:9090/scripts/add_jenkins.sh | sh curl http://ops.chehejia.com:9090/scripts/add_ops.sh | sh curl http://ops.chehejia.com:9090/scripts/add_work.sh | sh } function project_dir(){ mkdir -p {/devops/data/log/,/devops/app/,/devops/build,/devops/app/download,/devops/app/module,/devops/data/cache/,/devops/backup/build,/chj/certs/} chown work:work /devops/ -R chown work:work /devops/data/ -R } function add_monitor_agent(){ rpm -vih http://download.pkg.chj.cloud/telegraf-1.7.2-1.x86_64.rpm rm -rf /etc/telegraf/* cd /etc/telegraf/ wget http://ops.chehejia.com:9090/file/telegraf.zip unzip telegraf.zip fp="/etc/telegraf/" ip=$(ifconfig |grep -w inet |grep '255.255.255'|grep -v 0.0.0.0|awk '{print $2}') sed -i "/global_tags/ a\ ip= \"$ip\"" /etc/telegraf/telegraf.conf systemctl start telegraf.service systemctl enable telegraf.service } function java_config(){ wget -o /var/log/wget.log -P /usr/local http://change-dev.download.pkg.chj.cloud/jdk1.8.0_121.tar.gz cd /usr/local tar xf jdk1.8.0_121.tar.gz ln -s /usr/local/jdk1.8.0_121 jdk cat > /etc/profile.d/java.sh <<EOF JAVA_HOME=/usr/local/jdk CLASSPATH=./:$JAVA_HOME/lib:JAVA_HOME/jre/lib PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH CLASSPATH JAVA_HOME EOF } if [ "$1" == "sys.init" ] then FirstRun_file="/tmp/FirstRun" if [ ${FirstRun_file} ] then install_pkg init_disk project_dir update_time kernel_optimization f_limit add_keys add_monitor_agent java_config rm -rf {$FirstRun_file} else echo "system no init" fi else echo "No parameters " fi 2.ansible 脚步内容如下; #!/bin/bash if [ ! -n $1 ] then ipaddress=$1 ansible -i ${ipaddress},all -m copyt -a "src=/home/ops/ops_base_env_deploy/ops_init.env/init.sh dest=/tmp/init.sh owner=ops group=ops" ansible -i ${ipaddress},all -m shell -a "touch /tmp/FirstRun && sh /tmp/init.sh " echo "系统环境初始化完成" sed -i '6s/^/#/' ansible.sh else echo "请输入初始化机器IP地址" fi