Guia de tecnologias

Automatizar instalação com Kickstart no CentOS/Fedora

4 min read Linux Atualizado 26 Sep 2025
Automatizar instalação com Kickstart no CentOS/Fedora
Automatizar instalação com Kickstart no CentOS/Fedora

Resumo rápido — TL;DR

Este artigo mostra como usar um arquivo Kickstart para automatizar instalações de CentOS/Fedora/Red Hat e executar scripts pós-instalação para instalar software adicional. Inclui um exemplo completo de Kickstart usado em laptops Fedora, explicações das seções principais, dicas de personalização e um checklist de implantação.

Introdução

Trabalhar em uma empresa de suporte de TI significa que eu frequentemente instalo CentOS, Fedora e Red Hat em servidores e computadores desktop. Este guia explica como automatizar o processo de instalação usando Kickstart e como adicionar software via scripts pós-instalação. Também publiquei uma versão deste tutorial no meu blog.

Se você nunca viu um arquivo Kickstart, depois de instalar uma variante do Red Hat procure em /root um arquivo chamado anaconda-ks.cfg — abra-o para ver os parâmetros usados durante a instalação. Analisar esse arquivo é uma forma prática de aprender por exemplo (desde que você se lembre das opções que escolheu na inicialização).

Abaixo segue um exemplo de arquivo Kickstart que usei ao implantar vários laptops Fedora com VMWare Player instalado e com algumas imagens de máquinas virtuais baixadas via wget. Preferi usar Kickstart com scripts a ferramentas de imagem como Symantec Ghost porque o Kickstart funciona em vários tipos de hardware e permite personalizar a instalação via scripts no futuro. Soluções como Microsoft WDS / RIS ou Ghost não oferecem essa flexibilidade.

Exemplo de Kickstart usado (arquivo bruto)

text
install
cdrom
lang en_US.UTF-8
keyboard uk
timezone --utc Europe/London
rootpw  --iscrypted $$nndedddewfooofcerd3r434
selinux --disabled
# Custom user added
user --name=kevinmitnick --groups=users --password=HackThePlanet
authconfig --enableshadow --passalgo=sha512 --enablefingerprint
firewall --service=ssh
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --drives=sda
ignoredisk --only-use=sda
part /boot --fstype=ext2 --asprimary --size=500
part /OtherOS --fstype=ext4 --asprimary --size=10240
part swap --asprimary --size=2048
part pv.fedora1000 --grow --asprimary --size=500
volgroup fedora --pesize=32768 pv.fedora1000
logvol /centosVM --fstype=ext4 --name=centosVM --vgname=fedora --size=30720
logvol /home --fstype=ext4 --name=home --vgname=fedora --size=81920
logvol / --fstype=ext4 --name=root --vgname=fedora --size=25600
logvol /windowsVM --fstype=ext4 --name=windowsVM --vgname=fedora --size=40960
bootloader --location=mbr --driveorder=sda --append="nomodeset rhgb quiet"
# setup the network with DHCP
network --device=eth0 --bootproto=dhcp
# packages that will be installed, anything starting with an @ sign is a yum package group.
%packages
@admin-tools
@authoring-and-publishing
@base
@core
@development-libs
@development-tools
@dial-up
@editors
@education
@electronic-lab
@engineering-and-scientific
@eclipse
@fedora-packager
@fonts
@gnome-desktop
@gnome-software-development
@graphical-internet
@graphics
@hardware-support
@input-methods
@java
@java-development
@kde-desktop
@kde-software-development
@legacy-fonts
@office
@online-docs
@printing
@sound-and-video
@system-tools
@text-internet
@x-software-development
@base-x
kpackagekit
system-config-network
scribus
xfsprogs
mtools
gpgme
gpm
rpmdevtools
koji
mercurial
lua
pylint
rpmlint
plague-client
cmake
mock
bzr
pptp
kdeedu-marble
minicom
opencv
yum-priorities
plotutils
openoffice.org-opensymbol-fonts
qtcurve-gtk2
gvfs-obexftp
glibmm24-devel
gnome-vfs2-devel
libsigc++20-devel
libart_lgpl-devel
kdepim
konversation
ImageMagick
digikam
kipi-plugins
kdegraphics
gypsy
gpsd
hdparm
m17n-db-tamil
m17n-db-gujarati
m17n-db-kannada
m17n-db-hindi
gok
m17n-db-oriya
m17n-db-bengali
m17n-contrib-sinhala
m17n-db-assamese
m17n-db-punjabi
iok
m17n-db-telugu
m17n-db-malayalam
xorg-x11-fonts-ISO8859-1-100dpi
urw-fonts
ghostscript-fonts
kdepim
vorbis-tools
amarok
jack-audio-connection-kit
kaffeine
kdemultimedia
vbetool
gssdp
geoclue
createrepo
radeontool
PackageKit-command-not-found
obexftp
enca
festival
ntpdate
xsel
gupnp
rdesktop
fuse
ncftp
mesa-libGLU-devel
xorg-x11-apps
xscreensaver-gl-extras
gdm
xscreensaver-extras
xscreensaver-base
xterm
xorg-x11-resutils
gitk
git-gui
dia
tftp
python-crypto
boost-devel
valgrind
subversion
cvs
thunderbird-lightning
python-sqlite2
asciidoc
glibc-static
tcllib
python-psycopg*
ssh*
perl-ExtUtils-MakeMaker
perl-Net-Telnet
perl-HTML-FromText
libICE.so.6
libSM.so.6
libXmu.so.6
libXp.so.6
libXpm.so.4
libXt.so.6
help2man
cscope
ctags
git
kernel-devel
tftp-server
texlive-latex
texi2html
cmake
transfig
alsa-lib
libXScrnSaver
qt
qt-x11
libasound.so.2

