更多内容请点击:

Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~)

https://blog.51cto.com/13683480/2095439

第19章,运维自动化之系统安装

本章内容:

系统安装过程

配置anaconda

自动化安装系统

制作引导光盘和U盘

DHCP服务

PXE安装系统

cobbler企业级应用

运维自动化发展历程及技术应用:

全人工阶段----> 工具化阶段----> 平台化阶段----> 自驱动阶段

无流程规范----> 制定规范----> 完善规范----> 流程驱动

人----> 工具---->  平台----> 制度

anaconda:系统安装程序

gui :     图形窗口

tui   :    基于图形库curses的文本窗口

安装程序启动过程:

启动盘主要文件目录:isolinux

MBR:     isolinux/boot.cat

stage2:     isolinux/isolinux.bin

配置文件:isolinux/isolinux.cfg

每个对应的菜单选项:

内核:isolinux/vmlinuz

向内核传递参数:append  initd=initrd.img...

装载根文件系统,并启动anaconda

默认启动GUI接口

若是显示指定使用TUI接口,向内核传递text参数即可

按tab键,在后面增加text

按esc键,boot:linux  text

anaconda工作过程:

anaconda安装系统分为三个阶段:

安装前配置阶段:

安装过程使用的语言

键盘类型

安装目标存储设备

Basic Storage:本地磁盘

特殊设备:iSCSI

设备主机名

配置网路接口

时区

管理员密码

设定分区方式及MBR的安装位置

创建一个普通用户

选定要安装的程序包

安装阶段:

在目标磁盘创建分区,执行格式化操作等

(分区完成后会写入bootloader,系统无法从光盘启动,

后面安装grub会不会覆盖次bootloader,未知。)

将选定的程序包安装至目标位置

安装bootloader和initramfs

图形模式首次启动:

iptables

selinux

cor  dump

系统安装过程:-------------------------------------------------------------------------

启动安装过程一般应位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式:

本地光盘

本地硬盘

NFS

URL

ftp server  :yum repository

http server     :yum  repostory

如果想手动指定安装源:

boot:linux askmethod

anaconda的配置方式:

1     交互式配置方式

2     通过读取事先给定的配置文件自动完成配置

按特定语法给出的配置选项

kickstart文件

安装boot引到选项:boot:

默认gui图形界面,使用boot:linux text   进入字符界面安装

askmethod:手动指定使用的安装方法

与网络相关的引导选项

ip=IPADDR

netmask=MASK

geteway=GW

dns=DNS_SERVER_IP

ifname=NAME:MAC_ADDR

与远程访问功能相关的引导选项:

vnc

vncpassword='PASSWORD'

(暂不知如何实现)

指明kickstart文件的位置:ks=

DVD drive:  ks=cdrom:/PATH/TO/KICKSTART_FILE

Hard drive:  ks=hd:device:/directory/KICKSTART_FILE

HTTP server:  ks=http://host:port/path/to/KICKSTART_FILE

FTP server:  ks=ftp://host:port/path/to/KICKSTART_FILE

HTTPS server:  ks=https://host:port/path/to/KICKSTART_FILE

NFS  server:ks=nfs:host:/path/to/KICKSTART_FILE

启动经济救援模式:

rescue

官方文档:《Installation Guide》

远程安装yum源地址格式 有变化

Centos6

DVD drive  repo=cdrom:device

Hard Drive  repo=hd:device/path

HTTP Server  repo=http://host/path

HTTPS Server  repo=https://host/path

FTP Server  repo=ftp://username:password@ host/path

NFS Server  repo=nfs:server:/path

ISO  images  on an NFS

Server

repo=nfsiso:server:/path

ip=192.168.1.10 netmask= 255.255.255.0 gateway=  192.168.1.1

dns=  192.168.1.3 ksdevi ce= eth0 i fname= pri mary:01:23:4  5:67:89:ab

Centos7

