Listado de la etiqueta: Ansible



En esta piloto, te mostraré cómo resolver archivos utilizando módulos Ansible. Aprenderás a copiar, editar, insertar, descargar y reemplazar archivos utilizando Ansible.

¿Qué haremos?

  • Copiar archivos utilizando los módulos ‘copy’ y ‘templates
  • Descargar archivos con el módulo «fetch
  • Editar archivos utilizando los módulos ‘blockinfile’, ‘lineinfile’ y ‘replace
  • Ejecutar los atributos del archivo

Copiar archivos con los módulos «copiar» y «plantillas» de Ansible

Ansible proporciona algunos módulos para copiar archivos del directorio lugar a las máquinas de destino remotas, se tráfico de los módulos ‘copiar’ y ‘plantillas’.

La diferencia entre el módulo «copiar» y el módulo «plantilla» es que el módulo «copiar» copiará el archivo del directorio «archivos» y el módulo «plantilla» copiará la plantilla Jinja2 del directorio «plantillas» de los playbooks de Ansible.

El módulo «copiar» es bueno para copiar archivos persistentes, como certificados, mientras que «plantilla» es más útil para configuraciones reutilizables, como la configuración del host imaginario, etc.

1. Copiar archivo de la máquina de destino lugar a la remota

Copia la configuración ‘sources.list’ del directorio lugar ‘files’ a la máquina remota ‘/etc/apt/sources.list’. Cuando haya una configuración, se reemplazará y se hará una copia de seguridad basada en las marcas de tiempo.

- name: Copy from Almacén to Remote Target Machine with 'copy'
  copy:
    src: sources.list
    dest: /etc/apt/sources.list
    backup: yes

2. Copia el archivo de la máquina remota a otro directorio

Copia la configuración de sudoers ‘/etc/sudoers.d/hakase’ de la máquina remota al otro directorio ‘/home/hakase/hakase-suoers.txt’. Se puede hacer con la opción ‘remote_src’.

- name: Copy file from one directory to other on the Remote Machine
  copy:
    src: /etc/sudoers.d/hakase
    dest: /home/hakase/hakase-sudoers.txt
    remote_src: yes

3. Copia el archivo y cambia el permiso y el propietario del archivo

Copia el archivo bash en el directorio ‘files’ a la máquina del servidor remoto y haz que el permiso por defecto del archivo sea ‘0755’ y el propietario del archivo sea ‘hakase’.

- name: Copy file and set up the permission and owner of the file
  copy:
    src: simple.sh
    dest: /home/hakase/simple.sh
    owner: hakase
    group: hakase
    mode: 0755

4. Copia el archivo con el módulo Plantilla

Copia la configuración de la plantilla Jinja2 para el host imaginario nginx del directorio ‘templates’ al directorio ‘/etc/sites-enabled/’ de la máquina remota. Con la plantilla Jinja2, podemos crear variables para nuestra configuración y hacerla más reutilizable.

- name: Copy file using 'template' module
  template:
    src: default.j2
    dest: /etc/nginx/sites-enabled/
    backup: yes
    owner: root
    group: root
    mode: 0644

Descargar un archivo utilizando el módulo Fetch en Ansible

Para descargar un archivo de la máquina remota a nuestro nodo ansible lugar, podemos utilizar el módulo ansible llamado ‘fetch’.

1. Descargar de una máquina remota a la lugar

Descarga el archivo de configuración nginx ‘nginx.conf’ del servidor remoto al directorio lugar del nodo ansible ‘/home/hakase/backup’ para crear una copia de seguridad. Y el módulo de extracción por defecto incluirá las estructuras de directorios.

- name: Download file from Remote Machine to Almacén ansible-node directory
  become: yes
  fetch:
    src: /etc/nginx/nginx.conf
    dest: /home/hakase/backup/

2. Descargar de remoto a lugar sin estructuras de directorios

Descarga desde la máquina remota al nodo-ansible lugar sin estructuras de directorios añadiendo la opción ‘plana’.

- name: Download file from Remote Machine to Almacén ansible node without directory structures
  become: yes
  fetch:
    src: /etc/nginx/nginx.conf
    dest: /home/hakase/backup/
    flat: yes

Editar archivos con Ansible

Ahora vamos a editar archivos utilizando los módulos de Ansible. Hay algunos módulos que debes conocer para editar archivos utilizando Ansible, como blockinfile, lineinfile y replace.

El blockinfile insertará/eliminará varias líneas del archivo. El lineinfile es para una sola dirección, y el módulo replace se puede utilizar para reemplazar cadenas.

1. Insertar varias líneas en un archivo utilizando «blockinfile

Añade la configuración de múltiples líneas a la configuración ssh ‘sshd_config’ utilizando el módulo ‘blockinfile’. Y la configuración por defecto insertará la nueva configuración al final de las líneas.

- name: Insert multiple lines and Backup
  blockinfile:
    path: /etc/ssh/sshd_config
    backup: yes
    block: |
      ClientAliveInterval 360
      ClientAliveCountMax 0

