¿Tienes que actualizar decenas de servidores VIOS y no sabes por dónde empezar? Con Ansible y este tutorial, podrás hacerlo sin morir en el intento. ¡Empecemos!
¿Qué necesitas?
- Un backup reciente (usa
viosbromksysb) - Un disco adicional en cada VIOS (ej:
hdisk1) - La imagen
.mksysbde la nueva versión en un servidor NFS - Ansible configurado en tu máquina de control
Pasos para la actualización masiva
1. Verificar versión actual
- name: Verificar versión del VIOS
ansible.builtin.command:
cmd: /usr/ios/cli/ioscli ioslevel
register: ioslevel
changed_when: false
- name: Abortar si ya está actualizado
when: "ioslevel.stdout is version(target_level, '>=')"
block:
- debug:
msg: "¡Ya tienes la versión {{ ioslevel.stdout }}! No es necesario actualizar."
- meta: end_play
2. Preparar disco de actualización
- name: Detectar discos disponibles
setup:
gather_subset: devices
- name: Validar estado del disco
meta: end_play
when: ansible_facts.devices[alt_hdisk].state != 'Available'
- name: Limpiar disco
command: "chpv -C {{ alt_hdisk }}"
3. Copiar archivos clave
- name: Copiar lista de archivos a preservar
copy:
src: filelist
dest: /tmp/filelist
- name: Copiar script post-instalación
copy:
src: postupgrade.sh
dest: /tmp/postupgrade.sh
mode: "0755"
Ejemplo de Script Post-Upgrade
#!/bin/ksh
/usr/ios/cli/ioscli license -accept
/usr/ios/cli/ioscli rules -o modify -t disk/fcp/mpioosdisk -a reserve_policy=no_reserve
mkuser ansible
chuser su=true root
echo 'ansible:abc123' | chpasswd -c
mkdir -p /home/ansible/.ssh
echo 'ssh-rsa TU_CLAVE_PUBLICA' >/home/ansible/.ssh/authorized_keys
4. Montar imagen de actualización
- name: Montar NFS con imagen mksysb
ibm.power_aix.mount:
state: mount
node: "{{ nfs_server }}"
mount_dir: "{{ nfs_repo }}"
mount_over_dir: /mnt
- name: Verificar imagen
stat:
path: "/mnt/{{ mksysb }}"
register: mksysb_stat
- name: Abortar si falta la imagen
when: not mksysb_stat.stat.exists
block:
- debug:
msg: "¡Imagen no encontrada! Verifica la ruta {{ nfs_server }}:{{ nfs_repo }}/{{ mksysb }}"
- meta: end_play
5. Iniciar actualización
- name: Ejecutar viosupgrade
ibm.power_vios.viosupgrade:
cluster: false
filename: /tmp/filelist
post_install_binary: /tmp/postupgrade.sh
image_file: "/mnt/{{ mksysb }}"
mksysb_install_disks: "{{ alt_hdisk }}"
wait_reboot: true
6. Verificar finalización
- name: Esperar reinicio
wait_for_connection:
delay: 300
timeout: 2400
- name: Confirmar éxito
wait_for:
path: /home/ios/logs/viosupg_status.log
search_regex: "COMPLETED"
Consejos finales
- Si usas Shared Storage Pools, cambia
cluster: trueen el paso 5 - Prueba primero con 2-3 servidores antes del despliegue masivo
- Revisa los logs en
/home/ios/logs/si algo falla
