Facter
En Puppet, Facter es una herramienta de descubrimiento automático que se utiliza para recopilar información detallada del sistema, como los "hechos" (facts) del sistema operativo, la red, el hardware y el software instalado. Facter se ejecuta automáticamente en cada nodo gestionado por Puppet y recopila los hechos del sistema, que luego se pueden utilizar en los manifestos y módulos de Puppet para personalizar la configuración de forma dinámica.
Facter está escrito en Ruby y utiliza métodos específicos de cada plataforma para recopilar información detallada del sistema. Por ejemplo, en sistemas Unix/Linux, Facter utiliza comandos como "uname", "ifconfig" y "cat" para obtener información del sistema, mientras que en sistemas Windows utiliza el Registro de Windows y la línea de comandos de Windows para obtener información similar.
Facter se integra directamente con Puppet y proporciona una API que permite a los módulos de Puppet acceder a los hechos del sistema recopilados por Facter. Además, los administradores de sistemas pueden utilizar Facter para realizar pruebas de configuración en un nodo determinado y para solucionar problemas de configuración de Puppet.
Facts
En Puppet, los "facts" (hechos) son información detallada del sistema que se recopila mediante un proceso de descubrimiento automático. Estos hechos incluyen datos como el sistema operativo, la versión del kernel, la dirección IP, la cantidad de memoria RAM disponible y la arquitectura del procesador, entre otros detalles.
Los hechos son una parte esencial del funcionamiento de Puppet, ya que permiten que los módulos y manifestos de Puppet se adapten automáticamente al sistema en el que se están ejecutando. Por ejemplo, un módulo puede utilizar los hechos para instalar automáticamente los paquetes de software correctos en función del sistema operativo o la arquitectura del procesador.
Puppet recopila los hechos automáticamente a través de una variedad de métodos, incluyendo la ejecución de comandos en el sistema, la lectura de archivos de configuración y la interrogación de API de servicios de nube. Los hechos se almacenan en una base de datos local y se pueden utilizar para tomar decisiones de configuración y despliegue automatizadas.
Ejemplo
$ip_address = $facts['networking']['ip']
file { '/home/vagrant/archivo.txt':
ensure => file,
content => "El valor de la ip: ${ip_address}\n",
}