Nota:
- Este tutorial está disponible en un entorno de prácticas gratuitas proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por valores específicos de su entorno en la nube.
Configuración de contenedores Podman con Oracle Linux Automation Engine
Introducción
Este tutorial le guiará a través de la creación de un cuaderno de estrategias para instalar Podman y ejecutar un contenedor de Oracle Linux mediante la herramienta de gestión de la configuración Oracle Linux Automation Engine.
Antes de continuar: si no está familiarizado con la ejecución de cuadernos de estrategias, consulte nuestro tutorial de introducción, Escritura de un libro de estrategias con Oracle Linux Automation Engine.
Al ejecutar cuadernos de estrategias, Oracle Linux Automation Engine ejecuta las tareas en máquinas que coinciden con la directiva hosts
del cuaderno de estrategias. Estos hosts se suelen definir en un archivo inventory
y pueden ser remotos o locales. En este tutorial, vamos a demostrar cómo ejecutar un cuaderno de estrategias localmente.
Objetivos
En este laboratorio, aprenderá a:
- Ejecutar libros de estrategias localmente
- Agregar una recopilación a un libro de reproducción
- Instalar Podman
- Extraer y ejecutar un contenedor
oraclelinux:8
Requisitos
- Un sistema Oracle Linux con la siguiente configuración:
- Oracle Linux 8 más reciente (x86_64)
- un usuario no root con permisos
sudo
- instalar Oracle Linux Automation Engine
Recopilaciones
Nota: al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos del laboratorio de Oracle Linux para conocer la conexión y otras instrucciones de uso.
Las recopilaciones son un formato de distribución para el contenido de Oracle Linux Automation Engine que puede incluir libros de estrategias, roles, módulos y plugins. En este tutorial se instalará la recopilación containers.podman
mediante un archivo requirements.yml
. Un archivo requirements.yml
permite instalar recopilaciones, roles o ambos en función de las claves definidas en el archivo.
Crear un archivo de requisitos
-
Si aún no está conectado, abra un terminal y conéctese mediante ssh al sistema ol-server.
ssh oracle@<ip_address_of_ol-server>
-
Cree un directorio de trabajo.
mkdir -p ~/podman-project
-
Cambie al directorio de trabajo.
cd ~/podman-project
-
Cree el archivo
requirements.yml
con el editor que elija. Aquí, utilizaremosvi
.vi requirements.yml
-
Introduzca el modo de inserción
vi
escribiendoi
. -
Agregue la clave y el nombre de cualquier recopilación utilizada en el libro de reproducción.
Ejemplo:
--- collections: - name: containers.podman
-
Una vez que haya terminado de editar el archivo
requirements.yml
, guarde y cierre el archivo. Si utilizavi
, puede hacerlo escribiendoESC
,:wq!
yENTER
.
Instalación de recopilaciones mediante el archivo de requisitos
-
Extraiga las recopilaciones e instálelas localmente.
ansible-galaxy collection install -r requirements.yml
Una vez que el comando se ejecuta correctamente, los resultados son similares a los mostrados.
Salida de ejemplo:
[oracle@ol-server podman-project]$ ansible-galaxy collection install -r requirements.yml Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/download/containers-podman-1.10.1.tar.gz to /home/oracle/.ansible/tmp/ansible-local-519108lfh458k/tmpikc963ue/containers-podman-1.10.1-aqgw3x1r Installing 'containers.podman:1.10.1' to '/home/oracle/.ansible/collections/ansible_collections/containers/podman' containers.podman:1.10.1 was installed successfully
Crear el libro de reproducción
Los cuadernos de estrategias de Oracle Linux Automation Engine constan de reproducciones compuestas por tareas asignadas a los hosts. Estas tareas ejecutan principalmente módulos idempotentes. Idempotency está obteniendo el mismo resultado si se ejecuta el libro de reproducción una o varias veces. En este tutorial se demostrará la idempotencia mediante la creación del libro de reproducción en etapas y su ejecución entre cada cambio.
Instalar Podman
Antes de ejecutar un contenedor Podman, necesitamos instalar los paquetes Podman. Instalaremos los paquetes mediante el módulo container-tools:ol8
desde el repositorio ol8_appstream de Oracle Linux.
Desde un terminal del sistema ol-server:
-
Cambie al nivel superior del directorio de trabajo, si no sigue en ese directorio.
cd ~/podman-project
-
Cree el archivo del cuaderno de estrategias.
vi podman-playbook.yml
-
Introduzca el modo de inserción
vi
escribiendoi
. -
Agregue lo siguiente al archivo del cuaderno de estrategias.
Ejemplo:
--- - hosts: localhost connection: local collections: - containers.podman tasks: - name: install podman ansible.builtin.dnf: name: '@container-tools:ol8' state: present become: yes
Un cuaderno de estrategias y los nombres de las tareas pretenden hacer que el libro de juegos sea autodocumentado. La información que figura a continuación explicará algunos puntos más.
hosts: localhost
: indica las tareas que se deben ejecutar en el host local.connection: local
: garantiza que el enlace permanece local y no se ejecuta mediante SSH.collections
: proporciona una lista de las recopilaciones utilizadas en la reproducción.become: yes
: eleva la tarea dentro de esta sección del cuaderno de estrategias para que se ejecute con el privilegiosudo
de forma predeterminada.
-
Guarde y cierre el archivo. Si utiliza
vi
, puede hacerlo escribiendoESC
,:wq!
yENTER
. -
Ejecutar el cuaderno de estrategias
ansible-playbook podman-playbook.yml
El comando se debe ejecutar correctamente con resultados similares a los mostrados.
Salida de ejemplo:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Verificar el paquete Podman instalado
podman --version
Salida de ejemplo:
[oracle@ol-server podman-project]$ podman --version podman version 4.2.0
Extraer una imagen
Una vez instalado Podman, podemos extraer imágenes de nuestro registro de elección y ubicarlas localmente. En este paso, extraerá la imagen de Oracle Linux del registro de contenedor GitHub.
Puede obtener información adicional sobre las imágenes del desarrollador de Oracle Linux aquí.
-
Edite el archivo del cuaderno de estrategias.
vi podman-playbook.yml
-
Introduzca el modo de inserción
vi
escribiendoi
. -
Agregue la siguiente tarea al final del archivo del cuaderno de estrategias.
Asegúrese de dejar una línea en blanco entre las tareas de legibilidad y seguir las reglas de sintaxis YAML y la alineación.
Ejemplo:
- name: pull oraclelinux:8 from GitHub podman_image: name: ghcr.io/oracle/oraclelinux:8
-
Guarde y cierre el archivo. Si utiliza
vi
, puede hacerlo escribiendoESC
,:wq!
yENTER
. -
Ejecutar el cuaderno de estrategias
ansible-playbook podman-playbook.yml
El comando se debe ejecutar correctamente con resultados similares a los mostrados.
Salida de ejemplo:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** ok: [localhost] TASK [pull oraclelinux:8 from GitHub] ****************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Verifique que Podman ha extraído la imagen.
podman images
Salida de ejemplo:
[oracle@ol-server podman-project]$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE ghcr.io/oracle/oraclelinux 8 97e22ab49eea 20 hours ago 254 MB
Ejecutar una imagen de contenedor
En lugar de simplemente extraer una imagen, también podemos extraer y ejecutar un contenedor basado en una imagen en un solo paso. Vamos a extraer y ejecutar la imagen de desarrollador de Oracle Linux NGINX en este paso.
-
Edite el archivo del cuaderno de estrategias.
vi podman-playbook.yml
-
Introduzca el modo de inserción
vi
escribiendoi
. -
Agregue la siguiente tarea al final del archivo del cuaderno de estrategias.
Asegúrese de dejar una línea en blanco entre las tareas de legibilidad y seguir las reglas de sintaxis YAML y la alineación.
Ejemplo:
- name: run image containers.podman.podman_container: name: my-ol8 image: ghcr.io/oracle/oraclelinux8-nginx:1.18 state: started detach: yes expose: - '80' - '443' publish: - '8080:80'
La información que figura a continuación explicará algunos puntos más.
name
: nombre del contenedor.image
: ruta de repositorio (o nombre de imagen) y etiqueta utilizados para crear el contenedor.state
: comprueba si hay un contenedor en ejecución que coincida con el nombre y la configuración. Podman crea e inicia un nuevo contenedor cuando no encuentra ninguna coincidencia.detach
: ejecuta el contenedor en modo desasociado.expose
: Exponga un puerto o un rango de puertos.publish
: permite publicar el puerto o el rango de puertos de un contenedor en el host.
-
Guarde y cierre el archivo. Si utiliza
vi
, puede hacerlo escribiendoESC
,:wq!
yENTER
. -
Ejecutar el cuaderno de estrategias
ansible-playbook podman-playbook.yml
El comando se debe ejecutar correctamente con resultados similares a los mostrados.
Salida de ejemplo:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** ok: [localhost] TASK [pull oraclelinux:8 from GitHub] ****************************************** ok: [localhost] TASK [run image] *************************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Verifique que el contenedor se está ejecutando.
podman ps
Salida de ejemplo:
[oracle@ol-server podman-project]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5f7a28cc4c6b ghcr.io/oracle/oraclelinux8-nginx:1.18 nginx -g daemon o... 18 minutes ago Up 18 minutes ago 0.0.0.0:8080->80/tcp my-ol8
La salida muestra que el contenedor ha estado activo y en ejecución durante 18 minutos.
-
Pare el contenedor.
Con
CONTAINER NAMES
de la salida anterior, ejecute:podman stop <CONTAINER NAMES>
Salida de ejemplo:
[oracle@ol-server podman-project]$ podman stop my-ol8 my-ol8 [oracle@ol-server podman-project]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Ejecución de una imagen de contenedor con un volumen
Podman crea volúmenes agregando una asignación de montaje de enlace de un directorio local a un directorio dentro del contenedor. Demostraremos esta función ejecutando el mismo contenedor NGINX y sustituyendo una página index.html personalizada por el valor por defecto de NGINX.
-
Edite el archivo del cuaderno de estrategias.
vi podman-playbook.yml
-
Introduzca el modo de inserción
vi
escribiendoi
. -
Cree el directorio local.
Podemos realizar este paso de forma eficiente y manual una vez desde la línea de comandos, pero vamos a automatizarlo. La automatización de este paso garantiza que el directorio exista cada vez que se ejecute el cuaderno de estrategias.
Antes de la tarea
run image
, agregue estas tareas, que crean un directorio y el archivo index.html.Asegúrese de dejar una línea en blanco entre las tareas de legibilidad y seguir las reglas de sintaxis YAML y la alineación.
Ejemplo:
- name: ensure dest directory exists ansible.builtin.file: path: "/home/oracle/nginx/" state: directory - name: create empty file ansible.builtin.file: path: "/home/oracle/nginx/index.html" state: touch mode: '0755' - name: create index.html ansible.builtin.copy: dest: "/home/oracle/nginx/index.html" content: | Hello! Welcome to Oracle Linux Containers.
-
A continuación, agregue la siguiente opción al final de la tarea
run image
.Ejemplo:
volume: "/home/oracle/nginx:/usr/share/nginx/html:Z"
La opción
volume
crea un montaje de enlace entre el directoriosource:destination
. La opción:Z
aborda cualquier problema de permisos de SELinux relacionado con el montaje de enlace. Podman hace esto volviendo a etiquetar el contenido del volumen para que coincida con la etiqueta dentro del contenedor.Aquí es una versión completa del cuaderno de estrategias como referencia.
-
Guarde y cierre el archivo. Si utiliza
vi
, puede hacerlo escribiendoESC
,:wq!
yENTER
. -
Ejecutar el cuaderno de estrategias
ansible-playbook podman-playbook.yml
El comando se debe ejecutar correctamente con resultados similares a los mostrados.
Salida de ejemplo:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** ok: [localhost] TASK [pull oraclelinux:8 from GitHub] ****************************************** ok: [localhost] TASK [ensure dest directory exists] ******************************************** changed: [localhost] TASK [create empty file] ******************************************************* changed: [localhost] TASK [create index.html] ******************************************************* changed: [localhost] TASK [run image] *************************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=7 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Verifique que el contenedor se está ejecutando.
podman ps
Salida de ejemplo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f74aa726d470 ghcr.io/oracle/oraclelinux8-nginx:1.18 nginx -g daemon o... 10 minutes ago Up 10 minutes ago 0.0.0.0:8080->80/tcp my-ol8
-
Verifique que el archivo index.html existe.
ls -l /home/oracle/nginx
Salida de ejemplo:
[oracle@ol-server podman-project]$ ls -l /home/oracle/nginx/ total 4 -rwxr-xr-x. 1 oracle oracle 41 Nov 5 16:46 index.html
-
Compruebe el montaje de enlace.
Utilice
curl
para mostrar la página index.html del contenedor.curl localhost:8080
Donde 8080 es la asignación de puerto local al puerto 80 en el contenedor.
Salida de ejemplo:
[oracle@ol-server podman-project]$ curl localhost:8080 Hello! Welcome to Oracle Linux Containers.
Resumen
La salida curl
muestra una conexión correcta al servidor web NGINX que se ejecuta en el contenedor de podman, que se despliega localmente mediante Oracle Linux Automation Engine.
Para obtener más información
Documentación de Oracle Linux Automation Manager
Formación de Oracle Linux Automation Manager
Estación de formación de Oracle Linux
Más recursos de aprendizaje
Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.
Para obtener documentación sobre los productos, visite Oracle Help Center.
Configure Podman Containers with Oracle Linux Automation Engine
F50071-04
November 2022
Copyright © 2021, Oracle and/or its affiliates.