2. Insertar varias líneas utilizando las opciones de tanteador

O si quieres insertar a la dirección específica, puedes utilizar la opción tanteador y seguir por ‘insertafter’ o ‘insertbefore’ y Regex, o puedes utilizar ambas.

El sucesivo texto de jugadas insertará una nueva configuración adicional en el archivo ‘sshd_config’. La configuración adicional se añadirá antaño de la dirección ‘UserPAM’ rodeada por el tanteador por defecto ‘# BEGIN ANSIBLE MANAGED BLOCK’.

- name: Insert after regex, backup, and validate
  blockinfile:
    path: /etc/ssh/sshd_config
    backup: yes
    marker: "# {mark} ANSIBLE MANAGED BLOCK "
    insertbefore: '^UsePAM '
    block: |
      AllowUsers hakase vagrant
      PermitEmptyPasswords no
      PermitRootLogin no
    validate: '/usr/sbin/sshd -T -f %s'

3. Eliminar/Eliminar los alrededores del sillar de líneas múltiples adentro de los marcadores

Elimina el sillar de líneas rodeado por el tanteador ansible ‘# BEGIN ANSIBLE MANAGED BLOCK’.

- name: Remote text block surrounding by markers
  blockinfile:
    path: /etc/ssh/sshd_config
    marker: "# {mark} ANSIBLE MANAGED BLOCK"
    content: ""
    backup: yes

4. Insertar una nueva dirección en el archivo

Inserta una nueva dirección de configuración ‘PasswordAuthentication no’ bajo la dirección regex ‘#PermitEmptyPasswords’ a la configuración ssh ‘/etc/ssh/sshd_config’.

- name: Insert New Line under the Regex configuration
  lineinfile:
    path: /etc/ssh/sshd_config
    backup: yes
    regexp: '^PasswordAuthentication '
    insertafter: '^#PermitEmptyPasswords '
    line: 'PasswordAuthentication no'
    validate: '/usr/sbin/sshd -T -f %s'

5. Elimina la dirección del archivo utilizando el módulo lineinfile

Para eliminar/borrar una dirección del archivo, puedes utilizar la opción ‘estado: desprovisto’ y seguir por la expresión Regular de la dirección como a continuación.

- name: Remove a line from the file
  lineinfile:
    path: /etc/ssh/sshd_config
    state: absent
    regexp: '^PasswordAuthentication'

6. Reemplazar cadenas de patrones con la expresión regular y el módulo Reemplazar

Ahora vamos a reemplazar una cautiverio utilizando el módulo ‘reemplazar’. El módulo replace requiere la expresión regular como backend-reference para reemplazar cadenas de tipo.

Cambia el nombre del host en el archivo ‘/etc/hosts’ utilizando el módulo replace.

- name: Replace the default
  replace:
    path: /etc/hosts
    regexp: '(s+)node.provision.labs(s+.*)?$'
    replace: '1box.hakase.labs2'
    backup: yes

7. Descomentar configuraciones

El módulo replace puede utilizarse para descomentar la configuración en el sistema Linux. De forma sencilla, podemos eliminar la cautiverio de comentario ‘#’ al principio de dirección utilizando el módulo replace.

Descomenta la configuración de la dirección ‘server_tokens’ en el archivo ‘/etc/nginx/nginx.conf’.

- name: Uncomment configuration
  replace:
    path: /etc/nginx/nginx.conf
    regexp: '#(s+)server_tokens'
    replace: 'server_tokens'
    backup: yes

8. Comenta la dirección de configuración

A continuación, comenta la dirección de configuración añadiendo el ‘#’ al principio de la dirección.

- name: Comment Line configuration
  replace:
    path: /etc/nginx/nginx.conf
    regexp: '(s+)gzip on'
    replace: 'nt#gzip on'
    backup: yes

Establecer atributos de archivos utilizando el módulo file en Ansible

El módulo archivo se puede utilizar para establecer atributos de los propios archivos, como cambiar el propietario, el agrupación y el permiso, crear un enlace simbólico, crear un nuevo directorio y eliminar un enlace simbólico, archivo o directorio.

1. Crear enlace simbólico de archivo

Crea un archivo symlink en el host remoto para la configuración del host imaginario nginx llamado ‘vhost’ al directorio ‘/etc/nginx/sites-enabled/’.

- name: Create Symlink of file
  file:
    src: /etc/nginx/sites-available/vhost
    dest: /etc/nginx/sites-enabled/vhost
    owner: root
    group: root
    state: link

2. Crear un nuevo directorio utilizando el módulo de archivos

Para crear un nuevo directorio utilizando el módulo file, necesitamos utilizar la opción state con el valía ‘directory’ como se indica a continuación.

- name: Create a New Directory using file
  file:
    path: /etc/nginx/ssl
    state: directory
    owner: root
    group: root
    mode: 0755

Remisión

https://docs.ansible.com/