Any CD/DVD  drive inst.repo=cdrom

Specific  CD/DVD

drive

inst.repo=cdrom:device

Hard Drive  inst.repo=hd:device:/path

HTTP Server  inst.repo=http://host/path

HTTPS Server  inst.repo=https://host/path

FTP Server  inst.repo=ftp://username:password@ host/path

NFS Server  inst.repo=nfs:[options:]server:/path

kickstart:

通过固定格式的文件保存系统安装时的各种选项

在系统安装时使用ks=         来导入选项,做到自动化安装

文件创建方式:

1     手动编辑

2     复制已有的*.ks.cfg,通过修改得到如:  /root/anaconda-ks.cfg

3     使用system-config-kickstart 生成

需图形界面操作

检查ks文件的语法错误:

ksvalidator  /path/ksfile

格式:

命令段:        指明各种安装前配置,如键盘类型等

程序包段:     指明要安装的程序包组或程序包,不安装的程序包等

%package

@group_name

package

-package

%end

脚本段:

%pre

安装前脚本

%end

%post

安装后脚本

%end

系统光盘中isolinux目录列表

boot.cat               启动过程mbr

isolinux.bin    启动过程中使用的grub

isolinux.cfg     isolinux.bin的配置文件,当光盘启动后(即运行ixolinux.bin)

会自动去找iso.isolinux.cfg

vesamenu.c32       光盘启动后的安装图形界面,也属于syslinux项目,menu.c32 版本是纯文本菜单

memtest               内存检测,这是一个独立的程序

splash.jpg:            光盘启动界面的背景图

vmlinuz                内核映像

initrd.img             ramfs      ()

实验1: 使用光盘引到,正常安装以及使用text选项进入字符界面安装

注意:

一旦分区完成,bootloader将随分区表写入磁盘(grub第二阶段没装),此时退出安装会从硬盘启动,无法开机

使用字符界面,无法手动分区,默认只有三个选项

1     replace existing linux  systems

2     use all space

3     use free space

实验2: 光盘启动,远程安装,使用本地教学环境yum源

光盘菜单项按esc

centos6 boot:linux  repo=http://172.20.0.1/centos/6

centos7          boot:linux  inst.repo=http://172.20.0.1/centos/7

使用askmethod 选项配置网络后使用yum源安装

实验3      使用kickstart 生成ks文件使用yum源安装

boot:linux ks=http://172.20.110.182/ks6_mini.cfg

boot:linux ks=http://172.20.110.182/ks7.mini.cfg

实验4      制作启动光盘,使用网络yum源安装

步骤:     复制isolinux目录

修改isolinux.cfg文件

生成ks文件,放入制作目录

刻录iso文件

centos6

使用system-config-kickstart 生成ks文件ks6_mini.cfg

安装源http://172.20.0.1/centos/6

mkdir  /data/stcentos6

cp /misc/cd/isolinux/  /data/stcentos6/

mkdir  /data/stcentos/ksdir

cp /root/ks6_mini.cfg  /data/stcentos6/ksdir

vim  /data/stcentos/isolinux/isolinux.cfg

适当修改标签项

ks=cdrom:/ksdir/ks6_mini.cfg

制作iso文件,此为一条命令,删除换行

mkisofs -R -J -T -v  --no-emul-boot --boot-load-size 4

--boot-info-table -V  "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin

-c isolinux/boot.cat  -o /root/stcentos6.iso /data/stcentos6/

生成的iso文件 stcentos.iso 即可启动安装系统

centos7

****

****

mkisofs -R -J -T -v --no-emul-boot  --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b  isolinux/isolinux.bin -c isolinux/boot.cat -o /root/stcentos7.iso  /data/stcentos7/

实验5      制作自动安装光盘

复制光盘内容到目录/data/centos6

centos6.9,由于有两张光盘,所以需要分别复制

mount /dev/sr0  /mnt

cp /mnt  /data/centos6

umount /mnt

更换光盘

mount /dev/sr0  /mnt

cp  /mnt/Packages/*      /data/centos6/Packages/

生成repodata,先删除repeodata下除.xml之外的所有文件

cd  /data/centos6/repodata

cp  43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml  ..

rm -f  *

mv ../43d8f*  .

cd  ..

使用命令生成repodata

createrepo -g  repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml

删除.TBL文件

find -name TRANS.TBL  -exec rm {} \;

修改菜单文件

vim  /data/centos6/isolinux/isolinux.cfg

适当修改选项:

ks=cdrom:/ksdir/ks6_mini.cfg

生成、复制、修改kickstart文件

cp  /root/ks6_mini.cfg /data/centos/ksdir/

vim  /data/centos/ksdir/ks6_mini.cfg

路径修改为

cdrom

刻录/data/centos6成.iso文件

mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table  -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o  /root/stcentos7.iso /data/stcentos7/

使用生成的iso文件启动虚拟机,并自动化最小安装

mkisofs:

mkisofs [options] /dir|file

刻录文件或目录为iso文件

选项:     -o                  指定映像文件的名称

-b                  指定在制作可开机光盘时所需的开机映像文件

-c                 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog

全部内容做成一个文件

-no-emul-boot           非模拟模式启动

-boot-load-size  4 设置载入部分的的数量

-boot-info-table  在启动的图像中显示信息

-R | -cock                    使用Rock RidgeExtensions

-J | -joliet              使用Joliet格式的目录与文件名称

-v | -verbose        执行时显示详细的信息

-T |  -translation-lable 建立文件名的转换表,适用于不支持Rock  RidgeExtensions

将iso文件, 写入硬盘或者u盘-,实测可以启动,但是不能安装

原因是ks文件使用cdrom:/ 无法找到

yum install  syslinux

isohybrid stcentos6.iso

dd if=stcentos6.iso       of=/dev/sdb

DHCP: ------------------------------------------------------------------------

dhcp:

Dynamic Host  Configuration Protocol

动态主机配置协议

局域网协议,使用udp协议

主要用途:

用于内部网路和网络服务供应商自动分配ip地址给用户

用于内部网络管理员作为对所有电脑集中管理的手段

DHCP共有八种报文:

DHCP DISCOVER  客户端广播到服务器,请求ip地址

DHCP OFFER        服务器单播给客户端,提供ip地址

DHCP REQUEST    客户端再次广播,表明已经接受ip

DHCP ACK            服务器单播,表示确认客户端已经接受ip 合约建立

DHCP NAK           服务器到客户端,通知用户无法分配合适的ip地址

DHCP DECLINE     客户端到服务器,指示地址已被使用

DHCP RELEASE     客户端到服务器,放弃网络地址和取消剩余的租约时间

DHCP INFORM            客户端到服务器,获取更为详细的配置信息,极少用到

租约:

50%时间:     租约时间到达50%来续租,向DHCP服务器发送新的DHCP REQUEST请求

如果dhcp服务没有拒绝的理由,则会用DHCP  ACK信息。当DHCP客户端

收到该应答信息后,就重新开始新的租用周期

87.5%:          如果之前的DHCP server没有回应续租请求,等到租期的7/8时,主机会再

发送一次广播请求

同网段多dhcp服务:

dhcp服务必须基于本地

先到先得的原则

相关协议:

arp,rarp

跨网段:

RFC 1542 Compliant  Routers             允许dhcp广播通过的route

使用中继代理

DHCP实现:

Linux DHCP协议的实现程序:dhcp,dnsmasq(dhcp,dns  轻量级)

DHCP Server:

主程序     /usr/sbin/dhcpd

代理服务器程序:/usr/sbin/dhcrelay

主配置文件 /etc/dhcp/dhcpd.conf

端口:    server 67  udp

client  68 udp

dhcp6  client 546 udp

DHCP client:

命令:    dhclient 获取dhcp服务

/var/lib/dhclient    查看获取的ip信息

DHCP 配置文件:

/etc/dhcp/dhcpd.conf   默认为空文件,需要复制模板文件覆盖即可

全局配置:

option domain-name  "example.com";               域名后缀

option  domain-name-server IP1,IP2;         DNS配置

default-lease-time  86400;                      默认租期

max-lease-time  864000;                                   最大租期

subnet 192.168.65.0  netmask 255.255.255.0 {

range  192.168.65.10 192.168.65.100;          地址范围

option  routers 192.168.65.1;                   网关

此处也可以单独配置options;

filename pxelinux.0;

next-server    192.168.65.128;

这两项用于配置pxe自动安装系统

}

地址分配记录:

/var/lib/dhcpd/dhcpd.leases

tftp:

服务器实现软件:        tftp-server

服务器根文件路径:     /var/lib/tftpboot

使用pxe实现自动安装:--------------------------------------------------------------

使用的服务:dhcp,tftp,http(或者ftp)

实现过程:

1     需要安装的主机和dhcp服务同一物理网段内,启动项选择网络服务

2     主机与DHCP服务器完成通信,地址分配       UDP

3     主机通过DHCP服务filiename和next-server 这一指向连接tftp服务器    UDP

4     通过tftp服务器获取pxelinux.0 文件并执行

5     从tftp服务器上获取内核,initrd 文件,配置文件 UDP

6     通过读取tftp服务器上的配置文件,找到存放在http或者ftp服务器上的yum

安装源,以及ks文件。完成系统安装      TCP

7     yum源与ks记录文件可以位于不同的服务器,也可以位于同一服务器

实验6: 以centos6作为服务器,实现pxe自动安装centos6

0     关闭selinux iptables   本机ip:192.168.65.128

1     准备工作,

安装服务包:

yum  install httpd tftp-server dhcp syslinux

如是生产环境长期使用,可以设置开机自启:

chkconfig httpd dhcp xinetd on

2     配置yum源:

使用http提供yum服务,先创建目录

mkdir  -pv /var/www/html/centos/{6,7}

这里使用挂载光盘的方式提供yum源,生产环境需复制光盘内容到目录

mount  /dev/sr0 /var/www/html/centos/6

创建kickstart文件,依然放在http服务目录下

mkdir  /var/www/html/ksdir

cp  /root/ks6_mini.cfg   /var/www/html/ksdir/

适当修改ks文件

vim  /var/www/html/ksdir/ks6_mini.cfg

注意 url  --url=http://192.168.65.128/centos/6

开启httpd

注意:kickstart文件权限

3     配置dhcp服务

修改配置文件:

cp  /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

vim  /etc/dhcp/dhcpd.conf

subnet 192.168.65.0 netmask 255.255.255.0 {

range 192.168.65.10 192.168.65.100;

filename "pxelinux.0";

next-server 192.168.65.128

}

启动dhcpd服务

dhcpd

4     配置tftp-server服务:

开启服务,由于tftp-server为非独立服务,受xinetd服务监管

rpm  -ql tftp-server

vim   /etc/xinetd.d/tftp

将disable 项改成no

重启xinetd服务

service xinetd restart

复制所需文件:

cd  /var/lib/tftpboot/

cp  /cd/isolinux/vmlinuz /cd/isolinux/initrd.img .

updatedb

locate  pxelinux.0

cp  /usr/share/syslinux/pxelinux.0 .

locate  menu.c32           简单菜单项文件

cp  /usr/share/syslinux/menu.c32 .

cp  /cd/isolinux/isolinux.cfg pxelinux.cfg/default

tree一下:

[root@centos6 /var/lib/tftpboot]$tree

.

├──  initrd.img

├──  menu.c32

├──  pxelinux.0

├──  pxelinux.cfg

│    └── default

└──  vmlinuz

编辑启动菜单:

vim   pxelinux.cfg/default

注意,ks=http://192.168.65.128/ksdir/ks6_mini.cfg

使用wq!保存

5     测试安装

先使用ss -tanul 查看67 69 80 端口是否已开启

使用一台新的虚拟机,开机即可进入选项,测试安装

实验7: 以centos7,为服务器,同时提供centos6 和centos7

0     关闭selinux,iptables 本机ip:192.168.65.132

1     安装服务所需程序包

yum install httpd  tftp-server dhcp syslinux

2     配置http服务,提供yum源和ks源

与之前有些不同,需要挂两张光盘

[root@localhost /var/www/html]#tree -L 2

.

├──  centos

│   ├──  6

│   └──  7

└──  ksdir

├──  ks6_mini.cfg

└──  ks7_mini.cfg

4  directories, 2 files

3     配置dhcp 方法相同

4     配置tftp-server服务,有些不同

[root@localhost /var/lib/tftpboot]#tree

.

├──  boot.msg

├──  centos6

│    ├── initrd.img

│    └── vmlinuz

├──  centos7

│    ├── initrd.img

│    └── vmlinuz

├──  pxelinux.0

├──  pxelinux.cfg

│    └── default

├──  splash.png

└──  vesamenu.c32

3  directories, 9 files

由于使用了vesamenu.c32菜单,所以需要多准备boot.msg splash.png  这两个文件

centos6 和centos7两个目录下为各自安装须有的vmlinuz 和initrd文件

需要在编辑菜单选项时写入路径

5     开启服务,并测试安装

需要注意centos7系统开启tftp-server的方式为

systemctl start tftp.socket

同样使用ss -tanul 查看端口是否开启

新建虚拟机测试安装

cobbler:------------------------------------------------------------------------

快速网络安装linux操作系统的服务,支持众多的linux发行版:redhat、fedora、

centos debian、ubuntu和suse,也可以支持网络安装,windows

PXE的二次封装,将多种安装参数封装到一个菜单

python编写

提供了cli 和web的管理形式

服务集成:pxe,dhcp,rsync,http,dns,kickstart,ipmi电源管理

安装:epel源

yum install cobbler  dhcp

配置文件目录:/etc/cobbler

/etc/cobbler/settings            cobbler主配置文件

/etc/cobbler/iso                    iso模板配置文件

/etc/cobbler/pxe                   pxe模板文件

/etc/cobbler/power                     电源配置文件

/etc/cobbler/user.conf          web服务授权配置文件

/etc/cobbler/users.digest      访问的用户名密码配置文件

/etc/cobbler/dhcp.template   dhcp服务器的配置模板

/etc/cobbler/dnsmasq.template   dns服务的配置模板

/etc/cobbler/tftpd.template          tftp服务的配置模板

/etc/cobbler/modules.conf           模板的配置文件

cobbler 目录介绍

数据目录:

/var/lib/cobbler/config         用于存放distros,system,profile等信息配置文件

/var/lib/cobbler/triggers       用于存放用户定义的cobbler命令

/var/lib/cobbler/kickstart      默认存放kickstart文件

/var/lib/cobbler/loaders        存放各种引导程序

镜像目录:

/var/www/cobbler/ks_mirror       导入的发行版系统的所有数据

/var/www/cobbler/images           导入发行版的kernel和initrd镜像用于远程网络启动

/var/www/cobbler/repo_mirrow yum  存储目录

日志目录

/var/log/cobbler/installing           客户端安装日志

/var/log/cobbler/cobbler.log      cobbler日志

cobbler 命令介绍:

cobbler check       核对当前设置是否有问题

clbbler list            列出所有的cobbler元素

cobbler report              列出元素的详细信息

clbbler sync          同步配置到数据目录,更改配置最好都要执行下

cobbler  reposync  同步yum仓库

cobbler   distro             查看导入的发型版系统信息

clbbler system             查看添加的系统信息

cobbler profile             查看配置信息,安装菜单

/etc/cobbler/settings 中的重要参数设置

defarlt_password_crypted "---"   使用openssl password -1 生成

manage_dhcp       :1      默认为0 需要修改

manage——tftpd:1

pxe_just_once:1

next-server:  tftp服务器的IP地址

server:cobbler服务器的IP地址

实验8:cobbler配置实现:

centos7.5主机

1     安装前准备,关闭selinux 关闭iptables

2     安装服务:

yum install cobbler  dhcp

systemctl enable  cobblerd httpd dhcpd tftp rsyncd

systemctl start  cobblerd httpd tftp rsyncd

3     执行cobbler check       务必确认httpd tftp rsyncd 保持开启状态

按照提示完成操作,大概包括

修改/etc/cobbler/settings 文件

server:

next_server:

default_password_

manage_dhcp:1

执行cobbler get-loaders获取文件

执行cobbler sync 同步文件

4     修改dhcp配置文件:  /etc/cobbler/dhcp.template

主要修改

subnet  192.168.65.0 netmast 255.255.255.0 {

range  dynamic-bootp  192.168.65.100  192.168.65.254;

}

执行cobbler sync同步(自动重启dhcpd)

5     导入镜像文件:

cobbler import  --name=NAME --path=/PATH --arch=ARCH

查看、删除导入镜像:

cobbler  distro list|remove

查看菜单选项:

cobbler  profile list|remove

注意如有需要删除,先删除profile在删除distro

默认情况下导入镜像会自动生成一个默认的菜单项,系统自动配置的,一般直接删除

6     导入菜单:

cobbler profile add  --name=NAME --distro=DISTRO  --kickstarts=/etc/cobbler/kickstarts/ks*.cfg

可以查看导入菜单profile的详细信息

cobbler profile  report --name=centos6.9-mini-x86_64

7     如没有问题,使用ss -tanul 查看各服务端口是否正常开启

新建虚拟机,测试安装

cobbler 的web管理实现

cobbler-web         提供cobbler基于web管理界面,epel源

yum install  cobbler-web

管理界面登录地址:

https://HOST/cobber_web

认证方式配置文件:/etc/cobbler/moduses.conf

常用认证方式有两种:

1.     module =  authn——configfile           默认

账号密码存放地址:/etc/cobbler/users.digest

使用命令:

htdigest -c /etc/cobbler/users.digest Cobbler user1

PASSWORD

PASSWORD

添加管理员账号,Cobbler指明为账号服务类型

注意:    默认使用好听digest -c 会覆盖原有内容,所有如需添加多个账号,

需使用临时文件,如:

htdigest -c  /etc/cobbler/uses.digest1 Cobbler user2

cat  /etc/cobbler/users.digest >>  /etc/cobbler/users.digest

2     module =  authn_pam

配置文件地址:/etc/cobbler/users.conf

首先添加一个linux账号,然后将配置文件中

admin  = "" 这一项改成此账号名即可

多个账号的情况,增加多行

admin  = ""

笔记整理完成时间:2018年5月27日21:49:11

转载于:https://blog.51cto.com/13683480/2138833

第19章,运维自动化之系统安装相关推荐

  1. 68.第十五章 运维自动化之系统部署 -- 利用Cobbler实现自动化安装(三)

    5.利用 cobbler 实现自动化安装 5.1 Cobbler 简介 Cobbler是一款Linux生态的自动化运维工具,基于Python2开发,用于自动化批量部署安装操作系统:其提供基于CLI的管 ...

  2. 第20章,运维自动化之ansible

    更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) https://blog.51cto.com/13683480/2095439 第20章,运维自 ...

  3. 【社区图书馆】《网络工程师的Python之路:网络运维自动化实战(第2版)》

    文章目录 图书前言 图书简介 图书作者.简介 图书好评 图书目录 总结:本人选择此图书的意义 图书前言 光阴似箭,岁月如梭.转眼之间,距离本书最早的电子书出版已经过去了三年之久.承蒙广大读者的厚爱,电 ...

  4. 运维自动化工具Cobbler之——安装实践

    运维自动化工具--Cobbler实践 第1章 About Cobbler 1.1 Cobbler Introduction Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的 ...

  5. 运维自动化之ANSIBLE

    成功不易,加倍努力! 运维自动化之ANSIBLE 本章内容 1 自动化运维应用场景 1.1 云计算运维工程师核心职能 1.2 运维职业发展路线 1.3 企业实际应用场景分析 1.3.1 Dev开发环境 ...

  6. Linux-运维自动化之系统安装

    本章内容 系统安装过程 配置anaconda 自动化安装系统 制作引导光盘和U盘 DHCP服务 PXE安装系统 cobbler企业级应用 运维自动化发展历程及技术应用 安装程序 CentOS系统安装 ...

  7. 【有感而发】从中华武术谈运维工程师以及运维自动化http://liuqunying.blog.51cto.com/3984207/1596186...

    从中华武术谈运维工程师以及运维自动化 任何事物都没有完美一说,但是我们可以死磕自己,追求极致... 无论我们现在是搬砖呢,砌墙呢,还是在逗自己混日子,我们需要关注的是自己的方向在哪里,而不是过于在意自 ...

  8. 【有感而发】从中华武术谈运维工程师以及运维自动化

    从中华武术谈运维工程师以及运维自动化 任何事物都没有完美一说,但是我们可以死磕自己,追求极致... 无论我们现在是搬砖呢,砌墙呢,还是在逗自己混日子,我们需要关注的是自己的方向在哪里,而不是过于在意自 ...

  9. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)

    现在开始介绍php+mysql+shell监控系统 1.目的 此监控系统主要是通过php+mysql+shell的方式,通过shell脚本对各个机器的其各个服务进行监控,达到及时的了解其各个应用服务的 ...

最新文章

  1. 手写自己的MyBatis框架-MapperProxy
  2. 轻松学c语言编程.pdf等,轻松学编程 轻松学C语言编程pdf
  3. 遍历所有点的最短路径python_Python:如何优化所有可能的最短路径的计数?
  4. spring boot部署实战
  5. 描绘质量属性的六个常见属性场景。
  6. dedecms联动筛选_织梦dedecms图片联动筛选教程
  7. win10 nas搭建_零成本搭建一个私人影视库,没有NAS一样可以把观影姿势做到完美...
  8. sprintf函数的用法
  9. 在ArrayLIst和LinkedList尾部加元素,谁的效率高
  10. 今天来告诉你caj文件怎么打开
  11. Paragraph ended before \CJK@XX was complete
  12. 钉钉打新债自动提醒-python
  13. Halcon知识:binocular_disparity(双目视差)
  14. ERROR: No matching distribution found for cv2解决方案
  15. 关于百度网盘离线下载链接无效的问题
  16. C++学习(一六七)qquick的Scroll、Stack和Swipe区别
  17. 苹果手机怎么在照片上添加文字_怎么给手机照片添加文字?没想到方法这么容易,1分钟就能学会...
  18. 基于python的论文摘要怎么写_Django显示文章摘要需要如何写
  19. 设计师浅谈标志设计经验
  20. 如何下载某些IT培训机构上课视频——可以发送/保存

热门文章

  1. Python_多进程编程
  2. 用MATLAB将矩阵数据写入txt文件中,打开乱码原因
  3. VC/C++的中文字符处理方式
  4. Dart 5-Day
  5. 基于顺序存储结构的图书信息表的修改(C++)
  6. python pandas 对带时间序列的数据进行重采样处理
  7. Python----面试题(二)
  8. hdu 1253 胜利大逃亡 (广搜)
  9. php中的boolean(布尔)类型
  10. 六年之后再次执行[BLQS]战略