运维自动化之系统部署(代码片段)

author author     2023-01-02     457

关键词:

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

技术分享图片

安装程序

CentOS系统安装
系统启动流程:
??bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
anaconda: 系统安装程序
?? gui:图形窗口
?? tui: 基于图形库curses的文本窗口

安装程序启动过程

MBR:isolinux/boot.cat
stage2: isolinux/isolinux.bin
配置文件:isolinux/isolinux.cfg
??每个对应的菜单选项:
????加载内核:isolinuz/vmlinuz
????向内核传递参数:append initrd=initrd.img ...
装载根文件系统,并启动anaconda
??默认启动GUI接口
??若是显式指定使用TUI接口:向内核传递text参数即可
????(1)按tab键,在后面增加text
????(2)按ESC键:boot: linux text

anaconda工作过程

Anaconda安装系统分成三个阶段:
1、安装前配置阶段
??安装过程使用的语言
?? 键盘类型
??安装目标存储设备
????Basic Storage:本地磁盘
????特殊设备:iSCSI
??设定主机名
??配置网络接口
??时区
??管理员密码
??设定分区方式及MBR的安装位置
??创建一个普通用户
??选定要安装的程序包
2、安装阶段:
??在目标磁盘创建分区,执行格式化操作等
??将选定的程序包安装至目标位置
??安装bootloader和initramfs
3、图形模式首次启动
??iptables
??selinux
??core dump

指定安装源

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:[email protected] host/path
????NFS Server repo=nfs:server:/path
????ISO images on an NFS Server repo=nfsiso:server:/path
centos7:
????Any CD/DVD drive inst.repo=cdrom
????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:[email protected] host/path
????NFS Server inst.repo=nfs:[options:]server:/path

系统安装

启动安装过程一般应位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式:
??本地光盘
??本地硬盘
??NFS
??URL:
????ftp server: yum repository
????http server: yum repostory
如果想手动指定安装源:
??boot: linux askmethod
??boot: linux ks=http://172.20.7.52/ks6.cfg
anaconda的配置方式:
??(1) 交互式配置方式
??(2) 通过读取事先给定的配置文件自动完成配置
??????按特定语法给出的配置选项
????????kickstart文件
安装boot引导选项:boot
text: 文本安装方式
askmethod: 手动指定使用的安装方法
与网络相关的引导选项:
??ip=IPADDR
??netmask=MASK
??gateway=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

kickstart文件的格式

命令段:指明各种安装前配置,如键盘类型等
程序包段:指明要安装的程序包组或程序包,不安装的程序包等 br/>????%packages
[email protected]_name
????package
????-package
????%end
脚本段:
????%pre: 安装前脚本
????????运行环境:运行于安装介质上的微型Linux环境
????%post: 安装后脚本
????????运行环境:安装完成的系统
命令段中的命令:
??必备命令
??????authconfig: 认证方式配置
??????????authconfig --useshadow --passalgo=sha512
??????bootloader:bootloader的安装位置及相关配置
??????????bootloader --location=mbr --driveorder=sda –
??????????????append="crashkernel=auto rhgb quiet"
??????keyboard: 设定键盘类型
??????lang: 语言类型
??????part: 创建分区
??????rootpw: 指明root的密码
??????timezone: 时区
可选命令:
????install OR upgrade
????text: 文本安装界面
????network
????firewall
????selinux
????halt
????poweroff
????reboot
????repo
????user:安装完成后为系统创建新用户
????url: 指明安装源
????key –skip 跳过安装号码,适用于rhel版本

kickstart文件创建

创建kickstart文件的方式
  直接手动编辑
     依据某模板修改
   可使用创建工具:system-config-kickstart
     默认好像是没有需要安装:yum -y install system-config-kickstart
     依据某模板修改并生成新配置
        /root/anaconda-ks.cfg
检查ks文件的语法错误:ksvalidator
   ksvalidator /PATH/TO/KICKSTART_FILE
   [[email protected] ~]#ksvalidator anaconda-ks.cfg

ks模版文件:
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url=$tree
# Root password
rootpw --iscrypted $1$2gpkF.e/$CezTOjwptBtOlJo5cOSKR1
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part /boot --fstype="ext4" --size=500
part / --fstype="ext4" --size=50000
part swap --fstype="swap" --size=4096
part /data --fstype="ext4" --size=50000

%packages
@base
autofs
@compat-libraries
@development
%end

%post
rm -rf   /etc/yum.repos.d/*
cat > /etc/yum.repos.d/base.repo << EOF
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
EOF

echo ‘PS1="[e[1;42m][[e[31;40m]u[e[37;40m]@h [e[36;40m]w[e[0m]\$"‘ > /etc/profile.d/env.sh
sed -i ‘s/#UseDNS yes/UseDNS no/‘ /etc/ssh/sshd_config
sed -i ‘s/GSSAPIAuthentication yes/GSSAPIAuthentication no/‘ /etc/ssh/sshd_config
ed -i "/# Source/ialias cdnet=‘cd /etc/sysconfig/network-scripts‘" /root/.bashrc
sed -i "/# Source/i alias viet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0‘" /root/.bashrc
 . /etc/profile.d/env.sh;service sshd restart; . /root/.bashrc;  
%end

自动化运维之详细部署安装ansible服务(超简单)(代码片段)

简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署... 查看详情

自动化运维三贱客之ansible的安装和命令应用基础(代码片段)

ansible简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible基本框架:ansible是基于模块工作... 查看详情

saltstack之自动化运维(代码片段)

引入简介  saltstack是由thomasHatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。   早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管... 查看详情

自动化运维ansible之roles部署配置lamp架构(代码片段)

Roles介绍Ansible为了层次化、结构化地组织Playbook,使用了角色(roles)。Roles能够根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可... 查看详情

ansible自动化运维之配置清单inventory(代码片段)

Ansible配置清单InventoryAnsible部署Inventory简介Ansible配置文件的优先级Ansible命令常用参数演示环境Anisble参数使用简单示例构建Anisble清单ansible命令指定清单的正则表达式Ansible配置文件参数详解Ansible部署简单介绍、安装、简单部署可... 查看详情

自动运维之网络设备割接配置按预定步骤操作(代码片段)

  向着自动化运维再次前进一小步!!!  本着自动化运维的理想,提前解放双手,让系统按照提前部署的方案来执行操作步骤,以此学习到这样的一个小技巧[[email protected]~]#cattelnet.sh#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin... 查看详情

运维自动化方案(代码片段)

运维自动化简写自动化运维主要包括以下几个方面:系统安装系统优化系统监控日志监控和收集应用自动化部署代码自动化部署自动化测试自动化更新自动化扩容配置文件管理系统自动化安装和优化系统的自动化安装和优化,可... 查看详情

自动化运维ansible之playbook剧本(持续更新)(代码片段)

...前两篇关于Ansible的博客地址,以供查阅,欢迎学习交流!自动化运维之Ansible概述及Ansible部署Ansible命令应用之常用模块Playbook简介playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列... 查看详情

运维自动化之psutil模块(代码片段)

psutil是一个跨平台的库,能够轻松实现获取系统运行的进程和系统利用例(CPU,磁盘,内存,网络等)信息,主要运用于系统监控,分析系统资源和进程管理。psutil比在shell中使用一连串的命令(ps,top,lsof,df,who,ionice,iostat等)命令... 查看详情

运维自动化工具之ansible(代码片段)

..."AnsibleisSimpleITAutomation",也就是说ansible是一种简单的自动化IT工具.  工具目标:1.自动化部署APP2.自动化管理配置项3.自动化的持续交付4.自动化的云服务管理2.ansible特性  模块化:调用特定的模块,完成特定的任务 ... 查看详情

安装部署自动化运维之ansible(代码片段)

...行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。Ansible核心组件ansible可以看做是一种基于模块进行工作的框架结构,批量部署能力... 查看详情

自动化运维之puppet服务部署(代码片段)

...代码,它便会自动的完成所有的工作,这批工具就是运维自动化puppet,它可以针对多台服务器进行 查看详情

运维自动化之ansible(中级)(代码片段)

  上一篇简单介绍ansible的一些基础知识,这篇咱们来讨论下ansible的基本使用,高级阶段放到下一篇来说Ansbileansible通过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方式联系各被管理... 查看详情

自动化运维工具ansible的详细部署(代码片段)

Ansible的来历Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 Ansible是基于paramiko开发的,并且基于模块化工... 查看详情

自动化运维三贱客之puppet安装(代码片段)

Puppet简介puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以... 查看详情

运维自动化之-ansible批量主机管理(代码片段)

...工检查、日常版本升级需要管理太多设备,必须通过运维自动化实现特别是版本升级,需要到同类机器部署代码、起停设备,必须在一台主控机上完成代码分发、远程服务起停、服务验证验证2016年开始使用pssh,后改用ansible,ans... 查看详情

自动化运维之ansible的安装部署与命令模块(代码片段)

Ansible简介Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量... 查看详情

ansible系统概述与部署(代码片段)

...:27:03tags:Ansiblecategories:Ansiblecopyright:true---Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,an 查看详情