ficheros y openssl
3:27 Ficheros y OpenSSL (I)
permite trabajar con ficheros, plantillas y directorios
- acl : establece y obtiene información de la listas de control de acceso
- archive : crea un fichero comprimido a partir de una lista de ficheros o estructura de directorios
- assemble : asambla un fichero de configuración desde fragmentos
- blockinfile : Inserta/Actualiza/Elimina un bloque de texto de un fichero
- copy : copiar ficheros a ubicaciones remotas (desde servidor Ansible → nodo remoto)
- fetch : copiar del nodo remoto al servidor
- file : establece atributos a ficheros
- find : devuelve una listsa de ficheros a partir de un patrón
- inifile : manejo de ficheros INI
- iso_extract : extrae ficheros de una imagen ISO
- lineinfile : asegura que una línea está en un fichero o reemplaza la misma con el uso de REGEX
- patch : aplica parches usando GNU/Patch
- replace : reemplaza las coincidencias de un texto por otro
- stat : obtiene información del fichero o del FS
- synchronize : rsync
- tempfile : crear ficheros/directorios temporales
- template : uso de plantillas
- unarchive : extraer ficheros (en remoto)
- xatrr : atributos extendidos
los módulos para OpenSSL:
- openssl_privatekeys : generar claves privadas
- openssl_publickey : generar claves públicas
copy
https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module
- obligatorios
- dest = /path/destino
- opcionales
- backup = yes/no
- content = «contenido»
- force = yes/no
- owner = usuario
- group = grupo
- mode = modo
- src = /path/origen
- name: copiar configuración copy: src=apache2.conf dest=/etc/apache2/apache2.conf owner=www-data group=www-data - name: crear contenido en fichero copy: content="Mi contenido en un fichero" dest=/etc/mi.conf
template
https://docs.ansible.com/ansible/latest/modules/template_module.html#template-module
- obligatorios
- dest = /path/destino
- src = /path/origen
- opcionales
- backup = yes/no
- force = yes/no
- owner = usuario
- group = grupo
- mode = modo
- name: copiar pantilla de configuración template: src=apache2.conf.j2 dest=/etc/apache2/apache2.conf backup=yes
file
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
- obligatorios
- path = /path/al/fichero
- opcionales
- backup = yes/no
- force = yes/no
- owner = usuario
- group = grupo
- mode = modo
- state
- file
- link
- directory
- hard
- touch
- absent
... tasks: - name: propiedades del fichero file: path="/path/al/fichero" backup=yes mode="777" - name: borrar el fichero file: path="/path/al/fichero" backup=yes absent=yes - name: verificar que directorio existe file: path: "/path/to/directory" state: directory owner: root group: systemd-journal mode: 2755 notify: reiniciar_journald handlers: - name: reiniciar_journald service: name=systemd-journald state=restarted
3:28 Ficheros y OpenSSL (II)
stat
https://docs.ansible.com/ansible/latest/modules/stat_module.html#stat-module
- obligatorio
- path = /path/al/fichero
- opcional
- get_attributes = True / False
- get_checksum = True / False
- get_md5 = True / False
- get_mime = True / False
- name: obtener datos de fichero stat: path="/path/to/file" register: datos_fichero - name: mostrar información debug: var=datos_fichero - name: en condicional debug: msg="es diretorio" when: datos.stat.isdir # o cualauier otro atributo
fetch
https://docs.ansible.com/ansible/latest/modules/fetch_module.html#fetch-module
- obligatorio
- src : /path/to/file en nodo remoto
- dest : server Ansible
- opcional
- fail_on_missing = yes/no
- flat = yes/NO : recrea la estructura de directorios de src en dest
- name: copiar configuración red fetch: src=/etc/network/interfaces dest=/tmp/backup
unarchive
https://docs.ansible.com/ansible/latest/modules/unarchive_module.html#unarchive-module
- obligatorio
- src
- dest
- opcional
- owner
- group
- mode
- remote_src = true / FALSE
- list_files = yes / NO → lista los ficheros que se han extraído (se puede guardar en registry)
- name: copiar y extraer fichero en remoto unarchive: src=<file.tgz> dest=/opt/fichero -name: extraer en remoto fichero ya existente allí unarchive: src=<file.tgz> dest=/opt/fichero remote_src=true
lineinfile (!)
https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html#lineinfile-module
- obligatorio
- line = «texto»
- dest = /path/to/file
- en versiones más modernas, path
- opcionales
- owner
- group
- mode
- backup = yes / NO
- insertafter = REGEX
- insertbefore = REGEX
- regexp = REGEX
- state = present / absent : ??
- name: deshabilita SELinux lineinfile: dest=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=disabled' - name: eliminar la línea que permite al grupo wheel del fichero de configuración de sudoers lineinfile: dest=/etc/sudoers state=absent regexp="^wheel" - name: añadir antes de una línea lineinfile: dest=/etc/apache2/ports.conf regexp='^Listen' insertafter="Listen 80" line="Listen 8080"
blockinfile (!)
https://docs.ansible.com/ansible/latest/modules/blockinfile_module.html#blockinfile-module
- obligatorio
- block = «texto»
- dest = /path/to/file
- opcional
- owner
- group
- mode
- backup = yes / NO
- insertafter = REGEX
- insertbefore = REGEX
- marker = REGEX
- state = present / absent : ??
- name: asegurar que el texto está en el fichero dest: /etc/ssh/sshd_config block: | Match user monitor Password Authentication no
openssl_privatekey (!)
- obligatorio
- path = /path/to/file
- opcional
- force = true / false
- size = 4096
- state = present / absent
- type = RSA / DSA
- name: instalar módulo phyton requerido apt: name=phyton-openssl state=latest - name: generar clave privada openssl_privatekey: path=/etc/ssl/private/private.pem
openssl_publickey (!)
- obligatorio
- path = /path/to/file
- privatekey_path = /path/to/privatekey
- opcional
- force = false / true
- state = present / absent
- name: generar clave pública openssl_publickey: path: /etc/ssl/private/public.key privatekey_path: /etc/ssl/private/private.pem