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.