Caso precisem automatizar a instalação do linux (em alguns casos já vimos demorar quase um dia para instalar o linux e customizar tudo de segurança+clientes de monitoração e backup, etc.) uma boa solução é o Anaconda KickStart, ou Anaconda KS.

Esse Post foi feito baseado no CentOS 6.

Quando você termina de instalar um linux, é criado um arquivo /root/anaconda-ks.cfg com a configuração que foi utilizada, com esse arquivo você é possível REPETIR a mesma instalação ou ainda customizar um pouco o arquivo para fazer mais coisas.

Gerando uma nova mídia automatizada:

  • Copie o arquivo /root/anaconda-ks.cfg , edite conforme sua necessidade e renomeie ele para ks.cfg
  • Coloque o arquivo ks.cfg na RAIZ do CD do linux (eu usei o ultraISO para fazer isso sem perder o boot), se quiser colocar mais pacotes para instalar, crie uma pasta e mande seu ks.cfg usar essa pasta e instalar o que você quer (como um script bash mesmo)
  • Ao dar boot com esse CD de boot, na PRIMEIRA tela da instalação (não aperte ENTER ainda) digite: linux ks=cdrom . Pressione ENTER e aguarde, ele vai fazer tudo sozinho.
  • Você pode definir que é para usar sempre esse script, para isso altere o arquivo isolinux\isolinux.cfg do CD e mudar o boot default, trocando de linux para linux ks=cdrom, mas… cuidado, lembre-se que uma mídia automática dessas poderá (por exemplo) sempre formatar o servidor sem perguntar nada antes.

Abaixo dois exemplos de arquivos, apenas para ilustrar algumas possibilidades (no primeiro arquivo considerando que eu criei uma pasta pacotesks no CD de instalação com alguns arquivos):

# Defina install ou upgrade.
install

#Defina de onde vai estar seu repositório:
# cdrom – Instala a partir de um cdrom ou dvd
# harddrive – instala a partir do disco rígido. Podendo ser
# uma partição ou o diretório:
# Para partição: harddrive –partition=
# Para diretório: harddrive –partition= –dir=/diretorio/instalacao
# nfs – instala a partir de um servidor NFS
# Para servidor: nfs –server=
# Para dir no server: nfs –server= –dir=/diretorio/instalacao
# url – Instala a partir de um servidor remoto FTP ou HTTP
# Para http: url –url http:///
# Para ftp: url –url ftp://:@/
cdrom

# Lingua a ser instalada como padrão
lang en_US.UTF-8

# Layout do teclado
keyboard br-abnt2

# Configurações de rede
# –bootproto= – pode ser dhcp ou static
network –device eth0 –bootproto dhcp –hostname localhost.localdomain

# Configuração multipath
# multipath –name= –device= –rule=

# Senha do root
# Voce pode deixar a senha em modo texto
# ou usar o atributo –iscrypted e informar uma senha encriptada

# (voce pode copiar a senha encriptada de um servidor já instalado)
rootpw –iscrypted $1$fLgu3DsY$P5INyBuXU85BX1W0.oc8e.

# Configuração do firewall
# sintaxe: firewall [–trust=] [–port=]
# nivel de segurança pode ser: –high (alto), –medium (medio), –disabled
# (desabilitado)
# –trust – você adciona os dispositivos que são confiaveis e que os
# pacotes que vem deles irão passar direto pelo firewall.
# ex.: –trust eth0
# para definir mais de um (não use virgulas ou coisas do tipo)
# faça assim: –trust eth0 –trust eth1
# – selecione que tipo de protocolo é permitido:
# –dhcp –ssh –telnet –smtp –http –ftp
# –port= – Você pode especificar de quais portas podem passar
# usando protocolos ou o número da porta específica.
# ex.: Permitir acesso IMAP pelo seu firewall, use imap:tcp.
# ex².: Permitir acesso UDP na porta 1234, use 1234:udp
# Você pode especificar várias portas separadas por VÍRGULA
firewall –disabled

# Configuração do firstboot, pode ser:
# –enable
# disabled
# –reconfig (esse abre o SETUP para que defina IP, nome, etc).
firstboot –reconfig

# Configurar as opções de autenticação
# –enablemd5 : Use encriptação md5 para senhas de usuários.
# –enablenis : Liga o suporte a NIS. O domínio quase sempre tem que

#ser especificado manualmente com –nisdomain ou –nisserver=
# –useshadow ou –enableshadow : Usa senhas shadow.
# –enableldap : Suporte LDAP (em /etc/nsswitch.conf), permitindo captar
# informação sobre usuários (UIDs, diretórios home, shells, etc.)
# de um diretório LDAP.

#Para usar essa opção você tem que instalar o pacote nss_ldap.
# –enableldapauth : Usa LDAP como método de autenticação.
# –ldapserver= Use essa opção para especificar o servidor LDAP que você usará.
# –enableldaptls
authconfig –enableshadow –enablemd5

