geerlingguy.packer_rhel
Rol de Ansible: Configuración de Packer para RHEL/CentOS en Vagrant VirtualBox
Este rol configura RHEL/CentOS (ya sea instalación mínima o completa) en preparación para ser empaquetado como parte de un archivo .box para el despliegue en Vagrant/VirtualBox utilizando Packer.
Es posible que el rol se haga más flexible en el futuro, para funcionar con otros sabores de Linux y/o otros creadores de Packer además de VirtualBox, pero actualmente solo me estoy enfocando en VirtualBox, ya que el principal caso de uso en este momento son las máquinas virtuales para desarrolladores.
Requisitos
Antes de ejecutar este rol a través de Packer, necesitas asegurarte de que Ansible esté instalado mediante un provisionador de shell, y que la configuración preliminar de la máquina virtual (como agregar un usuario vagrant al grupo apropiado y al archivo sudoers) esté completa, generalmente usando un archivo de instalación Kickstart (por ejemplo, ks.cfg
) con Packer. Un ejemplo de arreglo de provisionadores para tu plantilla .json de Packer podría ser algo como:
"provisioners": [
{
"type": "shell",
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E bash '{{.Path}}'",
"script": "scripts/ansible.sh"
},
{
"type": "ansible-local",
"playbook_file": "ansible/main.yml",
"role_paths": [
"/Users/jgeerling/Dropbox/VMs/roles/geerlingguy.packer_rhel",
]
}
],
Los archivos deben contener, como mínimo:
scripts/ansible.sh:
#!/bin/bash -eux
# Agregar el repositorio EPEL, e instalar Ansible.
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install ansible python-setuptools
ansible/main.yml:
---
- hosts: all
sudo: yes
gather_facts: yes
roles:
- geerlingguy.packer_rhel
También podrías querer agregar otro provisionador de shell para ejecutar limpieza, borrando espacio libre usando dd
, pero esto no es necesario (solo ahorrará un poco de espacio en disco en el archivo .box producido por Packer).
Si deseas agregar más roles, asegúrate de incluirlos en el arreglo role_paths
en el archivo .json de la plantilla, y luego puedes incluirlos en main.yml
como lo harías normalmente. La configuración de Ansible se ejecutará a través de una conexión local dentro del entorno Linux, por lo que todos los archivos relevantes deben copiarse en la máquina virtual; la configuración para esto está en el archivo .json de la plantilla. Lee más: Provisionador Ansible Local.
Variables del Rol
Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml
):
packer_rhel_libselinux_package: libselinux-python
El paquete python de libselinux que se debe instalar. Esto se reemplaza para RHEL 8 por python3-libselinux
.
Dependencias
Ninguna.
Ejemplo de Playbook
- hosts: all
roles:
- { role: geerlingguy.packer_rhel }
Licencia
MIT / BSD
Información del Autor
Este rol fue creado en 2014 por Jeff Geerling, autor de Ansible for DevOps.
RedHat/CentOS configuration for Packer.
ansible-galaxy install geerlingguy.packer_rhel