Este documento presenta una introducción al lenguaje de configuración de Puppet. Explica conceptos clave como manifiestos, catálogos, nodos, módulos, clases, recursos y etiquetas. Detalla cómo se definen y declaran estos elementos para modelar y gestionar configuraciones de sistemas de forma declarativa con Puppet.
Squid Proxy Server on RHEL introduces Squid, a free and open-source proxy server software that provides caching, authentication, bandwidth management, and web filtering capabilities. It discusses configuring Squid on Red Hat Linux including installing packages, editing configuration files, starting services, and testing the proxy functionality. Browser and client settings are also covered to allow systems to route traffic through the Squid proxy server.
This document discusses configuring and implementing a MariaDB Galera cluster for high availability on 3 Ubuntu servers. It provides steps to install MariaDB with Galera patches, configure the basic Galera settings, and start the cluster across the nodes. Key aspects covered include state transfers methods, Galera architecture, and important status variables for monitoring the cluster.
This Difference Being a Leader and Being a Manager Ryan Bisanz
What does it take to be a leader? What does it take to be a manager? Is there a difference between the two? What makes a someone a leader over a manager? Ryan Bisanz discusses the difference between being a leader and a manager.
This document provides an overview of SQL and relational database concepts. It discusses how SQL is used to interact with relational database management systems like MySQL, including inserting and querying data. The summary also provides a brief history of SQL and explains some basic SQL syntax. Examples are given to demonstrate creating tables and relating data between tables to represent real-world entities and their relationships.
The document discusses various aspects of leadership including definitions, types of leaders, leadership styles, common leadership activities, and traits of effective leaders. It defines leadership as "organizing a group of people to achieve a common goal" and discusses different styles such as autocratic, bureaucratic, charismatic, democratic, laissez-faire, people-oriented, servant, task-oriented, transactional, and transformational leadership. It also covers common leadership activities like planning, organizing, staffing, directing work, and controlling.
This document discusses five main leadership styles: transactional leadership, autocratic leadership, democratic/participative leadership, laissez-faire leadership, and transformational leadership. It provides descriptions of each style, including pros and cons. The key takeaways are that different leadership styles are more effective depending on the situation, and that understanding different styles helps leaders adapt their approach based on the people they influence.
In his previous talk, Paul talked about getting your system to work with SELinux. This involved setting the security on your files and directories so that they worked with SELinux. However, many people have customised their Linux installs and want SELinux to do what they say, not the other way around. Sysadmins in particular are not 'run of the mill' users, and they have different requirements to what typically comes out of the box. Situations such as serving web pages from NFS shares or non-standard directories, or installing applications in custom locations, need specialised configuration of SELinux in order to make it work with your needs.
This talk will deal with those situations. Fortunately for Sysadmins, much of the work in developing SELinux policies for Linux has focussed on their requirements. Paul will show you a few of the things behind
the scenes that make your job as a Sysadmin much easier and safer with SELinux.
Squid Proxy Server on RHEL introduces Squid, a free and open-source proxy server software that provides caching, authentication, bandwidth management, and web filtering capabilities. It discusses configuring Squid on Red Hat Linux including installing packages, editing configuration files, starting services, and testing the proxy functionality. Browser and client settings are also covered to allow systems to route traffic through the Squid proxy server.
This document discusses configuring and implementing a MariaDB Galera cluster for high availability on 3 Ubuntu servers. It provides steps to install MariaDB with Galera patches, configure the basic Galera settings, and start the cluster across the nodes. Key aspects covered include state transfers methods, Galera architecture, and important status variables for monitoring the cluster.
This Difference Being a Leader and Being a Manager Ryan Bisanz
What does it take to be a leader? What does it take to be a manager? Is there a difference between the two? What makes a someone a leader over a manager? Ryan Bisanz discusses the difference between being a leader and a manager.
This document provides an overview of SQL and relational database concepts. It discusses how SQL is used to interact with relational database management systems like MySQL, including inserting and querying data. The summary also provides a brief history of SQL and explains some basic SQL syntax. Examples are given to demonstrate creating tables and relating data between tables to represent real-world entities and their relationships.
The document discusses various aspects of leadership including definitions, types of leaders, leadership styles, common leadership activities, and traits of effective leaders. It defines leadership as "organizing a group of people to achieve a common goal" and discusses different styles such as autocratic, bureaucratic, charismatic, democratic, laissez-faire, people-oriented, servant, task-oriented, transactional, and transformational leadership. It also covers common leadership activities like planning, organizing, staffing, directing work, and controlling.
This document discusses five main leadership styles: transactional leadership, autocratic leadership, democratic/participative leadership, laissez-faire leadership, and transformational leadership. It provides descriptions of each style, including pros and cons. The key takeaways are that different leadership styles are more effective depending on the situation, and that understanding different styles helps leaders adapt their approach based on the people they influence.
In his previous talk, Paul talked about getting your system to work with SELinux. This involved setting the security on your files and directories so that they worked with SELinux. However, many people have customised their Linux installs and want SELinux to do what they say, not the other way around. Sysadmins in particular are not 'run of the mill' users, and they have different requirements to what typically comes out of the box. Situations such as serving web pages from NFS shares or non-standard directories, or installing applications in custom locations, need specialised configuration of SELinux in order to make it work with your needs.
This talk will deal with those situations. Fortunately for Sysadmins, much of the work in developing SELinux policies for Linux has focussed on their requirements. Paul will show you a few of the things behind
the scenes that make your job as a Sysadmin much easier and safer with SELinux.
Entornos de desarrollo para symfony2 con vagrant y puppetVicent Soria Durá
Vagrant y Puppet son herramientas que permiten crear entornos de desarrollo portables y reproducibles mediante la virtualización y la automatización de la configuración. Vagrant usa máquinas virtuales para ejecutar el mismo sistema operativo y software en diferentes equipos. Puppet automatiza y asegura que la configuración de los sistemas sea consistente mediante manifests que definen los recursos y su estado deseado. Juntos, Vagrant y Puppet ayudan a los desarrolladores a tener entornos idénticos en local y producción.
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y PuppetRichard Moya
Este documento describe el uso de las herramientas Vagrant y Puppet para la virtualización y provisionamiento de entornos de desarrollo. Explica cómo Vagrant permite crear máquinas virtuales rápidamente a partir de imágenes predefinidas y cómo Puppet gestiona de forma declarativa la configuración de dichas máquinas mediante la instalación de paquetes, módulos y la configuración de archivos y servicios. También presenta Puphpet, una herramienta gráfica que facilita la generación del archivo de configuración de Vag
Este documento proporciona una guía práctica sobre el uso de Vagrant y Docker. Explica qué son Vagrant, Docker y VirtualBox, e incluye instrucciones detalladas sobre cómo instalarlos y usar sus comandos y características básicas como levantar máquinas virtuales, compartir carpetas, publicar puertos y crear e implementar contenedores de Docker personalizados.
Este documento describe la división tradicional entre Desarrollo y Operaciones y cómo esto puede generar problemas. Propone que DevOps ayuda a superar esta división promoviendo una cultura de colaboración, procesos, métricas y herramientas compartidas entre ambas áreas. Con DevOps, Desarrollo y Operaciones trabajan como un solo equipo para entregar software de valor de forma rápida y continua.
Dev ops infraestructura agil con open sourcescrumecuador
Este documento presenta una introducción a DevOps y cómo habilitar una infraestructura ágil con open source. Explica que DevOps se centra en la comunicación y colaboración entre desarrolladores y operaciones. También describe herramientas como Puppet, Ansible, Docker y prácticas como automatización, control de versiones e infraestructura como código para habilitar entornos de desarrollo estandarizados y despliegues continuos.
Charla sobre gestión de servidores con Puppet realizada en los cursos del GUL de la Universidad Carlos III de Madrid por Javier Turégano.
La charla se divide principalmente en 3 partes: describir el problema que encaramos cuando intentamos administrar el creciente número de servidores que requiere cualquier entidad que consuma servicios de IT, algunas de las posibles soluciones que podemos encontrar y qué características debe tener una solución a este problema y por último cómo Puppet puede ser esta solución y una pequeña introducción a cómo funciona.
El documento describe cómo Vagrant permite virtualizar entornos de desarrollo de manera sencilla. Vagrant permite crear, iniciar, detener y eliminar máquinas virtuales de forma fácil sin importar el proveedor de virtualización subyacente. El documento muestra los pasos básicos para configurar un entorno de desarrollo virtualizado con Vagrant en menos de 3 oraciones.
This document provides summaries of 9 apps that can enhance one's smartphone or computer experience: Evernote, AdGuard, 500 Firepaper, Drippler, Battery Doctor, Clean Master, QR Code Reader, Lumosity, and Photo Editor Pro. For each app, the document outlines key features and pros and cons.
Este documento trata sobre DevOps e infraestructura. Explica que DevOps no es solo automatización, sino un cambio cultural que promueve la colaboración entre desarrolladores y operaciones. También describe los beneficios de DevOps como reducción de costos, mayor velocidad e incremento de calidad, a través de la automatización del despliegue de software y la integración continua. Finalmente, resume los principales componentes de DevOps como construcción, pruebas, despliegue y monitoreo.
Uso básico de Vagrant para la creación de entornos de desarrollo.
- Introducción a Vagrant
- Accesso a las máquinas virtuales
- Varias máquinas virtuales con Vagrant
- Compartición de datos entre anfitrión y máquinas virtuales
- Empaquetado de máquinas virtuales
- Provisión de máquinas con Ansible
Breve introducción a Vagrant y definición de la gestión de configuración de los entornos desarrollo y producción, y del proceso de automatización de las infraestructuras localmente en VirtualBox y en un servidor VMware vSphere.
Introduction to Continuous integration and the differences with continuous delivery and deployment. It shows the main benefits you should expect by incorporating CI practices to your project and how to do it with Drone.
Este documento presenta una introducción al paradigma de programación orientada a objetos. Explica conceptos clave como clase, objeto, atributos, métodos, herencia y polimorfismo. También incluye ejemplos básicos en Java para ilustrar estas ideas fundamentales de la POO.
Este documento presenta una práctica de programación orientada a objetos en Java que involucra el desarrollo de un reconocedor de nombres propios. La práctica requiere diseñar clases para implementar un interfaz gráfico que permita abrir archivos de texto, reconocer y marcar nombres propios conocidos y desconocidos, y editar listas de excepciones y nombres conocidos. El documento también proporciona instrucciones para los estudiantes y tutores sobre cómo completar y evaluar la práctica.
Este documento presenta una introducción al lenguaje de programación Java. Cubre conceptos clave como clases, objetos, herencia, interfaces, paquetes y más. También explica convenciones de nomenclatura y diseño para programas Java.
Este documento trata sobre herencia y polimorfismo en programación orientada a objetos. Explica que la herencia permite que las clases hereden atributos y métodos de otras clases, lo que permite la reutilización de código. También describe tipos de herencia como simple y múltiple, y modificadores de herencia. Finalmente, introduce el concepto de polimorfismo, que permite que los objetos se comporten de manera diferente dependiendo de su tipo en tiempo de ejecución.
Este documento describe los conceptos básicos de los lenguajes orientados a objetos, incluyendo terminología como herencia, comportamiento y estado. Explica dos enfoques para la implementación de estos lenguajes: basados en clases o basados en prototipos. También resume las diferencias entre estos modelos y cómo cada uno podría implementarse.
Este documento presenta una introducción al lenguaje de programación Python. Explica que Python es un poderoso lenguaje de programación de alto nivel e interpretado que puede usarse para automatizar tareas, desarrollar aplicaciones y extender otras aplicaciones. También describe algunas de las características clave de Python como su sintaxis simple, tipado dinámico, biblioteca estándar amplia y capacidad de ser usado interactivamente.
Entornos de desarrollo para symfony2 con vagrant y puppetVicent Soria Durá
Vagrant y Puppet son herramientas que permiten crear entornos de desarrollo portables y reproducibles mediante la virtualización y la automatización de la configuración. Vagrant usa máquinas virtuales para ejecutar el mismo sistema operativo y software en diferentes equipos. Puppet automatiza y asegura que la configuración de los sistemas sea consistente mediante manifests que definen los recursos y su estado deseado. Juntos, Vagrant y Puppet ayudan a los desarrolladores a tener entornos idénticos en local y producción.
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y PuppetRichard Moya
Este documento describe el uso de las herramientas Vagrant y Puppet para la virtualización y provisionamiento de entornos de desarrollo. Explica cómo Vagrant permite crear máquinas virtuales rápidamente a partir de imágenes predefinidas y cómo Puppet gestiona de forma declarativa la configuración de dichas máquinas mediante la instalación de paquetes, módulos y la configuración de archivos y servicios. También presenta Puphpet, una herramienta gráfica que facilita la generación del archivo de configuración de Vag
Este documento proporciona una guía práctica sobre el uso de Vagrant y Docker. Explica qué son Vagrant, Docker y VirtualBox, e incluye instrucciones detalladas sobre cómo instalarlos y usar sus comandos y características básicas como levantar máquinas virtuales, compartir carpetas, publicar puertos y crear e implementar contenedores de Docker personalizados.
Este documento describe la división tradicional entre Desarrollo y Operaciones y cómo esto puede generar problemas. Propone que DevOps ayuda a superar esta división promoviendo una cultura de colaboración, procesos, métricas y herramientas compartidas entre ambas áreas. Con DevOps, Desarrollo y Operaciones trabajan como un solo equipo para entregar software de valor de forma rápida y continua.
Dev ops infraestructura agil con open sourcescrumecuador
Este documento presenta una introducción a DevOps y cómo habilitar una infraestructura ágil con open source. Explica que DevOps se centra en la comunicación y colaboración entre desarrolladores y operaciones. También describe herramientas como Puppet, Ansible, Docker y prácticas como automatización, control de versiones e infraestructura como código para habilitar entornos de desarrollo estandarizados y despliegues continuos.
Charla sobre gestión de servidores con Puppet realizada en los cursos del GUL de la Universidad Carlos III de Madrid por Javier Turégano.
La charla se divide principalmente en 3 partes: describir el problema que encaramos cuando intentamos administrar el creciente número de servidores que requiere cualquier entidad que consuma servicios de IT, algunas de las posibles soluciones que podemos encontrar y qué características debe tener una solución a este problema y por último cómo Puppet puede ser esta solución y una pequeña introducción a cómo funciona.
El documento describe cómo Vagrant permite virtualizar entornos de desarrollo de manera sencilla. Vagrant permite crear, iniciar, detener y eliminar máquinas virtuales de forma fácil sin importar el proveedor de virtualización subyacente. El documento muestra los pasos básicos para configurar un entorno de desarrollo virtualizado con Vagrant en menos de 3 oraciones.
This document provides summaries of 9 apps that can enhance one's smartphone or computer experience: Evernote, AdGuard, 500 Firepaper, Drippler, Battery Doctor, Clean Master, QR Code Reader, Lumosity, and Photo Editor Pro. For each app, the document outlines key features and pros and cons.
Este documento trata sobre DevOps e infraestructura. Explica que DevOps no es solo automatización, sino un cambio cultural que promueve la colaboración entre desarrolladores y operaciones. También describe los beneficios de DevOps como reducción de costos, mayor velocidad e incremento de calidad, a través de la automatización del despliegue de software y la integración continua. Finalmente, resume los principales componentes de DevOps como construcción, pruebas, despliegue y monitoreo.
Uso básico de Vagrant para la creación de entornos de desarrollo.
- Introducción a Vagrant
- Accesso a las máquinas virtuales
- Varias máquinas virtuales con Vagrant
- Compartición de datos entre anfitrión y máquinas virtuales
- Empaquetado de máquinas virtuales
- Provisión de máquinas con Ansible
Breve introducción a Vagrant y definición de la gestión de configuración de los entornos desarrollo y producción, y del proceso de automatización de las infraestructuras localmente en VirtualBox y en un servidor VMware vSphere.
Introduction to Continuous integration and the differences with continuous delivery and deployment. It shows the main benefits you should expect by incorporating CI practices to your project and how to do it with Drone.
Este documento presenta una introducción al paradigma de programación orientada a objetos. Explica conceptos clave como clase, objeto, atributos, métodos, herencia y polimorfismo. También incluye ejemplos básicos en Java para ilustrar estas ideas fundamentales de la POO.
Este documento presenta una práctica de programación orientada a objetos en Java que involucra el desarrollo de un reconocedor de nombres propios. La práctica requiere diseñar clases para implementar un interfaz gráfico que permita abrir archivos de texto, reconocer y marcar nombres propios conocidos y desconocidos, y editar listas de excepciones y nombres conocidos. El documento también proporciona instrucciones para los estudiantes y tutores sobre cómo completar y evaluar la práctica.
Este documento presenta una introducción al lenguaje de programación Java. Cubre conceptos clave como clases, objetos, herencia, interfaces, paquetes y más. También explica convenciones de nomenclatura y diseño para programas Java.
Este documento trata sobre herencia y polimorfismo en programación orientada a objetos. Explica que la herencia permite que las clases hereden atributos y métodos de otras clases, lo que permite la reutilización de código. También describe tipos de herencia como simple y múltiple, y modificadores de herencia. Finalmente, introduce el concepto de polimorfismo, que permite que los objetos se comporten de manera diferente dependiendo de su tipo en tiempo de ejecución.
Este documento describe los conceptos básicos de los lenguajes orientados a objetos, incluyendo terminología como herencia, comportamiento y estado. Explica dos enfoques para la implementación de estos lenguajes: basados en clases o basados en prototipos. También resume las diferencias entre estos modelos y cómo cada uno podría implementarse.
Este documento presenta una introducción al lenguaje de programación Python. Explica que Python es un poderoso lenguaje de programación de alto nivel e interpretado que puede usarse para automatizar tareas, desarrollar aplicaciones y extender otras aplicaciones. También describe algunas de las características clave de Python como su sintaxis simple, tipado dinámico, biblioteca estándar amplia y capacidad de ser usado interactivamente.
Este documento proporciona una introducción al lenguaje de programación Python. Explica cómo invocar el intérprete de Python, sus características interactivas y su sintaxis sencilla. Presenta los tipos de datos básicos como números, cadenas y listas, y estructuras de control como condicionales e iteración. Finalmente, describe brevemente módulos, funciones, excepciones y clases como conceptos avanzados del lenguaje.
Objetivo: Desarrollar proyectos que resuelvan problemas sencillos de la realidad utilizando el modelamiento orientado a objetos y manejando adecuadamente las posibles excepciones a generarse.
Este documento presenta una introducción al lenguaje de programación Python. Explica que Python es un poderoso lenguaje de programación de alto nivel e interpretado que es fácil de aprender y usar para automatizar tareas, desarrollar aplicaciones y extender otras aplicaciones. También introduce algunas de las características clave de Python como sus estructuras de datos incorporadas, programación orientada a objetos, sintaxis simple y tipado dinámico.
Este documento presenta una introducción al lenguaje de programación Python. Explica que Python es un poderoso lenguaje de programación de alto nivel e interpretado que es fácil de aprender y usar para automatizar tareas, desarrollar aplicaciones y extender otras aplicaciones. También introduce algunas de las características clave de Python como sus estructuras de datos incorporadas, programación orientada a objetos, interpretación, tipado dinámico, biblioteca estándar extensa y capacidad de extensión.
El documento presenta los conceptos básicos de programación orientada a objetos en Java, incluyendo clases, objetos, métodos (constructores, accesores, mutadores), herencia y herencia múltiple a través de interfaces.
Este documento proporciona una introducción al lenguaje de programación Python. Explica cómo invocar el intérprete de Python, sus características interactivas y resume brevemente algunas de las ventajas del lenguaje como su sintaxis simple, tipos de datos de alto nivel y gran biblioteca estándar.
El documento presenta una introducción a Java, describiendo su origen e historia, sus características como lenguaje orientado a objetos, portable y seguro, y su máquina virtual que ejecuta bytecode de forma independiente de la plataforma hardware. También define conceptos clave como palabras reservadas, compilación a bytecode, API de Java y diferencias con lenguajes como C/C++.
La estructura de un archivo Java debe contener una única clase pública o interfaz, y opcionalmente importaciones y declaraciones de paquete. Una clase contiene atributos, métodos y otras clases. Para crear objetos se usa el operador new, y para acceder a sus métodos y atributos el operador punto. Las interfaces definen métodos abstractos que pueden ser implementados por clases.
Lenguajes de programación orientados a objetosDoris Aguagallo
Java es un lenguaje de programación orientado a objetos y basado en clases que permite escribir un programa una vez y ejecutarlo en cualquier dispositivo. Algunas características clave de Java incluyen su orientación a objetos, potabilidad, recolector de basura y seguridad. Eclipse es un popular entorno de desarrollo integrado usado para crear proyectos y clases de Java.
Este curso de 108 horas enseña Java 5 estándar, enfocándose en desarrollo de aplicaciones empresariales. Los estudiantes aprenderán a crear aplicaciones que usan OOP, JDBC, hilos, excepciones, y interfaces gráficas SWING. El curso requiere conocimientos básicos de programación y OOP.
Este curso de 108 horas enseña Java 5 estándar, enfocándose en desarrollo de aplicaciones empresariales. Los estudiantes aprenderán a crear aplicaciones que usan OOP, JDBC, hilos, excepciones, y interfaces gráficas SWING. El curso requiere conocimientos básicos de programación y OOP.
Este documento proporciona una guía para comenzar a crear temas en Drupal 7. Explica los conceptos básicos de PHP, HTML y CSS necesarios y recomienda herramientas de diseño gráfico. Detalla la estructura de archivos de un tema, incluyendo plantillas clave como page.tpl.php y node.tpl.php. También cubre la creación de subtemas y el uso de temas base para extender funcionalidad existente.
Centro Español de Accesibilidad cognitiva..pdfJosé María
La accesibilidad cognitiva es hacer el mundo más fácil de entender. Por ejemplo: hacer documentos fáciles de entender, diseñar páginas webs sencillas, colocar señales para no perdernos en los edificios como los hospitales, etc..
1. Dani Gutiérrez Porset
dani@f4kt.com
para el Grupo SOPRA
Vitoria-Gasteiz, Dic-2013
Curso de Puppet:Curso de Puppet:
Lenguaje de configuración (2/2)Lenguaje de configuración (2/2)
2. Curso de Puppet – Lenguaje de configuración
2
Licencia y ReferenciasLicencia y Referencias
● Autor: Dani Gutiérrez
● Licencia: Copyright
● Imágenes referenciadas o diseñadas por el autor. Logotipos y
marcas pertenecientes a sus respectivas organizaciones
● Esta presentación se ha realizado gracias al software libre
GNU/Linux, KDE, LibreOffice, Firefox, Chromium, Inkscape,
Gimp, Gwenview, Ksnapshot
● Referencias:
● Libro "Pro Puppet" de James Turnbull y Jeffrey McCune – Ed.
2011
●
http://puppetlabs.com
3. Curso de Puppet – Lenguaje de configuración
3
ÍndiceÍndice
● Resumen de elementos de configuraciones
● Manifiestos y Catálogos
● Nodos
● Módulos
● Clases. Herencia. Definición y declaración
● Recursos. Recursos por defecto. Referencias a recursos.
Dependencias entre recursos. Tipos de recursos definidos.
Tipos de recursos custom. Recursos virtuales. Recolectores de
recursos. Recursos exportados
● Etiquetas
4. Curso de Puppet – Lenguaje de configuración
4
Resumen de ElementosResumen de Elementos
para definir configuracionespara definir configuraciones
● Elementos de lenguaje:
●
Recursos: elementos básicos de configuración
●
Clases: conjuntos de recursos relacionados
●
Nodos: especificación de la configuración de cada
nodo
● Ficheros y directorios:
●
Módulos: colecciones portables de manifests
●
Ficheros: se envían a los agentes
●
Plantillas: ficheros que se usan para generar otros
ficheros
5. Curso de Puppet – Lenguaje de configuración
5
ManifiestosManifiestos
● Son ficheros de código fuente con extensión .pp
● Formato:
● Es recomendable que lleven codificación UTF8
● Saltos de línea con LF o CR LF
● Pueden incluir otros ficheros de $confdir/manifests/:
import 'nombrefichero_con_o_sin_punto_pp'
import 'carpeta/*'
6. Curso de Puppet – Lenguaje de configuración
6
CatálogosCatálogos
● Un catálogo es uno o varios manifiestos compilados.
Manifestos y catálogos contienen recursos y relaciones
● Cada catálogo es válido para un nodo
● En los agentes se quedan cacheados
● Físicamente es un documento que no tiene una
especificación de formato concreta, pero puede estar:
● En memoria, como un objeto Ruby
● En la red en formato JSON
● En el disco duro en formato YAML
7. Curso de Puppet – Lenguaje de configuración
7
NodosNodos
● El tratamiento de un host o nodo se realiza asociando código
proveniente de dos orígenes:
● De la definición del nodo
● De código externo
● El elemento nodo establece un nuevo ámbito en el que se
pueden sobreescribir variables y valores por defecto del
ámbito superior
● Un nodo puede heredar de otros nodos, de forma idéntica a las
clases, pero no se recomienda
8. Curso de Puppet – Lenguaje de configuración
8
Nodos y fichero site.ppNodos y fichero site.pp
● Definición en fichero site.pp:
● La definición de nodos ha de estar en site.pp pero desde éste se pueden
importar, ej:
import super_nodo.pp
import nodos/*.pp
● Si site.pp contiene alguna definición de nodo, entonces todos los nodos han
de poder referenciarse desde dicho fichero. Útil para este caso: default
● Aunque el nombre de un nodo se encuentre en varias definiciones, sólo se aplica un
único caso en este orden:
● Búsqueda del nombre exacto
● Primera expresión regular encontrada
● Si es un fqdn, se va eliminando cada zona desde la derecha
● Uso de la definición default
9. Curso de Puppet – Lenguaje de configuración
9
Nodos: definiciónNodos: definición
● Sintaxis:
node 'identificador' {
... # declaración de clases, variables,...
}
● Se puede definir más de un nodo: node 'nodo1','nodo2',... {
● Notas sobre el identificador:
● Suele ser el fqdn, ej: nodo1.acme.com
● Se admiten además:
– Sentencias regulares, ej: node /^wwwd+$/ {...
– default: aplica a los nodos para los que no se encuentra
identificador
10. Curso de Puppet – Lenguaje de configuración
10
MódulosMódulos
● Agrupación independiente de recursos, clases, definiciones, ficheros
y plantillas
● Todos los manifiestos pertenecen a algún nodo a excepción del
site.pp que sería el global
● Los módulos se cargan de directorios indicados en la variable de
configuración $modulepath
● Modulos de interés en https://forge.puppetlabs.com/
● Reglas sobre el nombre:
● Comienza con minúscula y puede contener minúsculas, números y _
● El nombre puede hacer referencia a espacios de nombres con ::
Ej:
espacio1::espacio2:: ... ::clase1
11. Curso de Puppet – Lenguaje de configuración
11
Módulos:Módulos:
Carpetas típicasCarpetas típicas
● Carpeta de módulo tiene debajo unos subdirectorios estándar
● files
● manifests
● templates
● lib: contiene plugins (ej. Facts y tipos de recurso customizados)
● tests: ejemplos sobre cómo declarar las clases y los tipos definidos
de módulos
● spec: pruebas para los plugins de lib/
12. Curso de Puppet – Lenguaje de configuración
12
Espacios de nombresEspacios de nombres
● Hace referencia a los subdirectorios bajo la carpeta de
módulos en los que se encuentran las Clases y los Tipos
definidos
● Se usa :: para separar de forma análoga al /
● Aplica también a las variables definidas en clases
● Ejs:
class apache::mod::passenger {...}
define apache::vhost {...}
● En la versión 3 hay alguna incompatibilidad con versiones
anteriores. Ver
http://docs.puppetlabs.com/puppet/3/reference/lang_namespaces.html
13. Curso de Puppet – Lenguaje de configuración
13
Espacios de nombres:Espacios de nombres:
casoscasos
● Si el nombre no incluye :: (esto es, no hay espacio de
nombres) busca en
<modulepath>/nombre/manifests/init.pp
● Si el nombre incluye una o más veces :: de la forma
a::b::nombre (sí hay espacio de nombres) busca en
<modulepath>/a/manifests/b/nombre.pp
● Ejs:
class apache::mod::passenger {...}
buscaría en
<modulepath>/apache/manifests/mod/passenger.pp
14. Curso de Puppet – Lenguaje de configuración
14
ClasesClases
● Son bloques de código, agrupables en
módulos, para el tratamiento unificado de
recursos semejantes o relacionados
● Distinción:
● Definición: hace que esté disponible para un
uso posterior
● Declaración: añade los recursos una clase a
un catálogo
15. Curso de Puppet – Lenguaje de configuración
15
Clases: Definición (1)Clases: Definición (1)
● Sintaxis sin parámetros:
class nombreclase {
... #declaración de recursos,...
}
● Sintaxis con parámetros:
class nombreclase ($param1, $param2=valor,...,$paramN) {
... #declaración de recursos,...
}
Puede haber , antes del paréntesis de cierre
Los parámetros pueden llevar un valor por defecto (pero si falta y en
ejecución no hay valor, da error)
16. Curso de Puppet – Lenguaje de configuración
16
Clases: Definición (2)Clases: Definición (2)
● Reglas sobre el identificador:
● Comienza con minúscula y puede contener minúsculas,
números y _
● Puede hacer referencia a espacios de nombres con :: ej:
espacio1::espacio2:: ... ::clase1
● Lugar de definición:
● Preferentemente, en el directorio manifests/ de cada
módulo, con un fichero por cada clase
● Otras opciones: en site.pp o en manifests importados
● No recomendado: dentro de otra clase (anidamiento)
17. Curso de Puppet – Lenguaje de configuración
17
Clases: DeclaraciónClases: Declaración
● Formas de declaración:
● "Include-Like":
– Permite declarar una clase múltiples veces sin dar error
– No permite sobreescribir valores
● "Resource-Like":
– Una clase sólo se puede declarar una vez
– Permite sobreescribir valores
● Lugar de declaración:
● En definición de nodo
● En site.pp
● En otras clases o tipos definidos
18. Curso de Puppet – Lenguaje de configuración
18
Clases:Clases:
Declaraciones "Include-like"Declaraciones "Include-like"
● Principales:
● Función include: declara una o varias clases separadas por , o
en array, ej:
include base::linux, apache
● Función (no metaparámetro) require: declara una o más clases
estableciendo dependencias, pero cuidado con las relaciones
circulares
● Otras:
● contain: (v3.4): para incluir una clase en otra
● hiera_include: para el plugin de datos jerárquicos Hiera
19. Curso de Puppet – Lenguaje de configuración
19
Clases:Clases:
Declaraciones "Resource-like"Declaraciones "Resource-like"
● Se declaran con class, sin o con sobreescritura:
Ej:
class {'base::linux':}
class {'apache':
version => '2.2.21',
}
20. Curso de Puppet – Lenguaje de configuración
20
Clases: HerenciaClases: Herencia
● Se permite la herencia simple (de una sola clase), siempre
que la clase base no tenga parámetros.
● Sintaxis de definición con herencia:
class nombreclase inherits nombreclasebase {
... #declaración de recursos,...
}
● Se heredan variables y valores por defecto de recursos
● La clase derivada adquiere un nuevo ámbito: el de la
clase base
● La declaración (no definición) de una clase derivada hace
que automáticamente se declare antes la clase base
21. Curso de Puppet – Lenguaje de configuración
21
Clases: Herencia:Clases: Herencia:
SobreescrituraSobreescritura
● Se pueden sobrescribir (o eliminar con undef)
atributos de recursos usando referencias a los
recursos de la clase base
● Para añadir metaparámetros, la sintaxis en clases
derivadas es mediante el operador +>
ej:
class apache::ssl inherits apache {
Service['apache]{
require +> [ File['apache.pem'],
File['httpd.conf'] ],
}
}
22. Curso de Puppet – Lenguaje de configuración
22
RecursosRecursos
● Son el elemento básico para modelar configuraciones
● Hay unos 50 tipos predefinidos (paquete, servicio,
fichero,...) y además se pueden definir nuevos tipos
● Listados: puppet describe --list
http://docs.puppetlabs.com/references/stable/type.html
● Ayuda: puppet describe package | less
● Llevan un identificador ("title")
23. Curso de Puppet – Lenguaje de configuración
23
Recursos: AtributosRecursos: Atributos
● Cada recurso tiene unos atributos, según el tipo, que
describen su estado, ej. si ha de estar instalado un
paquete
● Cuando se aplica un catálogo, se compara el valor real de
cada atributo con el declarado, para hacer o no cambios.
Si se hacen, el orden es según dependencias y el más
eficiente
● Los cambios se auditan quedando registrados en el log
24. Curso de Puppet – Lenguaje de configuración
24
Recursos: Atributos especialesRecursos: Atributos especiales
● Name o Namevar:
● Nombre que identifica al recurso en el sistema destino (ej. el path de
un fichero)
● Es distinto del identificador para Puppet, pero a menudo coinciden. Ej:
identificador ntp y nombre ntpd en Red Hat, ntp en Debian,...
● ensure: hace referencia a aspectos dependientes del tipo y del sistema, ej.
asegurar que un servicio está en marcha. En general sus valores típicos son
present y absent
● provider: implementación del recurso en un sistema. Es sobreescribible,
ej. Instalación de librerías Ruby con apt-get o con gemas
● Metaparámetros
25. Curso de Puppet – Lenguaje de configuración
25
Recursos: MetaparámetrosRecursos: Metaparámetros
● Son atributos especiales que pueden usarse en
cualquier tipo de recurso (comunes al framework)
● No dan información sobre el estado sino cómo ha de
actuar Puppet con el recurso
● Referencia:
http://docs.puppetlabs.com/references/stable/metaparameter.html
● Ej:
puppet describe package -m | grep -A 20 "Meta Parameters"
26. Curso de Puppet – Lenguaje de configuración
26
Recursos: Metaparámetros (1)Recursos: Metaparámetros (1)
● alias: vale para establecer dependencias, ej:
file { '/etc/ssh/sshd_config':
...
alias => 'sshdcfg'
}
Uso:
subscribe => File['sshdcfg']
● audit: marca un atributo, un array de atributos o todos (all) para auditar
en el log y en informes de inspección
● loglevel: indica el nivel de log. Puede ser debug, info, notice,
warning, err, alert, emerg, crit, verbose
● noop: si está definido a true no se hace ninguna operación con el recurso
27. Curso de Puppet – Lenguaje de configuración
27
Recursos: Metaparámetros (2)Recursos: Metaparámetros (2)
● require: indica recursos requeridos o de los que depende el
objeto actual, de modo que los indicados se aplican antes del
actual
● before: referencia a otros objetos que dependen del actual,
el cual se aplica antes que los demás.
● notify: idem que before pero refrescando los objetos
dependientes cuando el objeto actual se modifica
● subscribe: opuesto a notify
28. Curso de Puppet – Lenguaje de configuración
28
Recursos: Metaparámetros (3)Recursos: Metaparámetros (3)
● schedule: indica la referencia a un objeto de tipo schedule, ej:
schedule { 'daily':
period => daily,
range => "2-4"
}
exec { "/usr/bin/apt-get update":
schedule => 'daily'
}
● stage: indica el entorno o etapa a la que corresponde una clase (no es aplicable en
recursos). Útil si se definen otras etapas aparte de la main, ej:
stage{['pre','post']}
● tag: añade etiquetas a un recurso, ej:
file {'/etc/hosts':
tag => ['importante', 'pendiente'],
Para ej. aplicar filtrando por tags:
puppet agent --test --tags pendiente
29. Curso de Puppet – Lenguaje de configuración
29
Recursos: DeclaraciónRecursos: Declaración
● Declaración de recurso: bloque de código que hace que se
incluya en un catálogo, para gestionar su estado en el
agente
● Son independientes de ámbito: pueden ser referenciados
desde donde sea
● Dónde se declaran y cuándo se compilan:
● Si están en una clase, cuando se declara
● Si están en un tipo de recurso definido, cuando se declara
su instancia
● Si son un recurso virtual, cuando se materializa
30. Curso de Puppet – Lenguaje de configuración
30
Recursos:Recursos:
Declaración: Sintaxis (1)Declaración: Sintaxis (1)
● Sintaxis para un recurso:
tipo_recurso { 'identificador':
atributo1 => valor1,
atributo2 => valor2,
...
}
● Sintaxis para varios recursos, mediante array:
tipo_recurso { ['id1','id2','id3',...]:
atributo1 => valor1,
atributo2 => valor2,
...
}
● Sintaxis para varios recursos, mediante zonas de recurso:
tipo_recurso {
'id1':
atributo1.1 => valor1.1,
...;
'id2':
atributo2.1 => valor2.1,
...;
}
31. Curso de Puppet – Lenguaje de configuración
31
Recursos:Recursos:
Declaración: Sintaxis (2)Declaración: Sintaxis (2)
● El identificador ha de ser único para cada tipo de recurso
● Atributos:
● Muchos tienen un valor por defecto
● Para los atributos que se declaren hay que asignarles
un valor
● Si son multivalor, éstos se asignan con un array
● Antes de } puede haber una ,
32. Curso de Puppet – Lenguaje de configuración
32
Recursos:Recursos:
Modificación de atributosModificación de atributos
● Mediante referencia: permite añadir atributos, o modificarlos en el
caso de clases heredadas, ej:
file {'/etc/passwd':
ensure => file,
}
File['/etc/passwd'] {
owner => 'root',
}
● Mediante recolector:
File <| tag == 'superuser' |> {
owner => 'root',
}
33. Curso de Puppet – Lenguaje de configuración
33
Recursos por defectoRecursos por defecto
● Especifican valores por defecto para determinados
atributos en un tipo concreto de recursos. Una
declaración de ese tipo usará los valores definidos
● En un ámbito dado se pueden sobreescribir los valores
por defecto de ámbitos superiores
● Sintaxis de definición:
Tipo_recurso {
atributo1 => valor1
...
}
Ej:
Contexto1::Contexto2::File {
group => 'all'
}
34. Curso de Puppet – Lenguaje de configuración
34
Referencias a recursosReferencias a recursos
● Identifican un recurso de configuración, según las sintaxis:
Tipo['id1']
Tipo['id2','id2',...,'idN']
Ejs:
File['/etc/sudoers']
Package['ldap-utils','slapd']
Espacio1::Package['sudo']
● La primera letra del nombre o nombres de espacio ha de ir en
mayúscula
● Es un tipo de datos. Internamente en Ruby el tipo es un
Puppet::Resource
35. Curso de Puppet – Lenguaje de configuración
35
Dependencias entre Recursos:Dependencias entre Recursos:
Metaparámetros de relaciones (1)Metaparámetros de relaciones (1)
● Válidos para relacionar recursos
● Aplicar un recurso después del aplicar el recurso destino: require
Ej: Procesar el fichero /etc/sudoers después de instalar el paquete
sudo:
file {'/etc/sudoers':
...
require => Package["sudo"],
}
● Idem que el anterior con notificación: subscribe
● Aplicar un recurso antes de aplicar el recurso destino: before
Ej: before => Exec["nagios-rebuid"]
● Idem que el anterior con notificación: notify
36. Curso de Puppet – Lenguaje de configuración
36
Dependencias entre Recursos:Dependencias entre Recursos:
Metaparámetros de relaciones (2)Metaparámetros de relaciones (2)
● Sintaxis:
tipo_recurso {'recurso':
...
metaparámetro => referencia_a_recurso_destino,
}
Ejemplo:
file {'/etc/sudoers':
...
require => Package["sudo"],
}
● Sintaxis en clases derivadas: operador +>
ej:
class apache::ssl inherits apache {
Service['apache]{
require +> [ File['apache.pem'],
File['httpd.conf'] ],
}
}
37. Curso de Puppet – Lenguaje de configuración
37
Dependencias entre Recursos:Dependencias entre Recursos:
Otros métodosOtros métodos
● Para relacionar recursos, uso de flechas:
● recurso1 => recurso2
Se aplica primero recurso1 y después recurso2
Ej: File['/etc/ntp.conf'] => Service['ntpd']
● recurso1 ~> recurso2
Se aplica primero recurso1 y después recurso2, y además se notifica a
recurso2 si recurso1 ha cambiado
● Para relacionar clases, función require:
● Ej:
class wordpress {
require apache
require mysql
...
}
38. Curso de Puppet – Lenguaje de configuración
38
Tipos de recursos definidosTipos de recursos definidos
● También llamados"Defined types" o "Defines"
● Bloque de código que actúa como un nuevo
tipo de recurso
● Al igual que en las clases, se distingue entre
definición y declaración. La declaración es la
instancia concreta, el recurso en sí
● Admiten metaparámetros y valores por
defecto
39. Curso de Puppet – Lenguaje de configuración
39
Tipos de recursos definidos:Tipos de recursos definidos:
DefiniciónDefinición
● Sintaxis sin parámetros:
define nombretipo {
... #declaración de recursos,...
}
● Sintaxis con parámetros:
define nombretipo ($param1, $param2=valor,...,$paramN) {
... #declaración de recursos,...
}
● Notas:
● Reglas para el nombre idem que para las clases
● Puede haber , antes del paréntesis de cierre
● Los parámetros pueden llevar un valor por defecto (si falta y en
ejecución no hay valor, da error)
40. Curso de Puppet – Lenguaje de configuración
40
Tipos de recursos definidos:Tipos de recursos definidos:
DeclaraciónDeclaración
● Idem que un recurso normal. Se definen dentro de cada módulo (un fichero por tipo
bajo el directorio manifests correspondiente) o bien en site.pp.
● Los parámetros que no tienen valores por defecto han de ser asignados con
notación de atributos (operador => y no =), ej:
tipo_recursoA {'identificadorA':
param1=>valor1,
...
}
tipo_recursoB {'identificadorB':}
● El identificador puede ser una combinación de atributos mientras sea único, ej:
file { "${vhost_dir}/${servername}.conf": ...
● Atributos extras, disponibles en la lista de parámetros de la definición
● $title: identificador de la instancia
● $name: por defecto el identificador, pero se puede especificar otro valor en la
declaración
41. Curso de Puppet – Lenguaje de configuración
41
Tipos de recursos CustomTipos de recursos Custom
● Semejantes a tipos definidos, pero con más
complejidad por incluir proveedores
● Relacionan:
● Tipo: parámetros, validación de entrada,
funcionalidades a proveer
● Proveedores: implementación de funcionalidades en
operaciones específicas de cada sistema
● Sintaxis: se usa newtype
● Se escriben en Ruby
42. Curso de Puppet – Lenguaje de configuración
42
Recursos virtualesRecursos virtuales
● Semejantes a recursos (identificador, tipo,...), establecen un
estado deseado para un recurso sin añadirlo al catálogo.
Posteriormente se puede añadir al catálogo incluyendo
("realize") el recurso virtual
● Se declaran una sola vez, y se pueden incluir múltiples veces
● Uso:
● Gestión de recursos dependiente de condiciones
● Uso de un recursos que se solapan en varias clases
● Semejantes a clases. Diferencia: Se pueden gestionar con
recolectores
43. Curso de Puppet – Lenguaje de configuración
43
Recursos virtuales:Recursos virtuales:
Sintaxis de declaración y usoSintaxis de declaración y uso
● Declaración:
@tipo {'identificador':
...
}
Ej:
@user { 'prueba':
uid => 1000,
tag => [desarrollo, pruebas],
}
● Inclusión mediante realize:
realize Tipo['identificador']
Ej:
realize User['desarrollo']
● Inclusión mediante un recolector:
Tipo <| condición |>
Ej:
User <|tag==desarrollo|>
44. Curso de Puppet – Lenguaje de configuración
44
Recolectores de recursosRecolectores de recursos
● Seleccionan recursos a partir de una búsqueda de atributos
definidos en manifests (no según el estado del recurso en el
destino).
● Utilidades:
● Listado de recursos
● Usar recursos virtuales
● Definir dependencias encadenadas
● Sintaxis: Tipo_recurso <| expresión_de_búsqueda |>
Ej:
User <| tag == 'local' |>
45. Curso de Puppet – Lenguaje de configuración
45
Recursos exportadosRecursos exportados
● Permiten compartir información entre nodos
● Especifica un estado deseado para un recurso,
no gestiona ese estado para el sistema
destino, y publica el recurso para ser usado en
otros nodos, los cuales pueden recoger el
recurso exportado y gestionar una copia local
● Requieren PuppetDB
46. Curso de Puppet – Lenguaje de configuración
46
EtiquetasEtiquetas
● Etiquetas o palabras clave a asignar a cada recurso
● Uso: obtener un conjunto de recursos con recolectores y en
expresiones de comparación:
● En aplicación de catálogos, ej:
sudo puppet agent --test --tags upgrade,holanda
● En informes, ej. de tipo "tagmail", para enviar mensajes cuando
recursos con determinadas etiquetas hayan variado
47. Curso de Puppet – Lenguaje de configuración
47
Etiquetas:Etiquetas:
AsignaciónAsignación
● Se asignan automáticamente etiquetas con:
● El tipo de recurso
● Para la clase o tipo definido correspondiente a la declaración del
recurso, el nombre completo y cada identificador del espacio de
nombres
Ej: si la clase es apache::ssl se crearían apache::ssl, apache,
ssl
● Para hacer una asignación manual:
● Uso del metaparámetro tag Ej: tag => ['etiq1','etiq2']
● Uso de la función tag en una definición de clase o de tipo de recurso,
para asignar la etiqueta a los recursos contenidos dentro. Ej:
class usuario {
tag 'importante', 'urgente'
recurso ...