# Configurar o selinux
# –disabled : Desabilita o selinux
# –enforcing : Habilita o selinux
# –permissive : Habilita o selinux APENAS para log
selinux –disabled

# Configurar serviços (services [–disabled=] [–enabled=] )
# –disabled= : Desabilita serviços (separando os serviços por ,)
# –enabled= : Habilita os serviços (separando os serviços por ,)
services –disabled=cups,kudzu,yum-updatesd –enabled=acpid,anacron,atd,auditd,autofs,avahi-daemon,crond,gpm,multipathd,network,ntpd,smb,snmpd,sshd,syslog,winbind,xinetd

# Fuso horario. A opção –utc especifica que a hora é baseada no UTC
timezone –utc America/Sao_Paulo

# Local de onde vai fazer o boot
# –append= : Especifica parametros do kernel. Para especificar vários
# use apenas espaço entre eles.Exemplo:
# bootloader –location=mbr –append=”hdd=ide-scsi ide=nodma”
# –location= :Especifica onde o boot será gravado:
# mbr (padrão)
# partition (na partição que contem o kernel), ou
# none (não instala o gerenciador de boot).
# –password= : Define a senha do GRUB.
# –md5pass= : Senha, só que encriptada
# –useLilo : Para usar o LILO no lugar do GRUB (que é padrão)
bootloader –location=mbr –driveorder=sda

# Configuração de particionamento
–linux : Apaga todas as partições linux.
–all : Apaga todas as partições.
–drives= : Apaga partições do drive escolhido.
–initlabel : Para que o sistema que está sendo instalado seja o padrão.
clearpart –all –initlabel

# Para limpar todas as partições que são tidas como inválidas
zerombr yes

# Como será criadas as partições:
# –fstype para definir o tipo de partição
# –size para definir o tamanho
# –grow para indicar que a partição deve ocupar todo o espaço disponivel após
# as outras estarem em seu devido lugar.
part /boot –fstype ext3 –size=500
part /var –fstype ext3 –size=10800
part / –fstype ext3 –size=10000
part /usr –fstype ext3 –size=8000
part swap –size=8000
part /tmp –fstype ext3 –size=2048
part /home –fstype ext3 –size=1024
part /opt –fstype ext3 –size=500

# Aqui fica a lista de pacotes que você quer que instale.
# Os que têm @ indica um grupo de pacotes.
# Os que possuem “-” são pacotes que serão REMOVIDOS.
%packages
@admin-tools
@base
@core
@editors
@legacy-network-server
@server-cfg
@system-tools
keyutils
trousers
fipscheck
device-mapper-multipath
perl-Convert-ASN1
imake
gcc44
emacs
rsh-server
audit
net-snmp-utils
-sabayon
-authconfig-gtk
-system-config-soundcard
-system-config-network
-system-config-keyboard
-system-config-users
-system-config-language
-system-config-date
-system-config-kdump
-system-config-rootpassword
-nss_ldap
-krb5-workstation
-sendmail
-pam_smb
-lockdev-devel
-newt-perl
-kudzu-devel
-openldap-devel
-slang-devel
-db4-devel
-gmp-devel
-python-devel
-curl-devel
-rpm-devel

# embaixo do %pre você coloca os comandos para serem executados
# ANTES de começar a instalação. (ex: Perguntar qual será o IP)
# IMPORTANTE1: se voce colocar alguma linha em branco, ou comentada,
# o script simplesmente PARA e não funciona, cuidado.
# IMPORTANTE2: voce pode querer usar essas variaveis:
# /mnt/source : o cd de instalacao
# /mnt/sysimage : o seu disco (do servidor)
%pre

# Embaixo do %post você coloca os comandos para serem executados assim que a
# instalação for terminada. Dizem que para editar arquivos que
# voce acabou de instalar, precisa do parametro –nochroot (%post –nochroot)
# mas eu nao precisei fazer isso
# IMPORTANTE1: leia o IMPORTANTE1 do %pre
# IMPORTANTE2: para conseguir usar os arquivos do CD
# eu criei uma pasta cdrom dentro do /mnt e mapiei
# MESMO ASSIM so funcionou pq uso VMWARE e SEI que o cdrom e o UNICO
# dispositivo ide (hda, hdb, hdc ou hdd)
%post
mkdir -p /mnt/cdrom
mount /dev/hd* /mnt/cdrom
cp /mnt/cdrom/pacotesks/sshd_config /etc/ssh/
cp /mnt/cdrom/pacotesks/ntp.conf /etc/ntp.conf
touch /etc/ntp.drift
cp /mnt/cdrom/pacotesks/snmpd.conf /etc/snmp/snmpd.conf
cp /mnt/cdrom/pacotesks/multipath.conf /etc/multipath.conf
rpm -ivh /mnt/cdrom/pacotesks/netapp_linux_host_utilities-5-3.i386.rpm
chown root.root /etc/syslog.conf /var/log/messages /var/log/secure /var/log/faillog /var/log/wtmp /var/log/maillog /var/log/cron
chmod 660 /etc/syslog.conf /var/log/messages /var/log/secure /var/log/faillog /var/log/wtmp /var/log/maillog /var/log/cron
chown root.root /dev/mem
chmod 640 /dev/mem
chown root.root /etc/rc.d
chmod 750 /etc/rc.d
chmod 1777 /tmp
%end