libXss.so.1
libQtDBus.so.4
libQtGui.so.4
pulseaudio
alsa-plugins-pulseaudio
pulseaudio-esound-compat
pulseaudio-libs
pulseaudio-libs-glib2
pulseaudio-module-zeroconf
pulseaudio-libs-zeroconf
xmms-pulse
pulseaudio-module-gconf
wine-pulseaudio
xine-lib-pulseaudio
pulseaudio-utils
pulseaudio-module-bluetooth
padevchooser
paman
paprefs
pavucontrol
pavumeter
ncurses-devel.i686
%end
%post --log=/root/my-post-log
exec < /dev/tty3 > /dev/tty3
chvt 3
echo
echo "################################"
echo "# Running Post Configuration   #"
echo "################################"
# prevent future yum updates pulling down & install new kernels (and breaking VMware & video drivers).
echo "exclude=kernel*" >> /etc/yum.conf
# update the system
yum update -y 
# install rpm fusion repo
rpm -Uvh \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
# disable rpmfusion repo, to prevent a yum update contaminating the system with rpmfusion rpms.
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-*
# install video drivers - enabling rpmfusion repos on the command line.
yum -y --enablerepo=rpmfusion-nonfree --enablerepo=rpmfusion-free  --enablerepo=rpmfusion-free-updates --enablerepo=rpmfusion-nonfree-updates install kmod-nvidia xorg-x11-drv-nvidia-libs.i686 xorg-x11-drv-nvidia-libs.x86_64 akmod-nvidia
# start akmods on boot
chkconfig akmods on
# add pcadmin to sudoers
echo "kevinmitnick ALL=(ALL)       ALL" >> /etc/sudoers
# set perms on vmware partitions so users in the users group can create vm's
chown :users /windowsVM && chmod 775 /windowsVM
chown :users /centosVM && chmod 775 /centosVM
# Make sure the system boots X by setting the system to run level 5
sed -i 's/id:3:initdefault:/id:5:initdefault:/g' /etc/inittab
# install openvpn & configure
wget ftp://$host/pub/VPN/OpenVPN/Linux/openvpnclient-custom-settings-1.6-3.i386.rpm
rpm -ivh openvpnclient-custom-settings-1.6-3.i386.rpm
cd /etc/openvpn/
rm client.conf-*
wget ftp://$host/pub/VPN/OpenVPN/Linux/64bit/client.conf-1
mv client.conf-1 client.conf-0
rm -f /openvpnclient-custom-settings-1.6-3.i386.rpm
# add Kevin Mitnick to group users
usermod -a -G users kevinmitnick
# pull down vmware images
cd /windowsVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/windowsVM.tar.gz
tar -xvzf windowsVM.tar.gz
cd /centosVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/centosVM.tar.gz
tar -xvzf centosVM.tar.gz
# create symlink as instructed
cd /usr/lib; ln -s libtinfo.so libtermcap.so.2
# confirm perms are set correctly
chown -R :users /windowsVM && chmod -R 775 /windowsVM
chown -R :users /centosVM && chmod -R 775 /centosVM
# swap to console 1
chvt 1

Explicação das seções principais

  • Cabeçalho (text, install, cdrom): define modo de instalação e origem do instalador.
  • Localização e teclado: lang e keyboard configuram idioma e mapa de teclado.
  • Usuários e senha root: rootpw e user criam contas; no exemplo a senha root já está criptografada.
  • Particionamento: clearpart, ignoredisk, part, volgroup e logvol formam o layout de discos e LVM.
  • Bootloader: define o carregador (MBR) e parâmetros do kernel.
  • Rede: network com DHCP no eth0 — ajuste conforme sua interface ou configuração estática.
  • Pacotes: bloco %packages lista grupos (@) e pacotes individuais para instalar.
  • Scripts pós-instalação: bloco %post executa shell scripts no sistema instalado — ideal para configurar repositórios, baixar imagens e ativar serviços.

Dicas práticas de personalização

  • Remova usuários, senhas e dados sensíveis antes de reaplicar o arquivo em outro ambiente.
  • Use chaves SSH predefinidas via %post para configurar acesso seguro automaticamente.
  • Para hardware variado, evite fixar nomes de drives (sda) — prefira identificadores UUID ou regras udev quando possível.
  • Teste o arquivo em uma VM antes de rodar em hardware físico; documente as mudanças e versões de repositório.

Quando não usar Kickstart (contraexemplos)

  • Imagens idênticas e imutáveis para hardware muito específico: ferramentas de clonagem por bloco podem ser mais rápidas.
  • Quando a instalação precisa de interação manual para aceitar licenças (ex.: instaladores proprietários que exigem clique no GUI).
  • Cenários onde o suporte a drivers muito específicos exige uma imagem preparada manualmente.

Checklist de implantação (papéis)

  • Administrador:
    • Revisar e remover credenciais hardcoded.
    • Atualizar repositórios e testar yum/dnf localmente.
    • Verificar políticas SELinux/Firewall após a instalação.
  • Operações / Implantação:
    • Testar Kickstart em máquina virtual e registrar tempo médio de instalação.
    • Validar scripts %post para erros e logs (/root/my-post-log).
  • Teste / QA:
    • Confirmar que serviços críticos (SSH, X, drivers) iniciam corretamente.
    • Verificar permissões de diretórios criados por scripts (ex.: /windowsVM, /centosVM).

Boas práticas de scripts %post

  • Redirecione logs (ex.: –log=/root/my-post-log) para depuração.
  • Use checagens de erro (set -e) quando necessário.
  • Evite senhas em texto claro; prefira tokens ou repositórios seguros.
  • Não dependa de dispositivos com nomes fixos sem validação.

Notas importantes

  • Alguns componentes (como VMWare Player) exigem passos manuais devido a licenciamento e cliques de aceite — não é possível automatizar tudo.
  • Nunca publique arquivos Kickstart com senhas ou chaves reais em repositórios públicos.

Resumo

Kickstart é uma ferramenta poderosa para automatizar instalações de sistemas baseados em Red Hat. Com um arquivo bem estruturado e um bloco %post bem escrito você consegue instalar pacotes, configurar serviços e preparar sistemas prontos para uso em múltiplos hardwares. Teste sempre em VM, remova credenciais sensíveis e documente suas alterações.

Fonte: Este guia foi fornecido por www.netzensolutions.com. Comentários e dúvidas podem ser deixados para que eu responda o mais rápido possível.

Autor
Edição

Materiais semelhantes

Excluir histórico do Facebook — Guia completo
Privacidade

Excluir histórico do Facebook — Guia completo

Baixar vídeos do JW Player — Guia prático
Tutoriais

Baixar vídeos do JW Player — Guia prático

Configurar Ausência no Microsoft Teams
Guias

Configurar Ausência no Microsoft Teams

Ler mensagens excluídas no WhatsApp
WhatsApp

Ler mensagens excluídas no WhatsApp

Recuperar fotos apagadas do iCloud
Recuperação de Dados

Recuperar fotos apagadas do iCloud

Automatizar instalação com Kickstart no CentOS/Fedora
Linux

Automatizar instalação com Kickstart no CentOS/Fedora