<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jovenclub-plaza-3</id>
	<title>EcuRed - Contribuciones del colaborador [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jovenclub-plaza-3"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/Especial:Contribuciones/Jovenclub-plaza-3"/>
	<updated>2026-06-12T23:02:40Z</updated>
	<subtitle>Contribuciones del colaborador</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Python&amp;diff=4476596</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Python&amp;diff=4476596"/>
		<updated>2024-06-17T13:39:04Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: Python no es un lenguaje de programación funcional: las características de programación funcional se agregaron posteriormente, no desde el día 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Otros usos|.py (desambiguación)}}&lt;br /&gt;
&lt;br /&gt;
{{Ficha Software&lt;br /&gt;
|nombre=Python&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Python.jpeg&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Lenguaje de programación interpertado, orientado a objetos, imperativo&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=[[Guido van Rossum]]&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=[[1991]]&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=3.2.2 / 2.7.2 ([[4 de septiembre]] de [[2011]]; hace 3 meses / [[11 de junio]] de [[2011]]; hace 5 meses)&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[Python Software Foundation License]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.python.org/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Python''' es un lenguaje de programación creado por [[Guido van Rossum]] en el año [[1991]], la extensión de los creados en el es '''.py'''. Se compara habitualmente con [[Tcl]], [[Perl]], [[Scheme]], [[Java]] y [[Ruby]]. En la actualidad Python se desarrolla como un proyecto de [[Código abierto]], administrado por la [[Python Software Foundation]]. La última versión estable del lenguaje es la 3.2.2. Python es considerado como la &amp;quot;oposición leal&amp;quot; a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Los usuarios de Python consideran a éste mucho más limpio y elegante para programar. &lt;br /&gt;
&lt;br /&gt;
== Historia  ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:130px-Guido_van_Rossum_OSCON_2006.jpg|200px|thumb|left|Guido van Rossum, creador de Python]]Python fue creado a finales de los ochenta por [[Guido van Rossum]] en [[National Research Institute for Mathematics and Computer Science|CWI]] en los [[Países Bajos]] como un sucesor del [[Lenguaje de programación ABC]], capaz de manejar excepciones e interactuar con el [[Amoeba (Informática)|sistema operativo Amoeba]]. &lt;br /&gt;
&lt;br /&gt;
Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como ''Benevolente dictador vitalicio'' o ''Benevolent Dictator for Life'' (BDFL). &lt;br /&gt;
&lt;br /&gt;
En 1991, van Rossum publicó el código (versión 0.9.0) en [[[[news:alt.sources|alt.sources]]]]. En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones, y los tipos modulares: &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; y así sucesivamente. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de [[Modula-3]]; van Rossum describe el módulo como &amp;quot;uno de las mayores unidades de programación de Python&amp;quot;. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;. En el año 1994 se formó [[news:comp.lang.python|comp.lang.python]], el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje. &lt;br /&gt;
&lt;br /&gt;
Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la [[Programación funcional]]: &amp;lt;code&amp;gt;[[Cálculo lambda|lambda]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;reduce&amp;lt;/code&amp;gt;. Van Rossum explicó que &amp;quot;Hace 12 años, Python adquirió lambda, reduce(), filter() and map(), cortesía de un hacker de [[Lisp]] que las extrañaba y que envió parches. El donante fue [[Amrit Prem]]; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento. &lt;br /&gt;
&lt;br /&gt;
La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la [[Corporation for National Research Initiatives]] (CNRI) en Reston, [[Virginia]], donde lanzó varias versiones del [[Software]]. &lt;br /&gt;
&lt;br /&gt;
Durante su estancia en CNRI, van Rossum lanzó la iniciativa ''Computer Programming for Everybody'' (CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de 'alfabetización' básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas necesarias por muchos trabajadores. &lt;br /&gt;
&lt;br /&gt;
Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por [[DARPA]]. En el año 2007, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa. &lt;br /&gt;
&lt;br /&gt;
En el año 2000, el principal equipo de desarrolladores de Python se cambió a [[BeOpen.com]] para formar el equipo BeOpen [[PythonLabs]]. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo. Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores PythonLabs se unieron en [[Digital Creations]]. &lt;br /&gt;
&lt;br /&gt;
Python 2.0 tomó una característica mayor del lenguaje de [[Programación funcional]] [[Haskell]]: [[List comprehension]]s. La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema de [[Recolección de basura]] capaz de recolectar referencias cíclicas. &lt;br /&gt;
&lt;br /&gt;
Posterior a este doble lanzamiento, y después que van Rossum dejó CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software disponible bajo [[GPL]] era muy deseable. La licencia usada entonces, la [[Python License]], incluía una cláusula estipulando que la licencia estaba gobernada por el estado de [[Virginia]], por lo que, bajo la óptica de los abogados de [[Free Software Foundation]] (FSF), se hacía incompatible con [[GPL]]. CNRI y FSF se relacionaron para cambiar la licencia de software libre de Python para hacerla compatible con GPL. En el año 2001, van Rossum fue premiado con [[FSF Award for the Advancement of Free Software]]. &lt;br /&gt;
&lt;br /&gt;
Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos de [[Bugs]], y con una nueva licencia compatible con GPL. &lt;br /&gt;
&lt;br /&gt;
Python 2.1 fue un trabajo derivado de Python 1.6.1, así como también de Python 2.0. Su licencia fue renombrada: [[Python Software Foundation License]]. Todo el código, documentación y especificaciones añadidas, desde la fecha del lanzamiento de la versión alfa de Python 2.1, tiene como dueño a [[Python Software Foundation]] (PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la [[Apache Software Foundation]]. Incluido en este lanzamiento fue una implementación del scoping más parecida a las reglas de [[Static scoping]] (del cual [[Scheme]] es el originador). &lt;br /&gt;
&lt;br /&gt;
Una innovación mayor en Python 2.2 fue la unificación de los tipos en Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo de objetos de Python puro y consistente. También fueron agregados los [[Generador (informática)|generadores]] que fueron inspirados por el lenguaje [[Icon]].&lt;br /&gt;
&lt;br /&gt;
== Características  ==&lt;br /&gt;
&lt;br /&gt;
Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, [[Sockets]] y hasta interfaces a [[GUI]] como [[Tk]], [[GTK]], [[Qt]] entre otros. &lt;br /&gt;
&lt;br /&gt;
Python se utiliza como lenguaje de programación interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. &lt;br /&gt;
&lt;br /&gt;
El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos [[Monty Python]]. El principal objetivo que persigue este lenguaje es la facilidad, tanto de lectura, como de diseño. &lt;br /&gt;
&lt;br /&gt;
== Filosofía  ==&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Python se refieren a menudo a la '''Filosofía Python''' que es bastante análoga a la filosofía de [[Unix]]. El código que sigue los principios de Python de legibilidad y transparencia se dice que es &amp;quot;pythonico&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
*Bello es mejor que feo. &lt;br /&gt;
*Explícito es mejor que implícito. &lt;br /&gt;
*Simple es mejor que complejo. &lt;br /&gt;
*Complejo es mejor que complicado. &lt;br /&gt;
*Plano es mejor que anidado. &lt;br /&gt;
*Ralo es mejor que denso. &lt;br /&gt;
*La legibilidad cuenta. &lt;br /&gt;
*Los casos especiales no son tan especiales como para quebrantar las reglas. &lt;br /&gt;
*Aunque lo práctico gana a la pureza. &lt;br /&gt;
*Los errores nunca deberían dejarse pasar silenciosamente. &lt;br /&gt;
*A menos que hayan sido silenciados explícitamente. &lt;br /&gt;
*Frente a la ambigüedad, rechaza la tentación de adivinar. &lt;br /&gt;
*Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. &lt;br /&gt;
*Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés. &lt;br /&gt;
*Ahora es mejor que nunca. &lt;br /&gt;
*Aunque ''nunca'' es a menudo mejor que ''ya mismo''. &lt;br /&gt;
*Si la implementación es dificil de explicar, es una mala idea. &lt;br /&gt;
*Si la implementación es fácil de explicar, puede que sea una buena idea. &lt;br /&gt;
*Los espacios de nombres (''namespaces'') son una gran idea ¡Hagamos más de esas cosas!&lt;br /&gt;
&lt;br /&gt;
Desde la versión 2.1.2, Python incluye estos puntos en su versión original en inglés &lt;br /&gt;
&lt;br /&gt;
== Modo interactivo  ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de Python estándar incluye un ''modo interactivo'', en el cual se escriben las instrucciones en una especie de [[Intérprete de comandos|shell]]: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como también para los programadores más avanzados: se pueden probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. &lt;br /&gt;
&lt;br /&gt;
Existen otros programas, tales como [[IDLE (Python)|IDLE]] o [[IPython]], que añaden funcionalidades extra al modo interactivo, como el auto-completar código y el coloreado de la sintaxis del lenguaje. &lt;br /&gt;
&lt;br /&gt;
Ejemplo del modo interactivo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 2+2&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = range(10)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print a&lt;br /&gt;
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Implementaciones  ==&lt;br /&gt;
&lt;br /&gt;
Python posee diversas implementaciones: &lt;br /&gt;
&lt;br /&gt;
*[[CPython]] es la implementación original, disponible para varias plataformas en el sitio oficial de Python. &lt;br /&gt;
*[[IronPython]] es la implementación para .NET &lt;br /&gt;
*[[Stackless Python]] es la variante de CPython que trata de no usar el ''stack'' de [[Lenguaje de Programación C]] ([http://www.stackless.com/ www.stackless.com]) &lt;br /&gt;
*[[Jython]] es la implementación hecha en [[Lenguaje de programación Java|Java]] &lt;br /&gt;
*[[Pippy]] es la implementación realizada para Palm ([http://pippy.sourceforge.net/ pippy.sourceforge.net])&lt;br /&gt;
&lt;br /&gt;
== Elementos del lenguaje  ==&lt;br /&gt;
&lt;br /&gt;
Python fue diseñado para ser leído con facilidad. Entre otras cosas se utilizan palabras en inglés donde otros lenguajes utilizarían símbolos (por ejemplo, los [[operadores lógicos]] &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/code&amp;gt; en Python se escriben &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt;, respectivamente). &lt;br /&gt;
&lt;br /&gt;
En vez de delimitar los bloques de código mediante el uso de llaves (&amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;), Python utiliza la [[Indentación]]. Esto hace que la misma sea obligatoria, ayudando a la claridad y consistencia del código escrito (incluso entre varios desarrolladores): &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | [[Factorial|Función factorial]] en [[Lenguaje de Programación C]] &lt;br /&gt;
! width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | [[Factorial|Función factorial]] en Python&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int factorial(int x) &lt;br /&gt;
{&lt;br /&gt;
 if (x == 0)&lt;br /&gt;
   return 1;&lt;br /&gt;
 else&lt;br /&gt;
   return x*factorial(x - 1); &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def factorial(x):&lt;br /&gt;
    if not x:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return x * factorial(x-1)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comentarios  ===&lt;br /&gt;
Los [[Comentarios|comentarios]] se inician con el símbolo &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, y se extienden hasta el final de la línea. Al comentar una linea, esta no es tenida en cuenta por el interprete lo cual es útil si se desea poner información adicional en el código como por ejemplo un explicativo que comente que hacen dichas lineas, que falta o haría falta hacer (muy útil para los programadores al momento de leer un código hecho por otro programador). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# Comentario en una línea en Python.&lt;br /&gt;
print('Hola mundo') # También es posible añadir un comentario después de una línea de código&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Variables  ===&lt;br /&gt;
&lt;br /&gt;
Las variables se definen de forma [[Tipado dinámico|dinámica]]. El signo igual (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;) se usa para asignar valores a las variables: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
x = 1&lt;br /&gt;
x = 'texto' # esto es posible porque los tipos son asignados dinámicamente&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Tipos de datos  ===&lt;br /&gt;
&lt;br /&gt;
Python soporta implícitamente una gran variedad de tipos de datos. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;integratable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tipo &lt;br /&gt;
! Clase &lt;br /&gt;
! Notas &lt;br /&gt;
! Ejemplo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; &lt;br /&gt;
| String &lt;br /&gt;
| Inmutable &lt;br /&gt;
| &amp;lt;code&amp;gt;'Integrador'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; &lt;br /&gt;
| String &lt;br /&gt;
| Versión [[Unicode]] de &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; (eliminado en Python3) &lt;br /&gt;
| &amp;lt;code&amp;gt;u'Integrador'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; &lt;br /&gt;
| Secuencia &lt;br /&gt;
| Mutable, puede contener diversos tipos &lt;br /&gt;
| &amp;lt;code&amp;gt;[4.0, 'string', True]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tuple&amp;lt;/code&amp;gt; &lt;br /&gt;
| Secuencia &lt;br /&gt;
| Inmutable &lt;br /&gt;
| &amp;lt;code&amp;gt;(4.0, 'string', True)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; &lt;br /&gt;
| Conjunto &lt;br /&gt;
| Mutable, sin orden, no contiene duplicados &lt;br /&gt;
| &amp;lt;code&amp;gt;set([4.0, 'string', True])&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;frozenset&amp;lt;/code&amp;gt; &lt;br /&gt;
| Conjunto &lt;br /&gt;
| Inmutable, sin orden, no contiene duplicados &lt;br /&gt;
| &amp;lt;code&amp;gt;frozenset([4.0, 'string', True])&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; &lt;br /&gt;
| Mapping &lt;br /&gt;
| Grupo de pares clave, valor &lt;br /&gt;
| &amp;lt;code&amp;gt;{'key1': 1.0, 'key2': False}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número entero &lt;br /&gt;
| Precisión fija, convertido en &amp;lt;var&amp;gt;long&amp;lt;/var&amp;gt; en caso de overflow. &lt;br /&gt;
| &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número entero &lt;br /&gt;
| Precisión arbitraria &lt;br /&gt;
| &amp;lt;code&amp;gt;42L&amp;lt;/code&amp;gt; ó &amp;lt;code&amp;gt;456966786151987643L&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número decimal representado en &lt;br /&gt;
| coma flotante de doble precisión &lt;br /&gt;
| &amp;lt;code&amp;gt;3.1415927&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; &lt;br /&gt;
| Booleano &lt;br /&gt;
| Valor booleano verdadero o falso &lt;br /&gt;
| &amp;lt;code&amp;gt;True o False&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Mutable: si su valor o el de alguno de sus elementos (el caso de las listas, conjuntos y los diccionarios) puede cambiarse en tiempo de ejecución. &lt;br /&gt;
*Inmutable: si su contenido no puede cambiarse en tiempo de ejecución. Por ejemplo: las cadenas y tuplas.&lt;br /&gt;
&lt;br /&gt;
==== Tuplas y Listas  ====&lt;br /&gt;
&lt;br /&gt;
*Para declarar una ''lista'', basta usar los corchetes &amp;lt;code&amp;gt;[ ]&amp;lt;/code&amp;gt;, mientras que para declarar una ''tupla'' es recomendable usar los paréntesis &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;. En ambas los elementos se separan por comas, y en el caso de las tuplas es necesario que tengan como mínimo una coma. &lt;br /&gt;
*Tanto las ''listas'' como las ''tuplas'' pueden contener elementos de diferentes tipos. No obstante las listas suelen usarse para elementos del mismo tipo en cantidad variable mientras que las tuplas se reservan para elementos distintos en cantidad fija. &lt;br /&gt;
*Para acceder a los elementos de una ''lista'' o ''tupla'', se utiliza un índice entero. Se pueden utilizar índices negativos para acceder elementos a partir del final. &lt;br /&gt;
*Las ''listas'' se caracterizan por ser mutables, es decir, se puede cambiar su contenido, mientras que no es posible modificar el contenido de una ''tupla'' ya creada, puesto que es inmutable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista = ['aaa', 1, 90]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[-1]&lt;br /&gt;
90&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[0] = 'xyz'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[0:2]&lt;br /&gt;
['xyz', 1]&lt;br /&gt;
 &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla = (1, 2, 3)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla[0] = 2 &lt;br /&gt;
 ( genera un error )&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla[0]&lt;br /&gt;
1&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; otratupla = (tupla, ('a', 'b')) # es posible anidar tuplas&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 1, 2, 3, 'a' # Esto también es una tupla, aunque es recomendable ponerla entre paréntesis&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1) # Aunque entre paréntesis, esto en cambio no es una tupla, ya que no posee una coma tras el elemento&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1,) # En cambio, en este otro caso, sí.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1, 2) # Con más de un elemento no es necesaria la coma final...&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1, 2,) # ...aunque agregarla no modifica el resultado. Esta tupla es igual a la anterior.&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Diccionarios  ====&lt;br /&gt;
&lt;br /&gt;
Los diccionarios se declaran entre llaves (&amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;), y contienen elementos separados por comas, donde cada elemento está formado por un par &amp;lt;var&amp;gt;clave&amp;lt;/var&amp;gt; &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; &amp;lt;var&amp;gt;valor&amp;lt;/var&amp;gt; (el símbolo &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; separa la clave de su valor correspondiente).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de como llmar a los valores en un diccionario mediante su clave. La clave la se  pondra entre un corchete abierto &amp;quot;[&amp;quot; y un corchete cerrado &amp;quot;]&amp;quot;. Esto devolverá el valor.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coche&amp;quot;: &amp;quot;rojo&amp;quot;, &amp;quot;mesa&amp;quot;: &amp;quot;marron&amp;quot;}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['mesa']&lt;br /&gt;
'marron'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los diccionarios son mutables:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;numero_globos&amp;quot;: 4}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;]&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;] = 3 # Se puede reasignar el valor de una clave&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;]&lt;br /&gt;
3&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
El valor de un diccionario puede ser de cualquier tipo. Un string (&amp;quot;casa&amp;quot;), un int (2), una lista ([1, 2, 3]), o incluso un diccionario. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coches&amp;quot;: 4, &amp;quot;tipo&amp;quot;: &amp;quot;de los que tienen 4 ruedas&amp;quot;, &amp;quot;marcas&amp;quot;: ['Honda', 'Renault', 'Seat'], &amp;quot;descripciones&amp;quot;: {&amp;quot;uno&amp;quot;: ('Seat', 'Ibiza', 'rojo'), &amp;quot;dos&amp;quot;: ('Honda', 'civic', 'azul'), &amp;quot;tres&amp;quot;: ('Seat', 'Ibiza', 'negro') } }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['coches']&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['tipo']&lt;br /&gt;
'de los que tienen 4 ruedas'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['marcas']&lt;br /&gt;
['Honda', 'Renault', 'Seat']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['marcas'][0]&lt;br /&gt;
'Honda'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['descripciones']&lt;br /&gt;
{&amp;quot;uno&amp;quot;: ('Seat', 'Ibiza', 'rojo'), &amp;quot;dos&amp;quot;: ('Honda', 'civic', 'azul'), &amp;quot;tres&amp;quot;: ('Seat', 'Ibiza', 'negro') }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['descripciones']['uno']&lt;br /&gt;
('Seat', 'Ibiza', 'rojo')&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
En cambio, la clave en los diccionarios debe ser inmutable. Esto quiere decir, por ejemplo, que no se  puede usar ni listas ni diccionarios como claves: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coche&amp;quot;: 'rojo'} # Con un string. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {4: &amp;quot;manuales&amp;quot;} # Con un int. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {(2, 'lampara'): &amp;quot;florero&amp;quot;} # Con una tupla. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {[2, 'lampara']: &amp;quot;florero&amp;quot;} # Con una lista. Error.&lt;br /&gt;
(... Error ...)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {{'fuente': 'luz'}: &amp;quot;dimm&amp;quot;} # Con un diccionario. Error.&lt;br /&gt;
(... Error ...)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Cabe señalar, que los diccionarios al igual que las listas, al ser mutables, compartirán los cambios realizados, independientemente del nombre de la variable que se use para referirse a ellos. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = {&amp;quot;coche&amp;quot;: 'rojo'}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = a&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche'] = 'azul'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche']&lt;br /&gt;
'azul'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a['coche']&lt;br /&gt;
'azul'&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Cuando este comportamiento no sea el deseado, se puede hacer una copia del diccionario usando su método &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
En este ejemplo, se recorre la estructura de diccionario, y se imprime su contenido de la forma ''clave''=''valor'' &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; dict = {&amp;quot;dia&amp;quot;: 24, &amp;quot;mes&amp;quot;: &amp;quot;agosto&amp;quot;}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; for k in dict:&lt;br /&gt;
...    print &amp;quot;%s=%s&amp;quot; % (k, dict[k])&lt;br /&gt;
 &lt;br /&gt;
dia=24&lt;br /&gt;
mes=agosto&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Conjuntos (Sets)  ====&lt;br /&gt;
&lt;br /&gt;
Los conjuntos se construyen mediante &amp;lt;code&amp;gt;set(items)&amp;lt;/code&amp;gt; donde &amp;lt;var&amp;gt;items&amp;lt;/var&amp;gt; es cualquier objeto iterable. Los conjuntos no mantienen el orden ni contienen elementos duplicados. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; conj = set(['a','b','a'])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print conj&lt;br /&gt;
set(['a','b'])&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Funciones  ===&lt;br /&gt;
&lt;br /&gt;
Las funciones se definen con la palabra clave &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt;, seguida del nombre de la función y sus parámetros. Otra forma de escribir funciones, aunque menos utilizada, es con la palabra clave &amp;lt;code&amp;gt;lambda&amp;lt;/code&amp;gt; (que aparece en lenguajes funcionales como [[Lisp]]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de función lambda&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f = lambda x: x+2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f(4)&lt;br /&gt;
6&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de función con def. En este ejemplo salvo que se indique la variable 'y' valdrá 2.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; def multiplicacion(x, y=2):&lt;br /&gt;
...     return x * y     &lt;br /&gt;
...&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; multiplicacion(10)&lt;br /&gt;
20&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; multiplicacion(10, 3)&lt;br /&gt;
30&lt;br /&gt;
&amp;lt;/source&amp;gt; El valor devuelto en las funciones con def será el dado con la instrucción &amp;quot;return&amp;quot; y el contenido de la función será declarado mediante espacios o tabuladores (siempre el mismo número)&amp;lt;ref&amp;gt;http://docs.python.org/tutorial/controlflow.html#defining-functions&amp;lt;/ref&amp;gt; antes de cada línea de órdenes pertenecientes al bloque. '''Python''' se diferencia así de otros muchos lenguajes de programación que mantienen como costumbre declarar los bloques mediante un conjunto de caracteres, normalmente entre corchetes (&amp;lt;code&amp;gt;{ }&amp;lt;/code&amp;gt;).&amp;lt;ref&amp;gt;http://www.acm.uiuc.edu/webmonkeys/book/c_guide/1.3.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://www.desarrolloweb.com/articulos/583.php&amp;lt;/ref&amp;gt; En cambio el lenguaje de programación [[Ruby]] sigue el mismo sismo sistema para declarar los bloques que Python.&amp;lt;ref&amp;gt;http://www.ruby-doc.org/docs/ProgrammingRuby/html/ref_c_module.html#Module.module_function&amp;lt;/ref&amp;gt; Se recomienda que la identación sea siempre de espacios o siempre de tabuladores, pero no mezclarlos, utilizar espacios en vez de tabuladores y que estos siempre sean 4 espacios.&amp;lt;ref&amp;gt;http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#whitespace-1&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Módulos  ===&lt;br /&gt;
&lt;br /&gt;
Existen muchas propiedades que se pueden agregar al lenguaje importando módulos, que son minicódigos (la mayoría escritos también en Python) que llaman a los recursos del sistema. Un ejemplo es el módulo Tkinter, que permite crear interfaces gráficas que incluyan botones, cajas de texto, y muchas cosas que se vea habitualmente en el sistema operativo. Otro ejemplo es el módulo que permite manejar el sistema operativo desde el lenguaje. Los módulos se agregan a los códigos escribiendo &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; seguida del nombre del módulo que se quiera usar. En este código se muestra como apagar el ordenador desde Windows. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
apagar = &amp;quot;shutdown /s&amp;quot;&lt;br /&gt;
import os&lt;br /&gt;
os.system(apagar)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También existen formas de instalar módulos de python en el ordenador con el comando &amp;quot;pip install&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de código Python  ==&lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo muestra cómo obtener una lista con los cuadrados de los números del 0 al 9 (inclusive). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 print [x**2 for x in range(10)]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo saludará al usuario si se conoce su plato preferido, o le preguntará cuál es, en caso contrario. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: iso8859-15 -*-&lt;br /&gt;
# diccionario de comidas preferidas de cada persona&lt;br /&gt;
comidas = {&lt;br /&gt;
   &amp;quot;Juan&amp;quot; : &amp;quot;tiburón en escabeche&amp;quot;,&lt;br /&gt;
   &amp;quot;Pablo&amp;quot; : &amp;quot;paella don Beto&amp;quot;, &lt;br /&gt;
   &amp;quot;Alfredo&amp;quot; : &amp;quot;sesos de mono&amp;quot;,&lt;br /&gt;
   &amp;quot;Fulano&amp;quot; : &amp;quot;cucarachas fritas&amp;quot;,&lt;br /&gt;
   &amp;quot;Sonia&amp;quot; : &amp;quot;burros&amp;quot;,&lt;br /&gt;
   &amp;quot;Lucas&amp;quot; : &amp;quot;hamburguesas Mr Paul&amp;quot;,&lt;br /&gt;
   &amp;quot;Jose&amp;quot; : &amp;quot;ceviche&amp;quot;,&lt;br /&gt;
   &amp;quot;Cesar&amp;quot; : &amp;quot;arroz con pollo&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
afirmativas = set(['si','s','mucho','porfa'])&lt;br /&gt;
 &lt;br /&gt;
def saluda(nombre, comida):&lt;br /&gt;
    respuesta = raw_input(&amp;quot;Hola &amp;quot; + nombre + &amp;quot;, ¿te gusta &amp;quot; + comida + &amp;quot;? &amp;quot;)&lt;br /&gt;
    if respuesta not in afirmativas:&lt;br /&gt;
        pregunta(nombre)&lt;br /&gt;
&lt;br /&gt;
def pregunta(nombre):&lt;br /&gt;
    respuesta = raw_input(&amp;quot;Hola &amp;quot; + nombre + &amp;quot;, ¿qué comida te gusta? &amp;quot;)&lt;br /&gt;
    comidas[nombre] = respuesta&lt;br /&gt;
&lt;br /&gt;
for nombre in [&amp;quot;Juan&amp;quot;, &amp;quot;Pablo&amp;quot;, &amp;quot;Alfredo&amp;quot;, &amp;quot;Fulano&amp;quot;, &amp;quot;Sonia&amp;quot;, &amp;quot;Lucas&amp;quot;, &amp;quot;Mengano&amp;quot;,&amp;quot;Cesar&amp;quot;]:&lt;br /&gt;
    if nombre in comidas and comidas[nombre] is not None:&lt;br /&gt;
        saluda(nombre, comidas[nombre])&lt;br /&gt;
    else:&lt;br /&gt;
        pregunta(nombre)&lt;br /&gt;
&amp;lt;/source&amp;gt; El siguiente ejemplo busca y cuenta palabras palíndromas (se leen igual al derecho y al revés) en un archivo de texto que le se indique. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
ruta = raw_input(&amp;quot;Escriba la ruta del archivo a leer: &amp;quot;)&lt;br /&gt;
archivo = open(ruta, 'r')&lt;br /&gt;
texto = archivo.read()&lt;br /&gt;
  &lt;br /&gt;
contar = 0&lt;br /&gt;
  &lt;br /&gt;
for palabra in texto.split(' '):&lt;br /&gt;
  if palabra == palabra[::-1]:&lt;br /&gt;
    contar += 1&lt;br /&gt;
  &lt;br /&gt;
if not contar:&lt;br /&gt;
  print &amp;quot;No hay palabras palíndromas en el archivo&amp;quot;&lt;br /&gt;
else:&lt;br /&gt;
  print &amp;quot;Palabras palíndromas encontradas: &amp;quot;, contar&lt;br /&gt;
  &lt;br /&gt;
archivo.close()&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Biblioteca Estándar  ==&lt;br /&gt;
&lt;br /&gt;
Python tiene una gran biblioteca estándar, usada para una diversidad de tareas. Esto viene de la filosofía &amp;quot;pilas incluidas&amp;quot; (&amp;quot;batteries included&amp;quot;) en referencia a los módulos de Python. Los módulos de la biblioteca estándar pueden mejorarse por módulos personalizados escritos tanto en [[C]] como en Python. Debido a la gran variedad de herramientas incluidas en la biblioteca estándar combinada con la habilidad de usar lenguajes de bajo nivel como C y [[C++]], los cuales son capaces de interactuar con otras bibliotecas, Python es un lenguaje que combina su clara sintaxis con el inmenso poder de lenguajes menos elegantes. &lt;br /&gt;
&lt;br /&gt;
== Vease también  ==&lt;br /&gt;
&lt;br /&gt;
*[[Django]] Framework de programación web escrito en Python &lt;br /&gt;
*[[Herramienta Trac]]&lt;br /&gt;
*[[PyQt]]&lt;br /&gt;
*[[PyKDE]]&lt;br /&gt;
*[[Python Software Foundation License]]&lt;br /&gt;
&lt;br /&gt;
== Fuente  ==&lt;br /&gt;
&lt;br /&gt;
*Knowlton, Jim (2009). ''Python, tr: Fernández Vélez, María Jesús, 1 edición (en Español), Anaya Multimedia-Anaya Interactiva'', pp. 272. ISBN 978-84-415-2513-9. &lt;br /&gt;
*[http://docs.python.org/3.1/library/2to3.html Python.org ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencias  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:Programación]] [[Category:Lenguajes_de_programación]] [[Category:Lenguajes_de_programación_orientada_a_objetos]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Rust-programming-language-logo.svg&amp;diff=4473479</id>
		<title>Archivo:Rust-programming-language-logo.svg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Rust-programming-language-logo.svg&amp;diff=4473479"/>
		<updated>2024-06-08T19:14:11Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: Logotipo del lenguaje de programación Rust (por favor, no confundir con el videojuego Rust, porque no tiene absolutamente nada que ver)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Resumen ==&lt;br /&gt;
Logotipo del lenguaje de programación Rust (por favor, no confundir con el videojuego Rust, porque no tiene absolutamente nada que ver)&lt;br /&gt;
== Información de copyright: ==&lt;br /&gt;
https://creativecommons.org/licenses/by/4.0/&lt;br /&gt;
== Licencia ==&lt;br /&gt;
{{CC}}&lt;br /&gt;
== Fuente: ==&lt;br /&gt;
https://foundation.rust-lang.org/policies/logo-policy-and-media-guide/&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ansible&amp;diff=4473405</id>
		<title>Ansible</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ansible&amp;diff=4473405"/>
		<updated>2024-06-08T13:46:51Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Ansible (Software)&lt;br /&gt;
|familia=Internet&lt;br /&gt;
|imagen=Ansible_25p.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción='''Software para aprovisionamiento de equipos remotos'''&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador=[[Red Hat]]&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|fecha de creación=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|núcleo=&lt;br /&gt;
|tipo de núcleo=&lt;br /&gt;
|plataformas soportadas=Sistemas UNIXLike&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[GPL3]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Ansible'''. Software de aprovisionamiento de sistemas, desplieque de aplicaciones y servicios, y orquestación para servidores e infraestructura. Es un software de código abierto bajo la licencia GPL3&lt;br /&gt;
&lt;br /&gt;
== El problema del aprovisionamiento distribuido ==&lt;br /&gt;
&lt;br /&gt;
Cuando se instala un sistema operativo nuevo a un equipo (o se reinstala sea por los motivos que sean), se le debe también instalar software adicional en forma de aplicaciones, servicios y otros programas para que el equipo sea funcional, esta labor de instalación y configuración adicional es lo que se le conoce como 'aprovisionamiento'&lt;br /&gt;
&lt;br /&gt;
Lo normal (sobretodo si es un número bajo de equipos) es realizar este aprovisionamiento de forma manual, tanto si es un equipo personal como si es a un número muy escaso y manejable de equipos. Pero cuando ese número de equipos es mayor el proceso de aprovisionamiento se vuelve tedioso y propenso a errores, y es aquí donde hay que considerar qué opciones hay para automatizar el proceso&lt;br /&gt;
&lt;br /&gt;
Hay muchas formas y métodos que han existido a lo largo de los años para automatizar los procesos de aprovisionamiento a gran escala, cualquier persona o empresa puede crear soluciones individuales, pero estas soluciones son a menudo sesgadas o específicas, y es aquí donde entra Ansible a resolver este problema&lt;br /&gt;
&lt;br /&gt;
== Características de Ansible ==&lt;br /&gt;
&lt;br /&gt;
=== Minimalista ===&lt;br /&gt;
&lt;br /&gt;
Ansible no requiere la instalación de agentes en los equipos remotos para su funcionamiento&lt;br /&gt;
&lt;br /&gt;
=== Declarativo ===&lt;br /&gt;
&lt;br /&gt;
La configuración de Ansible no consiste en decirle que realice una serie de pasos (imperativo) hasta llegar al objetivo, lo que se le hace es declarar un estado y es Ansible el responsable de alcanzar ese estado por su propia cuenta&lt;br /&gt;
=== Extensible ===&lt;br /&gt;
&lt;br /&gt;
Las capacidades de Ansible son extensibles a través de módulos creados por la comunidad, que van desde la instalación de simples programas hasta creación de usuarios, redes, servicios e infraestructuras enteras&lt;br /&gt;
&lt;br /&gt;
== Estructura y funcionamiento ==&lt;br /&gt;
&lt;br /&gt;
Ansible se compone de un equipo principal o de control, que es el que va a tener instalado a Ansible y uno o más equipos remotos&lt;br /&gt;
&lt;br /&gt;
El equipo de control debe tener una comunicación ya configurada con cada equipo remoto mediante [[SSH]] (preferiblemente securizada mediante el uso de claves públicas y privadas y no por contraseña)&lt;br /&gt;
&lt;br /&gt;
Cuando Ansible desde el equipo de control manda a ejecutar órdenes, estas órdenes se envían mediante SSH al equipo remoto (o a todos) y el agente de Ansible es el encargado de ejecutar esas órdenes en el equipo remoto en forma de comandos y la respuesta de estos comandos se envía al equipo de control&lt;br /&gt;
&lt;br /&gt;
== Componentes ==&lt;br /&gt;
&lt;br /&gt;
=== Inventario ===&lt;br /&gt;
&lt;br /&gt;
El Inventario es el conjunto de equipos remotos, representados por su [[IP]] o por su [[nombre de dominio]]&lt;br /&gt;
&lt;br /&gt;
Los equipos en el inventario pueden dividirse en varios grupos para facilitar su administración&lt;br /&gt;
&lt;br /&gt;
Ansible no puede actuar sobre equipos que no existan en el inventario&lt;br /&gt;
&lt;br /&gt;
==Tareas==&lt;br /&gt;
&lt;br /&gt;
Las Tasks (tareas) son funciones en las cuales se declara un estado, y al ejecutarlas, Ansible debe encargarse de ejecutar serie de órdenes y comandos para llegar a ese estado&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, una Task para instalar el servidor web NGINX y configurarlo, implica que Ansible por su cuenta debe realizar las siguientes acciones:&lt;br /&gt;
&lt;br /&gt;
* Revisar si NGINX está instalado. En el caso de estarlo, marcar la tarea como completada&lt;br /&gt;
&lt;br /&gt;
* Instalar NGINX&lt;br /&gt;
&lt;br /&gt;
* Echar a andar el servicio de NGINX&lt;br /&gt;
&lt;br /&gt;
Es decir, la Task para instalar NGINX no es &amp;quot;instalar NGINX&amp;quot;, sino &amp;quot;NGINX debe estar instalado y funcionando&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las tareas nuevas se obtienen mediante la instalación de módulos&lt;br /&gt;
&lt;br /&gt;
=== Libro de tareas ===&lt;br /&gt;
&lt;br /&gt;
Las tareas pueden ejecutarse de forma individual si uno lo desea, pero si se van a ejecutar múltiples tareas, se debe usar un Playbook o libro de tareas.&lt;br /&gt;
&lt;br /&gt;
Un Playbook es un conjunto de tareas a realizar, y según el objetivo del playbook estas tareas pueden ejecutarse de formas específicas basándose en condiciones y resultados de otras tareas&lt;br /&gt;
&lt;br /&gt;
=== Roles ===&lt;br /&gt;
&lt;br /&gt;
Los roles son un tipo especial de Playbook hechos para realizar trabajos complejos&lt;br /&gt;
&lt;br /&gt;
=== Colecciones ===&lt;br /&gt;
&lt;br /&gt;
Las colecciones son un formato de distribución de playbooks, tareas, roles y módulos que pueden compartirse con otros usuarios&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
&lt;br /&gt;
*[https://galaxy.ansible.com Repositorio de contenido para Ansible]*&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
*[https://docs.ansible.com Documentación oficial de Ansible]*&lt;br /&gt;
*[https://www.redhat.com/en/topics/automation/learning-ansible-tutorial Tutorial de Ansible en el sitio de RedHat]*&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Informática]]&lt;br /&gt;
[[Categoría:Computación_distribuida]]&lt;br /&gt;
[[Categoría:Sistemas_Automatizados]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Cloud_Computing&amp;diff=4471164</id>
		<title>Cloud Computing</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Cloud_Computing&amp;diff=4471164"/>
		<updated>2024-06-04T22:25:50Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|nombre=Cloud Computing|imagen=Cloud-computing.jpg‎|tamaño=|concepto=[[Modelo]] que permite ofrecer servicios computacionales en la [[Internet]] o [[Intranet]].}}&lt;br /&gt;
'''Cloud Computing'''. Estilo de [[computación]] donde las tecnologías de la información se prestan como un servicio, estos servicios están localizados en los [[centros de datos]] (Cloud o nubes), permitiendo a los usuarios el acceso a los servicios sin necesidad de que el usuario tenga el conocimiento, la experiencia y la infraestructura para poder mantener este servicio.&lt;br /&gt;
&lt;br /&gt;
==Definición==&lt;br /&gt;
&lt;br /&gt;
Tipo de computación donde todo lo que puede ofrecer un sistema informático se ofrece como servicio, permitiendo que los usuarios puedan acceder a los servicios disponibles en la nube sin conocimientos avanzados en la gestión de los recursos y servicios que utilizan. Conocido como Computación en la Nube.&lt;br /&gt;
&lt;br /&gt;
==Facilidades permitidas==&lt;br /&gt;
&lt;br /&gt;
Es un paradigma en el que la información se almacena de manera permanente en servidores que se encuentran conectados a Internet y se envía a cachés de clientes, de manera temporal, lo cual permite, que la información visualizada se mantenga en los servidores que prestan estos diferentes servicios, lo que incluye equipos de escritorio, portátiles, móbiles, etc. &lt;br /&gt;
La Computación en la Nube permite diversificar y elevar el número de servicios sustentados en la red. Esto beneficia en gran parte a los proveedores, que pueden brindar, de manera más rápida y eficiente, una mayor cantidad de servicios, como para los usuarios que tienen la posibilidad de acceder a ellos,  de manera rápida, transparente y eficiente.&lt;br /&gt;
&lt;br /&gt;
==Comienzos==&lt;br /&gt;
&lt;br /&gt;
El término de computación en la nube comenzó en los Data Centers (centros de datos) de grandes compañias como [[Google]], [[Amazon.com|Amazon]] y otros que fueron construyendo sus propias infraestructuras. Dentro de estos emergió una nueva arquitectura: un sistema de recursos distribuidos horizontalmente, introducidos como servicios virtuales de [[TI]] escalados masivamente y manejados como recursos configurados y mancomunados de manera continua. &lt;br /&gt;
&lt;br /&gt;
==Ventajas==&lt;br /&gt;
&lt;br /&gt;
* Integración probada de servicios [[Web]]. &lt;br /&gt;
* Prestación de servicios de talla mundial. &lt;br /&gt;
* No necesita instalar ningún tipo de [[hardware]] o [[software]].&lt;br /&gt;
* Implementación más rápida y con menos riesgos. &lt;br /&gt;
* Gran capacidad de personalización. &lt;br /&gt;
* Más opciones para los usuarios comerciales. &lt;br /&gt;
* Actualizaciones automáticas que no afectan negativamente a los recursos de TI.&lt;br /&gt;
* Contribuye al uso eficiente de la energía.&lt;br /&gt;
&lt;br /&gt;
==Desventajas==&lt;br /&gt;
&lt;br /&gt;
* La centralización de las aplicaciones y el almacenamiento de los datos origina una dependencia de los Data Centers&lt;br /&gt;
* La disponibilidad de las aplicaciones dependen de la disponibilidad de acceso a internet. &lt;br /&gt;
* Los datos &amp;quot;sensibles&amp;quot; del negocio no residen en las instalaciones de las empresas por lo que podría generar un contexto de alta vulnerabilidad para la sustracción o robo de información en ecosistemas con baja reputación y seguridad laxa.&lt;br /&gt;
* La confiabilidad de los servicios depende de la &amp;quot;salud&amp;quot; tecnológica y financiera de los proveedores de servicios en nube. &lt;br /&gt;
* La disponibilidad de servicios altamente especializados podría tardar meses o incluso años para que sean factibles de ser desplegados en la red.&lt;br /&gt;
* Seguridad. La información de la empresa debe recorrer diferentes nodos para llegar a su destino, cada uno de ellos ( y sus canales) son un foco de inseguridad.&lt;br /&gt;
* Escalabilidad a largo plazo. A medida que más usuarios empiecen a compartir la infraestructura de la nube, la sobrecarga en los servidores de los proveedores aumentará, si la empresa no posee un esquema de crecimiento óptimo puede llevar a degradaciones en el servicio o [[jitter]] altos.&lt;br /&gt;
&lt;br /&gt;
==Tipos de Nubes==&lt;br /&gt;
&lt;br /&gt;
* Las nubes públicas son manejadas por terceras partes, y los trabajos de diferentes clientes pueden ser mezclados en los servidores.&lt;br /&gt;
* Las nubes privadas son una buena opción para las compañías lidiando con protección de datos y ediciones a nivel de servicio.&lt;br /&gt;
* Las nubes híbridas combinan los modelos de nubes públicas y privadas.&lt;br /&gt;
&lt;br /&gt;
==Comparaciones==&lt;br /&gt;
&lt;br /&gt;
La computación en nube usualmente es confundida con la computación en grid (red) (una forma de computación distribuida por la que &amp;quot;un súper computador virtual&amp;quot; está compuesto de un conjunto ó cluster enlazado de ordenadores débilmente acoplados, actuando en concierto para realizar tareas muy grandes)&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
&lt;br /&gt;
*[http://www.cloudcomputingguide.net/cloud-computers Cloud Computing Guide]&lt;br /&gt;
*[http://www.teletrabajo.com.uy/noticias/eficacia-y-rapidez-a-traves-de-cloud-computing/803/ Teletrabajo]&lt;br /&gt;
*[http://es.scribd.com/doc/36073367/Cloud-Computer Scribd]&lt;br /&gt;
*[http://www.parchegeek.com/cloud-computer-pros-y-contras Parche Geek]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/desarrolloSOA/2011/07/computacion-en-la-nube-y-soa/ Computación en la Nube y SOA]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/desarrolloSOA/2011/07/intranet-cubana-el-cable-y-computacion-en-la-nube/ El cable, la intranet cubana y la computación en la nube]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/desarrolloSOA/2011/07/proyecto-computacion-en-la-nubesoa/ Proyecto de Computación en la nube cubano]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/desarrolloSOA/2011/07/plataforma-de-servicio-web-para-la-telefonia-celular/ Plataforma para servicios celulares]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/desarrolloSOA/2011/07/comprendiendo-la-computacion-en-la-nube/ Comprendiendo la Computación en la Nube]&lt;br /&gt;
==Fuentes==&lt;br /&gt;
&lt;br /&gt;
*[http://techtastico.com/post/cloud-computing/ Techtastico]&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Cloud_computing Wikipedia]&lt;br /&gt;
*[http://www.itnews.ec/marco/000035.aspx Ttnews]&lt;br /&gt;
&lt;br /&gt;
[[Category:Computación_distribuida]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ansible&amp;diff=4471069</id>
		<title>Ansible</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ansible&amp;diff=4471069"/>
		<updated>2024-06-04T20:02:13Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Ansible&lt;br /&gt;
|familia=Internet&lt;br /&gt;
|imagen=Ansible_25p.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción='''Software para aprovisionamiento de equipos remotos'''&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador=[[Red Hat]]&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|fecha de creación=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|núcleo=&lt;br /&gt;
|tipo de núcleo=&lt;br /&gt;
|plataformas soportadas=Sistemas UNIXLike&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[GPL3]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Ansible''' es un software de aprovisionamiento de sistemas, desplieque de aplicaciones y servicios, y orquestación para servidores e infraestructura. Es un software de código abierto bajo la licencia GPL3&lt;br /&gt;
&lt;br /&gt;
=El problema del aprovisionamiento distribuido=&lt;br /&gt;
&lt;br /&gt;
Cuando se instala un sistema operativo nuevo a un equipo (o se reinstala sea por los motivos que sean), se le debe también instalar software adicional en forma de aplicaciones, servicios y otros programas para que el equipo sea funcional, esta labor de instalación y configuración adicional es lo que se le conoce como 'aprovisionamiento'&lt;br /&gt;
&lt;br /&gt;
Lo normal (sobretodo si es un número bajo de equipos) es realizar este aprovisionamiento de forma manual, tanto si es un equipo personal como si es a un número muy escaso y manejable de equipos. Pero cuando ese número de equipos es mayor el proceso de aprovisionamiento se vuelve tedioso y propenso a errores, y es aquí donde hay que considerar qué opciones hay para automatizar el proceso&lt;br /&gt;
&lt;br /&gt;
Hay muchas formas y métodos que han existido a lo largo de los años para automatizar los procesos de aprovisionamiento a gran escala, cualquier persona o empresa puede crear soluciones individuales, pero estas soluciones son a menudo sesgadas o específicas, y es aquí donde entra Ansible a resolver este problema&lt;br /&gt;
&lt;br /&gt;
=Características de Ansible=&lt;br /&gt;
&lt;br /&gt;
==Minimalista==&lt;br /&gt;
&lt;br /&gt;
Ansible no requiere la instalación de agentes en los equipos remotos para su funcionamiento&lt;br /&gt;
&lt;br /&gt;
==Declarativo==&lt;br /&gt;
&lt;br /&gt;
La configuración de Ansible no consiste en decirle que realice una serie de pasos (imperativo) hasta llegar al objetivo, lo que se le hace es declarar un estado y es Ansible el responsable de alcanzar ese estado por su propia cuenta&lt;br /&gt;
&lt;br /&gt;
==Extensible==&lt;br /&gt;
&lt;br /&gt;
Las capacidades de Ansible son extensibles a través de módulos creados por la comunidad, que van desde la instalación de simples programas hasta creación de usuarios, redes, servicios e infraestructuras enteras&lt;br /&gt;
&lt;br /&gt;
=Estructura y funcionamiento=&lt;br /&gt;
&lt;br /&gt;
Ansible se compone de un equipo principal o de control, que es el que va a tener instalado a Ansible y uno o más equipos remotos&lt;br /&gt;
&lt;br /&gt;
El equipo de control debe tener una comunicación ya configurada con cada equipo remoto mediante [[SSH]] (preferiblemente securizada mediante el uso de claves públicas y privadas y no por contraseña)&lt;br /&gt;
&lt;br /&gt;
Cuando Ansible desde el equipo de control manda a ejecutar órdenes, estas órdenes se envían mediante SSH al equipo remoto (o a todos) y el agente de Ansible es el encargado de ejecutar esas órdenes en el equipo remoto en forma de comandos y la respuesta de estos comandos se envía al equipo de control&lt;br /&gt;
&lt;br /&gt;
=Componentes=&lt;br /&gt;
&lt;br /&gt;
==Inventory==&lt;br /&gt;
&lt;br /&gt;
El Inventory (inventario) es el conjunto de equipos remotos, representados por su [[IP]] o por su [[nombre de dominio]]&lt;br /&gt;
&lt;br /&gt;
Los equipos en el inventario pueden dividirse en varios grupos para facilitar su administración&lt;br /&gt;
&lt;br /&gt;
Ansible no puede actuar sobre equipos que no existan en el inventario&lt;br /&gt;
&lt;br /&gt;
==Tasks==&lt;br /&gt;
&lt;br /&gt;
Las Tasks (tareas) son funciones en las cuales se declara un estado, y al ejecutarlas, Ansible debe encargarse de ejecutar serie de órdenes y comandos para llegar a ese estado&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, una Task para instalar el servidor web&amp;lt;ref&amp;gt;[[ Servidor_Web ]]&amp;lt;/ref&amp;gt; NGINX y configurarlo, implica que Ansible por su cuenta debe realizar las siguientes acciones:&lt;br /&gt;
&lt;br /&gt;
* Revisar si NGINX está instalado. En el caso de estarlo, marcar la tarea como completada&lt;br /&gt;
&lt;br /&gt;
* Instalar NGINX&lt;br /&gt;
&lt;br /&gt;
* Echar a andar el servicio de NGINX&lt;br /&gt;
&lt;br /&gt;
Es decir, la Task para instalar NGINX no es &amp;quot;instalar NGINX&amp;quot;, sino &amp;quot;NGINX debe estar instalado y funcionando&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las tareas nuevas se obtienen mediante la instalación de módulos&lt;br /&gt;
&lt;br /&gt;
==Playbooks==&lt;br /&gt;
&lt;br /&gt;
Las tareas pueden ejecutarse de forma individual si uno lo desea, pero si se van a ejecutar múltiples tareas, se debe usar un Playbook&lt;br /&gt;
&lt;br /&gt;
Un Playbook es un conjunto de tareas a realizar, y según el objetivo del playbook estas tareas pueden ejecutarse de formas específicas basándose en condiciones y resultados de otras tareas&lt;br /&gt;
&lt;br /&gt;
==Roles==&lt;br /&gt;
&lt;br /&gt;
Los roles son un tipo especial de playbook hechos para realizar trabajos complejos&lt;br /&gt;
&lt;br /&gt;
==Colecciones==&lt;br /&gt;
&lt;br /&gt;
Las colecciones son un formato de distribución de playbooks, tareas, roles y módulos que pueden compartirse con otros usuarios&lt;br /&gt;
&lt;br /&gt;
=Referencias=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Véase también=&lt;br /&gt;
&lt;br /&gt;
*[https://galaxy.ansible.com Repositorio de contenido para Ansible]*&lt;br /&gt;
&lt;br /&gt;
=Fuentes=&lt;br /&gt;
&lt;br /&gt;
*[https://docs.ansible.com Documentación oficial de Ansible]*&lt;br /&gt;
*[https://www.redhat.com/en/topics/automation/learning-ansible-tutorial Tutorial de Ansible en el sitio de RedHat]*&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Informática]]&lt;br /&gt;
[[Categoría:Computación_distribuida]]&lt;br /&gt;
[[Categoría:Sistemas_Automatizados]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ansible&amp;diff=4471066</id>
		<title>Ansible</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ansible&amp;diff=4471066"/>
		<updated>2024-06-04T19:59:48Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: Página creada con «{{Ficha Software |nombre=Ansible |familia=Internet |imagen=Ansible_25p.png |tamaño= |descripción='''Software para aprovisionamiento de equipos remotos''' |imagen2= |tama…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Ansible&lt;br /&gt;
|familia=Internet&lt;br /&gt;
|imagen=Ansible_25p.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción='''Software para aprovisionamiento de equipos remotos'''&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador=[[Red Hat]]&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|fecha de creación=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|núcleo=&lt;br /&gt;
|tipo de núcleo=&lt;br /&gt;
|plataformas soportadas=Sistemas UNIXLike&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[GPL3]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Ansible''' es un software de aprovisionamiento de sistemas, desplieque de aplicaciones y servicios, y orquestación para servidores e infraestructura. Es un software de código abierto bajo la licencia GPL3&lt;br /&gt;
&lt;br /&gt;
=El problema del aprovisionamiento distribuido=&lt;br /&gt;
&lt;br /&gt;
Cuando se instala un sistema operativo nuevo a un equipo (o se reinstala sea por los motivos que sean), se le debe también instalar software adicional en forma de aplicaciones, servicios y otros programas para que el equipo sea funcional, esta labor de instalación y configuración adicional es lo que se le conoce como 'aprovisionamiento'&lt;br /&gt;
&lt;br /&gt;
Lo normal (sobretodo si es un número bajo de equipos) es realizar este aprovisionamiento de forma manual, tanto si es un equipo personal como si es a un número muy escaso y manejable de equipos. Pero cuando ese número de equipos es mayor el proceso de aprovisionamiento se vuelve tedioso y propenso a errores, y es aquí donde hay que considerar qué opcio es hay para automatizar el proceso&lt;br /&gt;
&lt;br /&gt;
Hay muchas formas y métodos que han existido a lo largo de los años para automatizar los procesos de aprovisionamiento a gran escala, cualquier persona o empresa puede crear soluciones individuales, pero estas soluciones son a menudo sesgadas o específicas, y es aquí donde entra Ansible a resolver este problema&lt;br /&gt;
&lt;br /&gt;
=Características de Ansible=&lt;br /&gt;
&lt;br /&gt;
==Minimalista==&lt;br /&gt;
&lt;br /&gt;
Ansible no requiere la instalación de agentes en los equipos remotos para su funcionamiento&lt;br /&gt;
&lt;br /&gt;
==Declarativo==&lt;br /&gt;
&lt;br /&gt;
La configuración de Ansible no consiste en decirle que realice una serie de pasos (imperativo) hasta llegar al objetivo, lo que se le hace es declarar un estado y es Ansible el responsable de alcanzar ese estado por su propia cuenta&lt;br /&gt;
&lt;br /&gt;
==Extensible==&lt;br /&gt;
&lt;br /&gt;
Las capacidades de Ansible son extensibles a través de módulos creados por la comunidad, que van desde la instalación de simples programas hasta creación de usuarios, redes, servicios e infraestructuras enteras&lt;br /&gt;
&lt;br /&gt;
=Estructura y funcionamiento=&lt;br /&gt;
&lt;br /&gt;
Ansible se compone de un equipo principal o de control, que es el que va a tener instalado a Ansible y uno o más equipos remotos&lt;br /&gt;
&lt;br /&gt;
El equipo de control debe tener una comunicación ya configurada con cada equipo remoto mediante [[SSH]] (preferiblemente securizada mediante el uso de claves públicas y privadas y no por contraseña)&lt;br /&gt;
&lt;br /&gt;
Cuando Ansible desde el equipo de control manda a ejecutar órdenes, estas órdenes se envían mediante SSH al equipo remoto (o a todos) y el agente de Ansible es el encargado de ejecutar esas órdenes en el equipo remoto en forma de comandos y la respuesta de estos comandos se envía al equipo de control&lt;br /&gt;
&lt;br /&gt;
=Componentes=&lt;br /&gt;
&lt;br /&gt;
==Inventory==&lt;br /&gt;
&lt;br /&gt;
El Inventory (inventario) es el conjunto de equipos remotos, representados por su [[IP]] o por su [[nombre de dominio]]&lt;br /&gt;
&lt;br /&gt;
Los equipos en el inventario pueden dividirse en varios grupos para facilitar su administración&lt;br /&gt;
&lt;br /&gt;
Ansible no puede actuar sobre equipos que no existan en el inventario&lt;br /&gt;
&lt;br /&gt;
==Tasks==&lt;br /&gt;
&lt;br /&gt;
Las Tasks (tareas) son funciones en las cuales se declara un estado, y al ejecutarlas, Ansible debe encargarse de ejecutar serie de órdenes y comandos para llegar a ese estado&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, una Task para instalar el servidor web&amp;lt;ref&amp;gt;[[ Servidor_Web ]]&amp;lt;/ref&amp;gt; NGINX y configurarlo, implica que Ansible por su cuenta debe realizar las siguientes acciones:&lt;br /&gt;
&lt;br /&gt;
* Revisar si NGINX está instalado. En el caso de estarlo, marcar la tarea como completada&lt;br /&gt;
&lt;br /&gt;
* Instalar NGINX&lt;br /&gt;
&lt;br /&gt;
* Echar a andar el servicio de NGINX&lt;br /&gt;
&lt;br /&gt;
Es decir, la Task para instalar NGINX no es &amp;quot;instalar NGINX&amp;quot;, sino &amp;quot;NGINX debe estar instalado y funcionando&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las tareas nuevas se obtienen mediante la instalación de módulos&lt;br /&gt;
&lt;br /&gt;
==Playbooks==&lt;br /&gt;
&lt;br /&gt;
Las tareas pueden ejecutarse de forma individual si uno lo desea, pero si se van a ejecutar múltiples tareas, se debe usar un Playbook&lt;br /&gt;
&lt;br /&gt;
Un Playbook es un conjunto de tareas a realizar, y según el objetivo del playbook estas tareas pueden ejecutarse de formas específicas basándose en condiciones y resultados de otras tareas&lt;br /&gt;
&lt;br /&gt;
==Roles==&lt;br /&gt;
&lt;br /&gt;
Los roles son un tipo especial de playbook hechos para realizar trabajos complejos&lt;br /&gt;
&lt;br /&gt;
==Colecciones==&lt;br /&gt;
&lt;br /&gt;
Las colecciones son un formato de distribución de playbooks, tareas, roles y módulos que pueden compartirse con otros usuarios&lt;br /&gt;
&lt;br /&gt;
=Referencias=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Véase también=&lt;br /&gt;
&lt;br /&gt;
*[https://galaxy.ansible.com Repositorio de contenido para Ansible]*&lt;br /&gt;
&lt;br /&gt;
=Fuentes=&lt;br /&gt;
&lt;br /&gt;
*[https://docs.ansible.com Documentación oficial de Ansible]*&lt;br /&gt;
*[https://www.redhat.com/en/topics/automation/learning-ansible-tutorial Tutorial de Ansible en el sitio de RedHat]*&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Informática]]&lt;br /&gt;
[[Categoría:Computación_distribuida]]&lt;br /&gt;
[[Categoría:Sistemas_Automatizados]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Servidor_Web&amp;diff=4471065</id>
		<title>Servidor Web</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Servidor_Web&amp;diff=4471065"/>
		<updated>2024-06-04T19:57:12Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Servidores Web&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Servidores.jpg‎&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Sistema usado para estandarizar la comunicación entre distintas plataformas  y lenguajes de programación.&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=&lt;br /&gt;
|premios=&lt;br /&gt;
|web=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Servidor Web'''. Es un programa que gestiona cualquier [[#Aplicación del lado del servidor|aplicación en el lado del servidor]] realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente generando una respuesta en cualquier lenguaje o [[#Funcionamiento|aplicación en el lado del cliente]]. El código recibido por el cliente suele ser compilado y ejecutado por un [[Navegador Web]]. Para la transmisión de todos estos datos se utiliza algún protocolo. Generalmente se utiliza el protocolo [[HTTP]] para estas comunicaciones, perteneciente a la capa de aplicación del [[Modelo OSI]]. El término también se emplea para referirse al ordenador que ejecuta el programa. &lt;br /&gt;
&lt;br /&gt;
== Historia ==&lt;br /&gt;
Los [[Servicios_Web|Servicios Web]] surgieron ante una necesidad de estandarizar la comunicación entre distintas plataformas (PC, [[Mainframe]], Mac, etc.) y lenguajes de programación ([[PHP]], [[C]], [[Java]], etc.). Anteriormente se habían realizado intentos de crear estándares pero fracasaron o no tuvieron el suficiente éxito, algunos de ellos son DCOM y CORBA, por ser dependientes de la implementación del vendedor DCOM – [[Microsoft]], y CORBA – ORB (a pesar que CORBA de múltiples vendedores pueden operar entre si, hay ciertas limitaciones para aplicaciones de niveles más altos en los cuales se necesite seguridad o administración de transacciones).&lt;br /&gt;
&lt;br /&gt;
Otro gran problema es que se hacía uso de [[RPC]] (Remote Procedure Call) para realizar la comunicación entre diferentes nodos. Esto, además de presentar ciertos problemas de seguridad, tiene la desventaja de que su implementación en un ambiente como es [[Internet]], es casi imposible (muchos Firewalls bloquean este tipo de mensajes, lo que hace prácticamente imposible a dos computadoras conectadas por Internet comunicarse). Los Servicios Web surgieron para finalmente poder lograr la tan esperada comunicación entre diferentes plataformas. En la actualidad muchos sistemas legacy están pasando a ser servicios web. Es por esto que en [[1999]] se comenzó a plantear un nuevo estándar, el cual terminaría utilizando [[XML]], [[SOAP]], WSDL, y UDDI.&lt;br /&gt;
&lt;br /&gt;
A pesar de mucho limitar el uso de los servicios Web al Protocolo http, los servicios Web no fueron pensados para un protocolo en particular, es decir, nada impidió utilizar [[SOAP]] sobre algún otro protocolo de Internet ([[SMTP]], [[FTP]], etc.). Se utiliza principalmente HTTP por ser un protocolo ampliamente difundido y que se encuentra menos restringido por firewalls (generalmente se bloquean puertos como el FTP, pero el HTTP es muy probable que no este bloqueado).&lt;br /&gt;
&lt;br /&gt;
[[Image:Primer servidor web.png|thumb|left|356x196px|Primer Servidor Web]]&lt;br /&gt;
La década de los 80's fue marcada por el surgimiento de la PC y de la interfase gráfica. Entre [[1988]] y [[1993]], NeXT fabricó una estación de trabajo de altas prestaciones para la época de la que hablamos que impulsó con el [[Sistema operativo]] de la casa, el NeXTSTEP. Contaba con un micro de la serie (68040) de Motorota capaz de trabajar a 25 MHz, una memoria de 8 MB ampliables a 64 MB y un monitor de 17''. La máquina, que costaba 6500 dólares, recibió el nombre de NeXT Computer, aunque se le acabó conociendo como NeXTcube o, simplemente, &amp;quot;The Cube&amp;quot;. Más allá de su [[Hardware]] y sus posibilidades técnicas, la NeXT Computer ha pasado a formar parte de la pequeña gran historia de la informática por ser el ordenador que [[Tim Berners-Lee]], el &amp;quot;inventor&amp;quot; de Internet, '''se utilizó por primera vez como un Servidor Web'''.&lt;br /&gt;
&lt;br /&gt;
En la década de los 90's Internet permitió conectar computadoras en una escala global. En principio la conexión fue entre PCs y servidores por medio del explorador de Internet. A comienzos de este siglo es clara la necesidad de permitir a las computadoras conectadas a Internet comunicarse entre ellas. Desde entonces se va dando forma al nuevo modelo de computación distribuida llamado servicios Web basados en [[XML]]. El objetivo es permitir comunicarse entre sí a sistemas heterogéneos dentro y fuera de la empresa. Esta comunicación es independiente del [[Sistema Operativo]], lenguaje o modelo de programación. Para conseguir esto se desarrollaron estándares. El consorcio de Internet http://www.w3c.org fue el encargado de crear y mantener estos estándares.&lt;br /&gt;
&lt;br /&gt;
Desde los inicios de [[Internet]], fueron surgiendo diferentes demandas por los usuarios y se dieron soluciones mediante lenguajes estáticos. A medida que paso el tiempo, las tecnologías fueron desarrollándose y surgieron nuevos problemas a dar solución. Esto dio lugar a desarrollar lenguajes de programación para la Web dinámicos, que permitieran interactuar con los usuarios y utilizaran sistemas de [[Bases de Datos]].&lt;br /&gt;
&lt;br /&gt;
Antes de la adopción del modelo de Servicios Web basados en XML los datos eran “islas” que se encontraban dentro de las aplicaciones. Era muy difícil y costoso implementar soluciones para acceder a la información desde afuera de la aplicación. Las aplicaciones pueden ahora, comunicarse entre sí y con los sistemas de sus socios, proveedores y clientes gracias a los Servicios Web y XML.&lt;br /&gt;
&lt;br /&gt;
== Servicios ==&lt;br /&gt;
*'''Internet''': [[Internet]] es una [[Red]] de [[Ordenador]]es conectados en toda la extensión del Globo Terráqueo, que ofrece diversos servicios a sus usuarios como pueden ser el [[Correo electrónico]], el Chat o la Web. Todos los servicios que ofrece Internet son llevados a cabo por miles de ordenadores que están permanentemente encendidos y conectados a Internet, esperando que los usuarios les soliciten los servicios y sirviéndolos una vez son solicitados.&lt;br /&gt;
&lt;br /&gt;
*'''Página Web''': Documento o fuente de información, generalmente en formato [[HTML]] y que puede contener hiperenlaces a otras [[Páginas Web]]. Dicha página , podrá ser accesible desde un dispositivo físico, una intranet, o [[Internet]].&lt;br /&gt;
&lt;br /&gt;
*'''Navegador Web''': Para establecer conexiones con los servidores Web, y obtener la información y los servicios que estos prestan, el usuario necesita tener instalado en su equipo un programa cliente capaz de comunicarse con ellos. Estos programas son los llamados [[Navegadores Web]]. Los [[Navegadores Web]], también llamados Visores de Web o Browsers, son aplicaciones que permiten ver en pantalla texto con formato (con palabras en negrita, y con distintas fuentes tipográficas, tamaños y colores) y presentar [[imágenes]] en línea. También permiten visualizar secuencias de vídeo y escuchar ficheros de sonido.&lt;br /&gt;
&lt;br /&gt;
*'''Servidor''': Un [[Servidor]] es un tipo de [[Software]] que suministra servicios a los usuarios o terminales que lo solicitan. Por ejemplo, en una típica [[Arquitectura]] Cliente-servidor, el cliente podría ser un ordenador que realiza peticiones de información a través de un programa de correo ([[Outloock Express|Outlook Express]] por ejemplo) y, el servidor le entrega los datos en forma de correos electrónicos en respuesta a su solicitud. Un servidor no es necesariamente una máquina de última generación de grandes proporciones, no es necesariamente un superordenador; un servidor puede ser desde una computadora vieja, hasta una máquina sumamente potente (ej. Servidores web, bases de datos grandes, etc., procesadores especiales y hasta varios gigabytes de memoria).&lt;br /&gt;
&lt;br /&gt;
Todo esto depende del uso que se le dé al servidor. Si usted lo desea, puede convertir al equipo desde el cual se está trabajando en un servidor instalando un programa que trabaje por la [[Red]] y a la que los usuarios de su red ingresen a través de un programa de servidor web como [[servidores HTTP Apache|Apache]]. Por lo cual podemos llegar a la conclusión de que un servidor también puede ser un proceso que entrega información o sirve a otro proceso. &lt;br /&gt;
&lt;br /&gt;
El modelo [[Cliente-Servidor]] no necesariamente implica tener dos ordenadores, ya que un proceso cliente puede solicitar algo como una impresión a un proceso servidor en un mismo ordenador. Cliente/servidor: Esta [[Arquitectura]] consiste básicamente en un programa cliente que realiza peticiones a otro programa el servidor que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un [[Sistema Operativo]] multiusuario distribuido a través de una red de computadoras.&lt;br /&gt;
&lt;br /&gt;
En esta [[Arquitectura]] la capacidad de proceso está repartida entre los Clientes y los [[Servidores]], aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre Cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa.&lt;br /&gt;
&lt;br /&gt;
Los tipos específicos de servidores que incluyen son los [[Servidores Web]], los Servidores de archivo, los [[Servidor de correo|Servidores del correo]], etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los Sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.&lt;br /&gt;
&lt;br /&gt;
== Protocolos del Servidor Web ==&lt;br /&gt;
Un servidor web es un programa que sirve datos en forma de [[Páginas Web]], hipertextos o páginas [[HTML]] (HyperText Markup Language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de sonidos. La comunicación de estos datos entre cliente y servidor se hace por medio un protocolo, concretamente del protocolo Http. Con esto, un servidor Web se mantiene a la espera de peticiones HTTP, que son ejecutadas por un cliente HTTP; lo que solemos conocer como un [[Navegador Web]]. A modo de ejemplo: al teclear (http://www.cnice.mec.es) en un navegador, éste realizará una petición HTTP al servidor que tiene asociada dicha [[URL]].  &lt;br /&gt;
&lt;br /&gt;
El servidor responde al cliente enviando el código HTML de la página; el navegador cuando recibe el código, lo interpreta y lo muestra en pantalla. El [[Cliente]] es el encargado de interpretar el código HTML, es decir, de mostrar las fuentes, los colores y la disposición de los textos y objetos de la página. El servidor se encarga de transferir el código de la página sin llevar a cabo ninguna interpretación de la misma.&lt;br /&gt;
&lt;br /&gt;
=== Servidor Web Local ===&lt;br /&gt;
Tener un servidor Web local debería ser fundamental para todas aquellas personas que no disponen de un Sitio Web online. ¿Por qué? La respuesta es muy sencilla. El Servidor local nos va a permitir comprobar que todas las modificaciones que se van a realizar en nuestro diseños Web, no provoquen algún error que pueda afectar a todos aquellos usuarios que naveguen por la red. Otro aspecto positivo de un Servidor local, es que no hará falta tener que subir ficheros al servidor [[Ftp]] para hacer nuestras pruebas con lo cual, la espera se hace más corta.  &lt;br /&gt;
&lt;br /&gt;
Como es de suponer, también se permite el acceso a nuestro servidor a cualquier usuario de [[Internet]]. Para ello, se configura correctamente el [[Router]] y sería de mucha ayuda tener una dirección IP estática, mediante la cual cualquier usuario podría conectarse a nuestro servidor desde un navegador.&lt;br /&gt;
&lt;br /&gt;
'''Protocolo:''' Conjunto de reglas que gobiernan el intercambio de datos entre entidades dentro de una red. Es el lenguaje común “que utilizan” los ordenadores para “hablar” y entenderse entre sí. Existen muchos tipos de protocolos cada uno con sus reglas bien definidas, como por ejemplo: [[FTP]], [[POP3]], [[SMTP]], [[ICMP]], etc.&lt;br /&gt;
&lt;br /&gt;
'''Protocolo HTTP:''' Una de las características del [[Protocolo]] Http es que no es permanente, es decir, cada operación HTTP implica una conexión con el servidor, que es liberada al término de la misma. Por ejemplo, un documento [[HTML]] con 10 imágenes son necesarias 11 conexiones distintas (10 imágenes más la página HTML en sí).&lt;br /&gt;
&lt;br /&gt;
=== Servidores de aplicaciones ===&lt;br /&gt;
Un [[Servidor de Aplicaciones]] no es más que un cambio de nombre, para algunos [[Servidores Web]] de nueva generación que proporcionan la lógica de negocio sobre la que construir aplicaciones. Suelen asociarse con servidores de alto rendimiento pensados para dar servicio a sitios Web (Web Sites) con grandes necesidades: afluencia de visitas, movimiento de datos, atención de transacciones hacia bases de datos, etc. Generalmente los fabricantes del sector tienen a disposición del público un servidor Web básico y otro con multitud de extensiones fuertemente integradas al que llaman [[Servidor de Aplicaciones]].&lt;br /&gt;
&lt;br /&gt;
== Pasos para la petición de una página Web ==&lt;br /&gt;
Primero, el navegador solicita como Cliente DNS la traducción de una [[URL]] (por ejemplo http://www.mec.es) a una IP y segundo, una vez que ha recibido la traducción del Servidor DNS, se realiza la petición HTTP al servidor que tenga la IP concreta. Fijémonos que si ponemos la IP en vez de la dirección en el Navegador, también funciona. Además, carece de estado. Cada petición de un cliente a un servidor no es influida por las transacciones anteriores.&lt;br /&gt;
&lt;br /&gt;
El [[Servidor]] trata cada petición como una operación totalmente independiente del resto. A partir de la versión 1.1 del Protocolo http, se pueden habilitar conexiones persistentes (permiten enviar más objetos con un menor número de conexiones.&lt;br /&gt;
&lt;br /&gt;
== Funcionamiento de un Servidor Web ==&lt;br /&gt;
'''La Web''' funciona siguiendo el [[Modelo cliente-servidor]]. Un [[Servidor]] se encarga de prestar el servicio, y un cliente que es quien recibe dicho servicio.&lt;br /&gt;
&lt;br /&gt;
'''Cliente Web''': Es un programa mediante el cual el usuario solicita a un [[Servidores Web]] el envío de información. Esta información se transfiere mediante el [[Protocolo HTTP]].&lt;br /&gt;
Información que recibe: La información que se recibe es un conjunto de documentos de texto codificados en lenguaje [[HTML]]. &lt;br /&gt;
&lt;br /&gt;
El Cliente Web debe interpretar estos documentos para mostrárselos al usuario en el formato correspondiente. Cuando la información recibida no es un documento de texto, sino un objeto multimedia que el cliente no sabe interpretar, el propio cliente Web debe activar una aplicación externa encargada de gestionarlo. Clientes Web más habituales: Los clientes Web más habituales son [[Microsoft Internet Explorer]], [[Mozilla Firefox]] y [[Netscape]] Navigator.&lt;br /&gt;
&lt;br /&gt;
=== Arquitectura Modelo Cliente – Servidor ===&lt;br /&gt;
[[Image:Cliente servidor.png|left|Cliente servidor.png]]&lt;br /&gt;
Diversas aplicaciones se ejecutan en un entorno Cliente/servidor. Esto significa que los equipos clientes (equipos que forman parte de una red) contactan a un servidor, un equipo generalmente muy potente en materia de capacidad de entrada/salida, que proporciona servicios a los equipos clientes. Estos servicios son programas que proporcionan datos como la hora, archivos, una conexión, etc.&lt;br /&gt;
&lt;br /&gt;
Los servicios son utilizados por programas denominados programas clientes que se ejecutan en equipos clientes. Por eso se utiliza el término &amp;quot;cliente&amp;quot; (cliente [[FTP]], cliente de correo electrónico, etc.) cuando un programa que se ha diseñado para ejecutarse en un equipo cliente, capaz de procesar los datos recibidos de un servidor (en el caso del cliente [[FTP]] se trata de archivos, mientras que para el cliente de correo electrónico se trata de [[correo electrónico]]). &lt;br /&gt;
&lt;br /&gt;
En la manera de describir la forma de trabajo entre los clientes y los ordenadores se define:&lt;br /&gt;
'''Cliente''': Es el ordenador que pide información a otro, mediante la aplicación de un programa llamado cliente. Este contacta con el servidor y Da formato a la petición de la información y da formato a la respuesta. &lt;br /&gt;
&lt;br /&gt;
'''Servidor''': Es el ordenador que ofrece la información mediante la aplicación de un programa llamado servidor que: Recibe la información y la procesa y responde enviando la petición al cliente.&lt;br /&gt;
 &lt;br /&gt;
El servidor Web se ejecuta en un ordenador manteniéndose a la espera de peticiones por parte de un cliente (un navegador Web) y que responde a estas peticiones, mediante una [[Página Web]] que se exhibirá en el navegador o mostrando el respectivo mensaje si se detectó algún error. A modo de ejemplo, al escribir la siguiente dirección en el navegador, [[http://www.ecured.cu www.ecured.cu]], éste realiza una petición al servidor de dicha dirección. El servidor responde al cliente enviando el código [[HTML]] de la página; el cliente, una vez recibido el código, lo interpreta y lo muestra en pantalla. Como observamos en este ejemplo, el cliente es el encargado de compilar y ejecutar el código HTML, es decir, de mostrar las fuentes, los colores y la disposición de los textos y objetos de la página Web; el servidor tan sólo se limita a transferir el código de la página sin realizar ninguna interpretación de la misma. Además de la transferencia de código HTML, los servidores Web pueden entregar aplicaciones Web. Éstas son bloques de código que se ejecutan cuando se realizan ciertas peticiones o respuestas. Se distinguen entre: &lt;br /&gt;
&lt;br /&gt;
*'''Aplicaciones en el lado del cliente:''' el cliente Web es el encargado de ejecutarlas en la máquina del usuario. Son las aplicaciones tipo [[Java]] &amp;quot;applets&amp;quot; o [[Javascript]]. El servidor proporciona el código de las aplicaciones al cliente y éste las ejecuta mediante el navegador Web. Por tanto, es necesario que el cliente disponga de un navegador con capacidad para ejecutar aplicaciones (también llamadas [[Script(Informática)|Scripts]]). Generalmente, los navegadores permiten ejecutar aplicaciones escritas en lenguaje Javascript y Java, aunque pueden añadirse más lenguajes mediante el uso de plugins.&lt;br /&gt;
&lt;br /&gt;
*'''Aplicaciones en el lado del servidor:''' el servidor Web ejecuta la aplicación; ésta, una vez ejecutada, genera código HTML; el servidor envía al cliente este código recién creado por medio del protocolo HTTP.&lt;br /&gt;
&lt;br /&gt;
Las aplicaciones en el lado del servidor mayormente suelen ser la mejor opción para desarrollar aplicaciones Web. La razón es que, al ejecutarse ésta en el servidor y no en la máquina del cliente, éste último no necesita ninguna capacidad añadida para ejecutar la aplicación, como sí ocurre en el caso de querer ejecutar aplicaciones que incluyan scripts con javascript o java. Así pues, cualquier cliente que disponga de un navegador Web básico puede utilizar este tipo de aplicaciones. &lt;br /&gt;
&lt;br /&gt;
== Aplicaciones en el lado del servidor  ==&lt;br /&gt;
&lt;br /&gt;
Una aplicación en el lado del servidor es cualquier programa o conjunto de instrucciones diseñadas con la finalidad de que un servidor Web las procese para realizar alguna acción. Las aplicaciones del lado del servidor están escritas mediante un lenguaje de programación, entre los que más se utilizan están los siguientes: &lt;br /&gt;
&lt;br /&gt;
*[[PHP]] &lt;br /&gt;
*[[ASP]] &lt;br /&gt;
*[[Perl]] &lt;br /&gt;
*[[Python]] &lt;br /&gt;
*[[Ruby]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Servidores basados en procesos ===&lt;br /&gt;
Este diseño es el predecesor de todos los demás. Se basa en la obtención de paralelismo mediante la duplicación del proceso de ejecución. Existen varios diseños basados en procesos. El más simple es en el que el proceso principal espera la llegada de una nueva conexión y en ese momento, se duplica creando una copia exacta que atenderá esta conexión. Sobre esta opción de diseño caben optimizaciones importantes, como las que incluyó [[servidor Apache|Apache]] con la técnica de pre-fork.&lt;br /&gt;
&lt;br /&gt;
'''Técnica pre-fork'''. Consiste en la creación previa de un grupo de procesos y su mantenimiento hasta que sea necesaria su utilización. Las principales ventajas de este diseño residen en su simplicidad de implementación y su seguridad. La gran desventaja de este diseño es el bajo rendimiento. La creación o eliminación de un proceso son tareas pesadas para el sistema operativo y consumen una gran cantidad de tiempo.&lt;br /&gt;
&lt;br /&gt;
=== Servidores basados en hilos ===&lt;br /&gt;
Este tipo de diseño hoy en día es mucho más común que el basado en procesos. Los conceptos básicos respecto al funcionamiento de un servidor basado en procesos son aplicables también a este modelo. Las principales diferencias de los dos modelos residen en el propio concepto de hilo. La ventaja es que la creación de un hilo no es tan costosa como la de un proceso. Varios hilos de un mismo proceso pueden compartir datos entre ellos, ya que comparten el mismo espacio de memoria. &lt;br /&gt;
&lt;br /&gt;
El modelo de servidor basado en hilos hereda muchas de las características de los Servidores basados en procesos, entre ellas la de la simplicidad en su diseño e implementación. Por otro lado, el compartir el espacio de memoria implica un riesgo de seguridad que no tienen los servidores basado en procesos.&lt;br /&gt;
&lt;br /&gt;
'''Hilos y procesos'''.'''Proceso''': Es una ocurrencia o instancia de un programa en ejecución. Además, un proceso es propietario de una serie de recursos como: un espacio de direcciones en memoria, ficheros, hilos, etc.&lt;br /&gt;
&lt;br /&gt;
'''Hilo''': Es un proceso totalmente aislado es un proceso inerte, es decir, para que un proceso sea capaz de hacer algo, el proceso debe ser propietario de al menos un hilo (thread). El hilo es el responsable de ejecutar el Código contenido en el espacio de direcciones del proceso. De hecho, un proceso puede contener varios hilos y todos ellos ejecutando código &amp;quot;simultáneamente&amp;quot; en el espacio de direcciones del proceso y compartiendo recursos comunes. &lt;br /&gt;
&lt;br /&gt;
Al compartir todos los hilos de un proceso la misma zona de memoria, si un hilo toca una variable, todos los demás hilos del mismo proceso verán el nuevo valor de la variable. Si no hay hilos ejecutando código en el espacio de direcciones del proceso no hay ninguna razón para que el proceso continúe existiendo y el sistema destruirá automáticamente el proceso y su espacio en memoria.&lt;br /&gt;
&lt;br /&gt;
=== Servidores basado en sockets no bloqueantes o dirigidos por eventos ===&lt;br /&gt;
Estos servidores basan su funcionamiento en la utilización de lecturas y escrituras asíncronas sobre [[Sockets]]. Normalmente, estos servidores utilizan una llamada al sistema que examine el estado de los sockets con los que trabaja. Cada sistema operativo implementa una o más funciones de examen de sockets. El objetivo de estas funciones es inspeccionar el estado de un grupo de sockets asociados a cada una de las conexiones.&lt;br /&gt;
&lt;br /&gt;
*La ventaja de este diseño es principalmente su velocidad.  &lt;br /&gt;
*La desventaja es que la concurrencia es simulada; es decir, existe un sólo proceso y un sólo hilo, desde el cual se atienden todas las conexiones. &lt;br /&gt;
&lt;br /&gt;
'''Socket''': No son más que puntos o medios de comunicación entre dos aplicaciones que permiten que un proceso hable (emita o reciba información) con otro proceso estando los dos en distintas máquinas. Lo vemos mejor con un dibujo: &lt;br /&gt;
                                   &lt;br /&gt;
[[Image:Socket.png]]  &lt;br /&gt;
&lt;br /&gt;
Si extrapolamos el concepto a la comunicación entre personas, un socket es al sistema de comunicación entre ordenadores lo que un teléfono es al sistema de comunicación entre personas: un punto de comunicación entre dos agentes (procesos o personas respectivamente) por el cual se puede emitir o recibir información.&lt;br /&gt;
&lt;br /&gt;
=== Servidores implementados en el kernel ===&lt;br /&gt;
Este diseño es un poco especial. Se trata de un intento de acelerar la velocidad de un servidor Web mediante el movimiento de su código de espacio de usuario a espacio de kernel. En teoría este modelo se muestra muy eficiente, pero de cara al mundo real, los problemas e inconvenientes son muy grandes. Hay que tener en cuenta que cualquier problema que se produzca a nivel de kernel puede ocasionar la caída de todo el sistema completo.&lt;br /&gt;
&lt;br /&gt;
== Servidores más usados ==&lt;br /&gt;
=== Apache ===&lt;br /&gt;
El [[servidor Apache]] está diseñado para ser un servidor web potente y flexible que pueda funcionar en la más amplia variedad de plataformas y entornos. Las diferentes plataformas y entornos, hacen que a menudo sean necesarias diferentes características o funcionalidades. [[Apache]] se ha adaptado siempre a una gran variedad de entornos a través de su diseño modular.&lt;br /&gt;
&lt;br /&gt;
Este diseño permite a los administradores de [[sitios web]] elegir que características van a ser incluidas en el servidor seleccionando que módulos se van a cargar, ya sea al compilar o al ejecutar el servidor. Este es el más común y más utilizado en todo el mundo. &lt;br /&gt;
&lt;br /&gt;
Además, es gratuito, y de [[código abierto]], así que podríamos decir que corre sobre cualquier plataforma. El [[servidor Apache]] es una muestra, al igual que el [[Sistema Operativo]] [[Linux]] (un [[Unix]] desarrollado inicialmente para PC), de que el trabajo voluntario y cooperativo dentro de [[Internet]] es capaz de producir aplicaciones de calidad profesional difíciles de igualar.&lt;br /&gt;
&lt;br /&gt;
=== Microsoft IIS ===&lt;br /&gt;
Es el [[Servidor]] [[Web]] de [[Microsoft]], el [[IIS]] (Internet Informatión Server), es el motor que ofrece esta compañía a modo profesional, con él es posible programar en [[ASP]] (Active Server Pages, Páginas de Servidor Activo) las cuales vienen a ser algo similares al PHP, este servidor posee componentes programables desde ASP accediendo a cada uno de sus módulos para una función específica. &lt;br /&gt;
&lt;br /&gt;
Este tipo de servidor lo llevan sólo los sistemas [[Windows NT]], por tanto añadimos Windows 2000 Professional, [[Windows]] 2000 Advanced Server, Windows XP Professional, los cuales traen las versiones 4.0, 5.0 y 5.1, no obstante en la versión del Windows .NET Server vendrá la versión 6.0 (dicho sistema está en fase beta y que se puede descargar desde la misma sede de Microsoft, sólo es necesario registrarse). &lt;br /&gt;
&lt;br /&gt;
En los sistemas [[Windows XP]] el IIS no viene instalado por defecto por tanto hemos de tener el CD con el sistema completo a mano para instalarlo desde:&lt;br /&gt;
&lt;br /&gt;
=== Sun Java System Web Server ===&lt;br /&gt;
Es un servidor Web de alto rendimiento, de escalabilidad masiva y seguro que ofrece contenido dinámico y estático. Las características de virtualización de dominio, versatilidad de configuración y seguridad robusta, brindan una mejor calidad de servicio.&lt;br /&gt;
&lt;br /&gt;
=== NGINX===&lt;br /&gt;
NGINX (se pronuncia “engine x”) es un [[Servidor]] http y proxy inverso gratuito, de [[Código abierto]] y de alto rendimiento, además de ser [[Servidor proxy]] para [[IMAP]] y [[POP3]].Este servidor esta actualmente manejando entre el 1% y el 4% de todos los dominios globales. A pesar de ser todavía una versión “beta”, Nginx es conocido por su estabilidad, su gran conjunto de características, una configuración sencilla y por consumir pocos recursos. Como este servidor no provee actualmente de un adaptador directo para Merb, usted requerirá utilizar un proxy reverso en Nginx con el fin de direccionar peticiones hacia uno o varios procesos Merb distintos. Esto puede ejecutarse con cualquier Servidor de aplicaciones basado en Rack, como Mongrel, Thin, Ebb o [[Glassfish]].&lt;br /&gt;
&lt;br /&gt;
=== Lighttp ===&lt;br /&gt;
Es un servidor Web para los Sistemas operativos Unix/Linux y [[Microsoft Windows]]. Este servidor también conocido como Lighty, es una alternativa para el [[servidor de páginas web Apache]]. Esta diseñado para ser seguro, rápido (muy rápido a decir verdad), compatible con los estandars y flexible a la vez que esta optimizado para entornos en los cuales la velocidad es critica. &lt;br /&gt;
&lt;br /&gt;
Su huella de memoria es muy pequeña (en comparacion a otros servidores Web), una ligera carga en el CPU y su enfoque en velocidad hacen de lighttpd perfecto para servidores con demasiada carga.  &lt;br /&gt;
Este servidor Web es otro de los más ligeros que hay en el mercado. Está especialmente pensado para hacer cargas pesadas sin perder balance, utilizando poca [[RAM]] y poca de [[CPU]]. Algunas páginas populares que lo usan son Youtube, [[Wikipedia]] y otras que soportan gran tráfico diariamente. También es gratuito y se distribuye bajo Licencia BSD.&lt;br /&gt;
&lt;br /&gt;
== Funcionamiento en la actualidad ==&lt;br /&gt;
El uso de los [[Servicios Web]] integra la información que puede ser accedida desde distintos dispositivos, desde distintas plataformas de [[Hardware]] o [[Software]] y que puede estar guardada en distintos formatos. El lenguaje estándar para lograr esta integración es [[XML]]. Además los servidores Web pueden disponer de un intérprete de otros lenguajes de programación que ejecutan código embebido dentro del código [[HTML]] de las páginas que contiene el sitio antes de enviar el resultado al cliente. &lt;br /&gt;
&lt;br /&gt;
Esto se conoce como programación de lado del servidor y utiliza lenguajes como [[ASP]], [[PHP]], [[Perl]] y Ajax. Las ventajas de utilizar estos lenguajes radica en la potencia de los mismos ejecutando tareas mas complejas como, por ejemplo acceder a bases de datos abstrayendo al cliente de toda la operación.&lt;br /&gt;
&lt;br /&gt;
Los servidores en el mundo hoy en día son completamente imprescindibles sin ellos no podríamos hablar por teléfono, las comunicaciones en un alto porcentaje desaparecerían, la Telefonía móvil y fija se vería muy afectada, todos los negocios que trabajan en o con sedes centrales repartiendo sus datos y recursos quedarían completamente paralizadas (veamos por ejemplo, casas de seguros, bancos, hospitales…), si mañana no hubiesen [[Servidores]], o bueno, y porque no decirlo, administradores de sistemas, el país tardaría muy poco en sumirse en el caos, un [[Sistema informático]] puede controlar Cámaras de seguridad, el estado del tráfico, por ejemplo también utilizamos los sistemas informáticos para hacer las predicciones del tiempo, y alguien puede pensar que se están citando algunos ejemplos que podría procesar un solo sistema, si, pero ¿como recibiría ese sistema datos de otros sistemas informáticos repartidos por el mundo si no tuviesen el soporte de otros servidores y redes para comunicarse entre si? simplemente no podrían.&lt;br /&gt;
&lt;br /&gt;
== Servidores Web más utilizados  ==&lt;br /&gt;
*[[servidor web Apache|Apache]] &lt;br /&gt;
*[[IIS]] &lt;br /&gt;
*[[Servidor Tomcat|Tomcat]] &lt;br /&gt;
*[[Cherokee]]&lt;br /&gt;
*[[webfsd]]&lt;br /&gt;
&lt;br /&gt;
==Véase también==&lt;br /&gt;
*[[Servidor]]&lt;br /&gt;
*[[Servidor Apache]]&lt;br /&gt;
*[[Apache Servidor Web]] &lt;br /&gt;
*[[Servidor Bases de Datos]]&lt;br /&gt;
*[[Servidor DHCP]]&lt;br /&gt;
*[[Servidor Dedicado]]&lt;br /&gt;
*[[Servidor HTTP Apache]]&lt;br /&gt;
*[[Servidor HTTP Cherokee]]&lt;br /&gt;
*[[Servidor Internet Information Server]]&lt;br /&gt;
*[[Servidores Bind]]&lt;br /&gt;
*[[Servidores DNS Bind]]&lt;br /&gt;
*[[Servidores FTP]]&lt;br /&gt;
*[[Servidores OpenSSH]]&lt;br /&gt;
*[[Servidores de Base de Datos]]&lt;br /&gt;
*[[Servidores de Correo]]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*[http://book.merbist.com/es/deployment/nginx merbist] &lt;br /&gt;
*[http://www.guatewireless.org/os/linux/lighttpd-instalacion-y-configuracion-del-web-server/ guatewireless] &lt;br /&gt;
*[http://www.mastermagazine.info/termino/4294.php mastemagazine] &lt;br /&gt;
*[http://www.abadiadigital.com abadiadigital] &lt;br /&gt;
*[http://ventics.com/category/desarrollo-web/xml-desarrollo-web/ ventics] &lt;br /&gt;
*[http://w3techs.com/technologies/overview/programming_language/all Artículo del sitio Web Technology Surveys.]&lt;br /&gt;
*[http://httpd.apache.org Sitio Web del proyecto Apache.]&lt;br /&gt;
*[http://www.maestrosdelweb.com Sitio Web Maestros del Web.] &lt;br /&gt;
&lt;br /&gt;
[[Categoría:Redes de computadoras]][[Category:Redes_informáticas]][[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Ansible_25p.png&amp;diff=4470993</id>
		<title>Archivo:Ansible 25p.png</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Ansible_25p.png&amp;diff=4470993"/>
		<updated>2024-06-04T18:17:04Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Información de copyright: ==&lt;br /&gt;
https://github.com/ansible/logos/blob/main/TRADEMARKS.md&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Kubernetes&amp;diff=4440982</id>
		<title>Kubernetes</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Kubernetes&amp;diff=4440982"/>
		<updated>2024-01-25T15:38:29Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: Página creada con «{{Ficha Software |nombre=Kubernetes |familia=Internet |imagen=Kubernetes.jpg |tamaño= |descripción='''Plataforma de orquestación de contenedores''' |imagen2= |tamaño2=…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Kubernetes&lt;br /&gt;
|familia=Internet&lt;br /&gt;
|imagen=Kubernetes.jpg&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción='''Plataforma de orquestación de contenedores'''&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador=[[Google]]&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|fecha de creación=2014&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|núcleo=&lt;br /&gt;
|tipo de núcleo=&lt;br /&gt;
|plataformas soportadas=&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=&lt;br /&gt;
|premios=&lt;br /&gt;
|web=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Kubernetes''' (conocido también como k8s) es una [[plataforma]] de [[orquestación]] de [[código abierto]] para automatizar el despliegue y autoescalado de aplicaciones y servicios en contenedores&amp;lt;ref&amp;gt;[[ Contenedor_virtual_(software) ]]&amp;lt;/ref&amp;gt;. Fue originalmente desarrollado por Google en 2014 y luego donado a la [[Cloud Native Computing Foundation]] (CNCF)&lt;br /&gt;
&lt;br /&gt;
=Estructura de un clúster de Kubernetes=&lt;br /&gt;
Un clúster de Kubernetes consiste principalmente en un conjunto de máquinas workers, compuestas por Nodos y Pods, y el Control Plane, que se encarga de la administración de los nodos del clúster&lt;br /&gt;
&lt;br /&gt;
==Nodos y Pods==&lt;br /&gt;
Cada clúster tiene como mínimo un Nodo, y Cada nodo contiene los servicios necesarios para echar a andar los Pods. Un Pod incluye uno o más contenedores, tiene su propia dirección [[IP]] dentro del clúster y se les puede conectar recursos adicionales, el caso más común son volúmenes de [[almacenamiento]] y las rutas hacia otros directorios o archivos del sistema de archivos anfitrión para asegurar persistencia de datos tras la muerte del contenedor&lt;br /&gt;
&lt;br /&gt;
===kubelet===&lt;br /&gt;
Es un agente del Control Plane que asegura la ejecución de uno (o más) Pod(s) dentro de un Nodo. Permite que el Control Plane pueda monitorear el nodo y enviar instrucciones al Container Runtime&lt;br /&gt;
&lt;br /&gt;
===kube-proxy===&lt;br /&gt;
Habilita la red en el Nodo con reglas que permiten la comunicación entre los Pods y otras entidades fuera del clúster&lt;br /&gt;
&lt;br /&gt;
===Container Runtime===&lt;br /&gt;
Es un componente fundamental que se encarga de echar a andar los contenedores, es el encargado directo de la ejecución y ciclo de vida de los contenedores. Kubernetes soporta runtimes tales como [[containerd]], [[CRI-O]] y cualquier otra implementación de la Interfaz de Container Runtime de Kubernetes (Kubernetes CRI)&lt;br /&gt;
&lt;br /&gt;
==El Control Plane==&lt;br /&gt;
Los componentes del Control Plane son los que administran los Nodos del clúster y reaccionan a determinados eventos que ocurran en el clúster&lt;br /&gt;
&lt;br /&gt;
===kube-apiserver===&lt;br /&gt;
Permite que la [[API]] de Kubernetes pueda ser usada por aplicaciones internas y externas a través de librerías en lenguajes de programación tales como [[Swift]], [[Python]], [[Java]] y [[Go]]&lt;br /&gt;
&lt;br /&gt;
===etcd===&lt;br /&gt;
Es una [[base de datos]] de claves y valores de alta disponibilidad que sirve como respaldo de todo el estado actual del clúster. Al trabajar con etcd es recomendable hacer planes de respaldo de datos&lt;br /&gt;
&lt;br /&gt;
===kube-scheduler===&lt;br /&gt;
Se encarga de vigilar los Pods recién creados que todavía no tengan un Nodo asignado para eventualmente asignarles un Nodo&lt;br /&gt;
&lt;br /&gt;
===kube-controller-manager===&lt;br /&gt;
Es el componente del Control Plane encargado de echar a andar procesos controladores. Un proceso controlador es un programa en segundo plano de carácter reconciliatorio que se encarga de vigilar el estado compartido del clúster a través del API Server con el objetivo de pasar de un estado actual a un estado deseado. Como es lógico, cada controlador es un proceso aparte, pero están compilados en un único ejecutable corriendo un único [[proceso]] desde el punto de vista del [[sistema operativo]]&lt;br /&gt;
&lt;br /&gt;
===cloud-controller-manager===&lt;br /&gt;
Este componente es opcional y puede variar según el proveedor de cloud donde se tenga el clúster, ya que se encarga de conectar el clúster a la API de un proveedor de servicios de nube para de esa forma obtener recursos que forman parte de ese proveedor y usar la lógica de controller manager específica de ese proveedor. Por ejemplo, el cloud-controller-manager de AWS ([[Amazon Web Services]]) interactúa y está disponible únicamente dentro del ecosistema de AWS, el de GCP ([[Google Cloud Platform]]), dentro de GCP y así sucesivamente&lt;br /&gt;
&lt;br /&gt;
==Configuración de un clúster de Kubernetes==&lt;br /&gt;
En Kubernetes, la configuración se hace a través de archivos [[YAML]] (Yet Another Markup Language), los cuales contienen toda la lógica (o fragmentos de la misma) de todo un clúster, sus nodos, y sus recursos en un formato declarativo y legible tanto por humanos como por máquinas&lt;br /&gt;
&lt;br /&gt;
==Interfaces y clientes==&lt;br /&gt;
Un clúster de Kubernetes se administra principalmente a través de kubectl, el cliente de línea de comandos oficial de Kubernetes, dicha herramienta puede usarse desde cualquier equipo que tenga la posibilidad de conectarse a la máquina principal que lleva el clúster&lt;br /&gt;
&lt;br /&gt;
A lo largo de los años han aparecido varias interfaces gráficas, especialmente web, pero de todas las que han surgido estas son algunas de las más relevantes:&lt;br /&gt;
&lt;br /&gt;
* Kubernetes Dashboard&lt;br /&gt;
&lt;br /&gt;
* Ranger&lt;br /&gt;
&lt;br /&gt;
* Lens&lt;br /&gt;
&lt;br /&gt;
* Docker Desktop&lt;br /&gt;
&lt;br /&gt;
==Referencias==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Véase también==&lt;br /&gt;
&lt;br /&gt;
*[https://rancher.com Sitio oficial de Rancher]*&lt;br /&gt;
*[https://k8slens.dev Sitio Oficial de Lens]*&lt;br /&gt;
*[https://github.com/kubernetes/ Kubernetes (Oficial) en Github]*&lt;br /&gt;
*[https://github.com/kubernetes/dashboard Repositorio de Github de Kubernetes Dashboard]*&lt;br /&gt;
&lt;br /&gt;
==Fuentes==&lt;br /&gt;
&lt;br /&gt;
*[https://kubernetes.io/docs/home/ Documentación oficial de Kubernetes]*&lt;br /&gt;
*[https://www.docker.com/products/kubernetes Página sobre Kubernetes dentro del sitio oficial de Docker]*&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Informática]]&lt;br /&gt;
[[Categoría:Computación_distribuida]]&lt;br /&gt;
[[Categoría:Sistemas_Automatizados]]&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Kubernetes.jpg&amp;diff=4429909</id>
		<title>Archivo:Kubernetes.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Kubernetes.jpg&amp;diff=4429909"/>
		<updated>2023-12-23T17:42:54Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Información de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Licencia ==&lt;br /&gt;
{{CC}}&lt;br /&gt;
== Fuente: ==&lt;br /&gt;
https://www.google.com/url?sa=i&amp;amp;url=https%3A%2F%2Fwww.flickr.com%2Fphotos%2F133825397%40N08%2F25307368068&amp;amp;psig=AOvVaw2F-QoQWXRcXK8vea16iA7f&amp;amp;ust=1703439481646000&amp;amp;source=images&amp;amp;cd=vfe&amp;amp;opi=89978449&amp;amp;ved=2ahUKEwjvle_ajKaDAxVqlIQIHVqsAIYQr4kDegQIARBZ&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Components-of-kubernetes.svg&amp;diff=4418966</id>
		<title>Archivo:Components-of-kubernetes.svg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Components-of-kubernetes.svg&amp;diff=4418966"/>
		<updated>2023-11-26T16:40:01Z</updated>

		<summary type="html">&lt;p&gt;Jovenclub-plaza-3: Diagrama que explica la estructura de un cluster de kubernetes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Resumen ==&lt;br /&gt;
Diagrama que explica la estructura de un cluster de kubernetes&lt;br /&gt;
== Información de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;br /&gt;
https://kubernetes.io/docs/concepts/overview/components/&lt;/div&gt;</summary>
		<author><name>Jovenclub-plaza-3</name></author>
		
	</entry>
</feed>