Nesse segundo exemplo, a instalação será feita toda em modo texto. Antes de iniciar a instalação vai abrir uma tela perguntando as configurações de rede (e alterar essas informações no próprio arquivo ks, antes de instalar.

install
reboot
cdrom
lang en_US.UTF-8
keyboard br-abnt2

#configuracoes de rede
#VARIAVEL_PARA_O_PRE_CONFIGURAR_A_REDE

#Senha do root
#PRE_ROOT_PWD

firewall –disabled
firstboot –disabled
authconfig –enableshadow –enablemd5
selinux –disabled
services –disabled=multipathd –enabled=anacron,auditd,autofs,crond,network,ntpd,snmpd,sshd
timezone –utc America/Sao_Paulo
bootloader –location=mbr

#sem interface grafica
text
skipx

clearpart –all
part swap –size=8192
part /boot –fstype=ext3 –size=500
part / –fstype=ext3 –grow –size=1

%packages
@base
@core
net-snmp
net-snmp-libs
net-snmp-devel
net-snmp-utils
pango
antlr
cups-libs
xinetd
-acpid
-microcode_ctl
-rsyslog
-httpd
-yum-updatesd
-device-mapper-multipath
-conman
-dnsmasq

%pre
exec < /dev/tty6 > /dev/tty6 2> /dev/tty6
chvt 6
while [ x”$answer” != “xy” ] && [ x”$answer” != “xY” ];do
clear
echo “”
echo “Configuracoes de ambiente: “
echo “————————————————-“
echo “”
echo -n “Informe o hostname: “;read pre_hostname
echo -n “Informe o dominio: “;read pre_domain
echo -n “Informe o ip: “;read pre_ip
echo -n “Informe a marcara: “;read pre_netmask
echo -n “Informe o default gw: “;read pre_gateway
echo -n “Informe o dns server1: “;read pre_srvdns1
echo -n “Informe o dns server2: “;read pre_srvdns2
echo “”
echo -n “Informe a senha do root: “;read pre_root_pwd
clear
echo
echo “Configuracoes de ambiente: “
echo “————————————————-“
echo “”
echo As variaveis definidas foram:
echo “”
echo -e “\thostname: $pre_hostname”
echo -e “\tdominio: $pre_domain”
echo -e “\tip: $pre_ip”
echo -e “\tmascara: $pre_netmask”
echo -e “\tdefault gw: $pre_gateway”
echo -e “\tdns server1: $pre_srvdns1”
echo -e “\tdns server2: $pre_srvdns2”
echo “”
echo -e “\tsenha do root: $pre_root_pwd”
echo “”
echo -n “De acordo? [y/n] “
read answer
done
sed -i “s/#VARIAVEL_PARA_O_PRE_CONFIGURAR_A_REDE/network –onboot yes –device eth0 –bootproto static –ip $pre_ip –netmask $pre_netmask –gateway $pre_gateway –nameserver $pre_srvdns1,$pre_srvdns2 –hostname $pre_hostname.$pre_domain –noipv6/g” /tmp/ks.cfg
sed -i “s/#PRE_ROOT_PWD/rootpw $pre_root_pwd/g” /tmp/ks.cfg
chvt 1
exec < /dev/tty1 > /dev/tty1 2> /dev/tty1

%post
echo ” —————————————————————– “
echo ” Configurando o motd “
echo ” —————————————————————– “
echo “” > /etc/motd
echo ” ATENCAO” >> /etc/motd
echo “” >> /etc/motd
echo ” AREA RESTRITA” >> /etc/motd
echo “” >> /etc/motd
echo “” >> /etc/motd
echo ” Este servidor e EXCLUSIVO para pessoas autorizadas.” >> /etc/motd
echo ” ” >> /etc/motd
echo ” Se voce acessou por engano, entre em contato imediatamente com a equipe” >> /etc/motd
echo ” de rede atraves de e-mail: $EMAILADMINISTRADOR ” >> /etc/motd
echo “” >> /etc/motd
echo ” A partir daqui esteja ciente de que esta acessando um local restrito, ” >> /etc/motd
echo ” com informacoes sigilosas.” >> /etc/motd
echo “” >> /etc/motd
echo ” Qualquer uso inapropriado estara sujeito as acoes cabiveis em lei.” >> /etc/motd
echo “” >> /etc/motd
echo “—————————————————————–“
echo ” Limpando arquivos temporarios “
echo ” —————————————————————– “
rm -rf /tmp/*
%end

Fontes/Referências

http://fedoraproject.org/wiki/Anaconda/Kickstart
http://www.vivaolinux.com.br/artigo/Instalacao-Kickstart-(revisado)

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria