geerlingguy.packer_rhel

Rol de Ansible: Configuración de Packer para RHEL/CentOS en Vagrant VirtualBox

CI

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.

Instalar
ansible-galaxy install geerlingguy.packer_rhel
Licencia
mit
Descargas
10k
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns