Saltar al contenido

¿Puede el módulo de plantillas manejar múltiples plantillas/directorios?

Nuestros programadores estrellas agotaron sus provisiones de café, en su búsqueda diariamente por la respuesta, hasta que César encontró la contestación en GitLab por lo tanto hoy la comparte aquí.

Solución:

los template módulo en sí mismo ejecuta la acción en un solo archivo, pero puede usar with_filetree para recorrer recursivamente una ruta específica:

- name: Ensure directory structure exists
  file:
    path: ' templates_destination / item.path '
    state: directory
  with_filetree: ' templates_source '
  when: item.state == 'directory'

- name: Ensure files are populated from templates
  template:
    src: ' item.src '
    dest: ' templates_destination / item.path '
  with_filetree: ' templates_source '
  when: item.state == 'file'

Y para plantillas en un solo directorio puede usar with_fileglob.

Esta respuesta proporciona un ejemplo práctico del enfoque establecido por @techraf

con_archivoglob espera que solo los archivos vivan dentro de la carpeta de plantillas; consulte https://serverfault.com/questions/578544/deploying-a-folder-of-template-files-using-ansible

with_fileglob solo analizará archivos en la carpeta de plantillas

con_filetree mantiene la estructura de directorios al mover los archivos de plantilla a dest. Crea automáticamente esos directorios para usted en destino.

with_filetree analizará todos los archivos en la carpeta de plantillas y directorios anidados

- name: Approve certs server directories
  file:
    state: directory
    dest: '~/ item.path '
  with_filetree: '../templates'
  when: item.state == 'directory'

- name: Approve certs server files
  template:
    src: ' item.src '
    dest: '~/ item.path '
  with_filetree: '../templates'
  when: item.state == 'file'

Esencialmente, piense en este enfoque como copiar y pegar un directorio y todo su contenido de A a B y, al hacerlo, analizar todas las plantillas.

Lo hice y funcionó. o/

- name: "Create file template"
  template:
    src: " item.src "
    dest: " your_dir_remoto / item.dest "
  loop:
    -  src: '../templates/file1.yaml.j2', dest: 'file1.yaml' 
    -  src: '../templates/file2.yaml.j2', dest: 'file2.yaml' 

Te mostramos comentarios y calificaciones

Te invitamos a favorecer nuestro ensayo poniendo un comentario o dejando una valoración te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *