info:cursos:udemy:ansible:modulos

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:cursos:udemy:ansible:modulos [14/09/2018 03:42] – [hostname] mateinfo:cursos:udemy:ansible:modulos [25/09/2018 02:05] (actual) mate
Línia 34: Línia 34:
 ''ansible-doc <módulo>'' nos da información del módulo ''ansible-doc <módulo>'' nos da información del módulo
  
-== 3:27 Ficheros y OpenSSL (I) +== temario 
-permite trabajar con ficheros, plantillas y directorios +  * [[info:cursos:udemy:ansible:modulos:ficheros-openssl]] 
-  * acl : establece y obtiene información de la listas de control de acceso +  * [[info:cursos:udemy:ansible:modulos:paquetes]] 
-  * archive : crea un fichero comprimido a partir de una lista de ficheros o estructura de directorios +  * [[info:cursos:udemy:ansible:modulos:utilidades]] 
-  * assemble : asambla un fichero de configuración desde fragmentos +  * [[info:cursos:udemy:ansible:modulos:notificaciones]] 
-  * blockinfile : Inserta/Actualiza/Elimina un bloque de texto de un fichero +  * [[info:cursos:udemy:ansible:modulos:bbdd]] 
-  * copy : copiar ficheros a ubicaciones remotas (desde servidor Ansible -> nodo remoto) +  * [[info:cursos:udemy:ansible:modulos:sistema]] 
-  * fetch : copiar del nodo remoto al servidor +  * [[info:cursos:udemy:ansible:modulos:windows]] 
-  * file : establece atributos a ficheros +  * [[info:cursos:udemy:ansible:modulos:cvs]] 
-  * find : devuelve una listsa de ficheros a partir de un patrón +  * [[info:cursos:udemy:ansible:modulos:web]] 
-  * inifile : manejo de ficheros INI +  * [[info:cursos:udemy:ansible:modulos:cloud]] 
-  * iso_extract : extrae ficheros de una imagen ISO +  * [[info:cursos:udemy:ansible:modulos:monitor]]
-  * 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 +
- +
-<code yaml> +
-- namecopiar 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 +
-</code> +
- +
-=== 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 +
- +
-<code yaml> +
-- namecopiar pantilla de configuración +
-  templatesrc=apache2.conf.j2 dest=/etc/apache2/apache2.conf backup=yes +
-</code> +
- +
-=== 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 +
- +
-<code yaml> +
-... +
-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 +
-</code> +
- +
-== 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 +
- +
-<code yaml> +
-- 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 +
-</code> +
- +
-=== 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** +
- +
-<code yaml> +
-- name: copiar configuración red +
-  fetch: src=/etc/network/interfaces dest=/tmp/backup +
-</code> +
- +
-=== 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**) +
- +
-<code yaml> +
-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 +
-</code> +
- +
-=== 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 : ?? +
- +
-<code yaml> +
-- 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" +
-</code> +
- +
-=== 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 : ?? +
- +
-<code yaml> +
-- name: asegurar que el texto está en el fichero +
-  dest: /etc/ssh/sshd_config +
-  block: | +
-    Match user monitor +
-    Password Authentication no +
-</code> +
- +
-=== openssl_privatekey (!) +
-[[https://docs.ansible.com/ansible/latest/modules/openssl_privatekey_module.html#openssl-privatekey-module]] +
-  * obligatorio +
-    * path = /path/to/file +
-  * opcional +
-    * force = true / false +
-    * size = 4096 +
-    * state = present / absent +
-    * type = RSA / DSA +
- +
-<code yaml> +
-- name: instalar módulo phyton requerido +
-  apt: name=phyton-openssl state=latest +
-- name: generar clave privada +
-  openssl_privatekey: path=/etc/ssl/private/private.pem +
-</code> +
- +
-=== openssl_publickey (!) +
-[[https://docs.ansible.com/ansible/latest/modules/openssl_publickey_module.html#openssl-publickey-module]] +
-  * obligatorio +
-    * path = /path/to/file +
-    * privatekey_path = /path/to/privatekey +
-  * opcional +
-    * force = false / true +
-    * state = present / absent +
- +
-<code yaml> +
-- namegenerar clave pública +
-  openssl_publickey: +
-    path: /etc/ssl/private/public.key +
-    privatekey_path: /etc/ssl/private/private.pem +
-</code> +
-== 3:29 Gestor Paquetes (I) +
-para lenguajes de programación: +
- +
-  * bower : desarrollo web +
-  * bundler : dependencias Ruby Gem +
-  * composer : librerias PHP +
-  * cpam : gestor módulos Perl +
-  * easy_install : gestión módulos / librerias Phyton +
-  * gem : gestiona Ruby Gems +
-  * maven_artifact : descarga **artifacts** desde un repositorio **maven** +
-  * npm : gestiona paquetes node.js +
-  * pear : paquetes pear / pcl +
-  * pip : gestión módulos / librerias Phyton (más que easy_install) +
- +
-para OS: +
-  * apk : gestión paquetes android +
-  * apt :  +
-  * apt_key: +
-  * apt_repositiry +
-  * dnf : fedora +
-  * macports : paquetes macports OSX +
-  * openbsd_pkg : paquetes openBSD +
-  * opkg : paquetes OpenWRT (routers, firmware) +
-  * package : módulo genérico que llama a los otros módulos (wrapper) +
-  * pacman : paquetes arch linux +
-  * pkg5 : paquetes Solaris 11 +
-  * pkgin : paquetes SmartOS, NetBsd y otros +
-  * pkgng : paquetes FreeBSD >= 9.0 +
-  * portage : Gentoo +
-  * redhat_subscription : administra repositorios y subscripciones Red Hat, usando el comando **subscription-manager** +
-  * slackpkg : paquetes slackware >=12.2 +
-  * swdepot : paquetes HP_UX +
-  * yum :  +
-  * yum_repository +
-  * zypper : paquetes / repositorios OpenSuse / Suse +
-  * zypper_respository  +
- +
-=== cpanm +
-PERL\\ +
-[[https://docs.ansible.com/ansible/latest/modules/cpanm_module.html#cpanm-module]] +
-  * from_path = ruta +
-  * name = nombre +
-  * localib = ruta +
-  * mirror = mirror +
-  * mirror_only = no / yes +
-  * notest = no / yes +
-  * version = version +
-  * system_lib = directorio +
-  * <del>state</del> +
- +
-<code yaml> +
-- nameinstalar gcc +
-  yum: name=gcc state=latest +
-- name: instalar paquete básico +
-  yum: name=perl-App-cpanminus state=latest +
-- name: instalar módulo DBI +
-  cpanm : name=DBI +
-- name: instalar versión específica +
-  cpanm: name=DBI version="1.360" +
-</code> +
- +
-=== easy_install +
-[[https://docs.ansible.com/ansible/latest/modules/easy_install_module.html#easy-install-module]] +
-  * obligatorio +
-    * name = nombre +
-  * opcional +
-    * state = present | latest +
-    * virtualenv = no / yes +
-    * virtualenv_command = comando +
-    * virtualenv_site_packages = no / yes +
-    * exectutable = ruta ejecución easy_install +
- +
-<code yaml> +
-- name: instalar PiP +
-  easy_install: name=pip state=latest +
-# se usa PiP en lugar easy_install +
-</code> +
- +
-=== pip +
-[[https://docs.ansible.com/ansible/latest/modules/pip_module.html#pip-module]] +
-  * obligatorio +
-    * name = nombre +
-  * opcional +
-    * state = present | latest | absent | forcereinstall +
-    * virtualenv = no / yes +
-    * virtualenv_command = comando +
-    * virtualenv_site_packages = no / yes +
-    * exectutable = ruta ejecución +
-    * requirements = fichero.txt (dependencias) -> requirements.txt +
-    * version = version +
-    * chdir = ruta +
- +
-<code yaml> +
-- name: instalar módulo requests +
-  pip: name=requests state=latest +
-</code> +
-== 3:30 Gestor Paquetes (II) +
-=== apt +
-[[https://docs.ansible.com/ansible/latest/modules/apt_module.html#apt-module]] +
-  * name = nombre[=versión] +
-  * state = { latest | absent | PRESENT | build-dep } +
-    * latest : a la última +
-    * absent : eliminar +
-    * build-dep : dependencias +
-  * upgrade = { no | yes | safe | full | dist } +
-  * force = no / yes +
-  * update_cache =  no / yes +
-  * purge =  no / yes +
-  * deb = ruta/fichero/.deb +
-  * autoremove =  no / yes +
-  * default_release = release +
- +
-<code yaml> +
-- nameactualizar lista paquetes +
-    apt: update_cache=yes +
-- name: actualizar paquetes +
-   apt: upgrade=dist +
-- name: instalar nginx +
-  apt: +
-    name: nginx +
-    state: latest +
-</code> +
- +
-=== apt_key +
-[[https://docs.ansible.com/ansible/latest/modules/apt_key_module.html#apt-key-module]] +
-  * data =  contenido de la key a añadir (desde Ansible Server) +
-  * file =  ubicación fichero en nodo remoto +
-  * id = identificador +
-  * keyring = /ruta/trusted +
-  * keyserver = servidor +
-  * state = { PRESENT | absent } +
-  * url = dirección +
-  * validate_certs = yes / no +
- +
-<code yaml> +
-- name: añadir clave usando servidor +
-  apt_key: +
-    keyserver: keyserver.ubuntu.com +
-    id: 36A1D7869245C8950F... +
-     +
-- name: añadir utilizando un fichero adjunto +
-  apt_key: +
-    url: "https://ftp-master.debian.org/keys/archive-key-6.0.asc" +
-    state: present +
-</code> +
-== 3:31 Gestor Paquetes (III) +
-=== apt_repository +
-[[https://docs.ansible.com/ansible/latest/modules/apt_repository_module.html#apt-repository-module]] +
-  * obligatorio +
-    * repo = origen +
-  * opcional +
-    * state = { PRESENT | absent } +
-    * filename = nombre fichero repositorio +
-    * update_cache = yes / no +
-    * validate_certs =  yes / no +
-    * mode = modo_fichero +
- +
-<code yaml> +
-- nameanyadir repositorio google chrome +
-  apt_repository: +
-    repo: "deb http://dl.google.com/linux/chrome/deb/ stable main" +
-    state: present +
-    filename: "google-chrome" +
-- name: anaydir en Ububtu a través de PPA +
-  apt_repository: +
-    repo: "ppa:nginx/stable" +
-</code> +
- +
-=== package +
-wrapper, usar si no requerimos alguna opción concreta de otro módulo de paquetes\\ +
-[[https://docs.ansible.com/ansible/latest/modules/package_module.html#package-module]] +
-  * requerido +
-    * name = origen +
-    * state = { present | absent | latest } +
-  * opcional +
-    * use = { auto | yum | apt } +
- +
-<code yaml> +
-- name instalar ntpdate +
-  package: +
-    namentpupdate +
-    state: latest +
-</code> +
-</code> +
- +
-=== redhat_subscription +
-[[https://docs.ansible.com/ansible/latest/modules/redhat_subscription_module.html#redhat-subscription-module]] +
-  * state = { present | absent } +
-  * activationkey +
-  * username +
-  * password +
-  * autosubscribe = yes / no +
-  * server_hostname = nombre servidor +
-  * org_id = organización +
-  * pool = nombre +
-  * force_register = yes / no +
- +
-<code yaml> +
-- name: registrar sistema +
-  redhat_subscription: +
-    state: present +
-    username: usuario@dominio +
-    password: contraseña +
-    autosubscribe: yes +
-- name: registrar sistema 2 +
-  redhat_subscription: +
-    state: present +
-    activationkey: mi-clave-RHEL +
-    org_id: 2468 +
-    pool "^Red Hat Enterprise Server$" +
-</code> +
- +
-=== yum +
-[[https://docs.ansible.com/ansible/latest/modules/yum_module.html#yum-module]] +
-  * requerido +
-    * name = nombre / ruta +
-  * opcional +
-    * state = { present | absent | latest } +
-    * conf_file = /ruta/al/fichero +
-    * disable_gpg_check = true / false +
-    * disablerepo = nombre (desactiva temporalmente) +
-    * enablerepo = nombre (activa temporalmente) +
-    * update_cache = yes / no +
- +
-<code yaml> +
-- nameinstalar última versión apache +
-  yum: +
-    name: httpd +
-    state: latest +
-- name: actualizar todos los paquetes +
-  yum: +
-    name: "*" +
-    state: latest +
-- name: Instalar grupo +
-  yum: +
-    name: "@development tools" +
-    state: present +
-</code> +
- +
-=== yum_repository +
-[[https://docs.ansible.com/ansible/latest/modules/yum_repository_module.html#yum-repository-module]] +
-  * requerido +
-    * name = nombre / ruta +
-  * opcional +
-    * state = { present | absent } +
-    * description = descripción +
-    * baseurl = dirección +
-    * file = nombre_fichero +
-    * mirrorlist = dirección +
-    * enabled = YES / no +
-    * gpgcheck = YES / no +
- +
-<code yaml> +
-- nameañadir EPEL +
-  yum_repository: +
-    name: epel +
-    state: present +
-    description: EPEL YUM Repo +
-    baseurl: http://download.fedoraprojects.org/pub/epel/$releaseserver/$basearch/ +
-</code> +
-== 3:32 Comando Utilidades (I) +
-ejecución de comandos en el nodo remoto +
-  * command +
-  * expect : ejecuta un comando y responde a la introducción de dataos +
-  * raw : envía comandos sin filtrar por SSH +
-  * script : transfiere y ejecuta un script +
-  * shell : permite uso de && || >> (command no lo permite) +
- +
-=== command +
-[[https://docs.ansible.com/ansible/latest/modules/command_module.html#command-module]] +
-  * chdir : cambiar directorio ejecución +
-  * creates : si existe el fichero, NO ejecuta +
-  * executable : ruta binario +
-  * removes : si no existe el fichero, NO ejecuta +
-<code yaml> +
-- name: obtener uname +
-  command: uname -a +
-  register: salida_uname +
-- name: crear base de datos si no existe +
-  command: /sbin/createdb.sh +
-  args: +
-    chdir: /var/lib/mysql +
-    creates: /basededatos/existe +
-- name: ejecutar si existe +
-  command uname -a removes=/tmp/hadeexistir +
-</code> +
- +
- +
-=== expect +
-[[https://docs.ansible.com/ansible/latest/modules/expect_module.html#expect-module]] +
-  * requerido +
-    * command = comando +
-    * response = respuestas +
-  * opcional +
-    * chdir +
-    * creates +
-    * removes +
-    * echo +
-    * timeout +
- +
-<code yaml> +
-- nameinstalar pexpect, necesario en el nodo remoto +
-  yumname=pexpect state=latest +
-- name: cambiar contraseña usuario +
-  expect: +
-    command: passwd usuario +
-    responses: (?i)password: "SuperSecreta" +
-</code> +
-instalar versión específica (en módulo Phyton): ''pip install pexpect==3.3'' +
- +
-   +
-== 3:33 Comando Utilidades (II) +
-=== raw +
-usar en casos muy concretos (dispositivos sin Phyton o versiones viejas), viaja sin encriptar\\ +
-[[https://docs.ansible.com/ansible/latest/modules/raw_module.html#raw-module]] +
-  * executable = /ruta/ejecutable +
-<code yaml> +
-- nameactualizar paquetes e instalar uno +
-  rawapt-get update && apt-get install vim +
-</code> +
- +
- +
-=== script +
-copia el script en el nodo y se ejecuta allí\\ +
-[[https://docs.ansible.com/ansible/latest/modules/script_module.html#script-module]] +
-  * creates = /fichero/comprobar <- si existe, no ejecuta +
-  * removes = /fichero/comprobar <- si no existe, no ejecuta +
-  * decrypt = true / false <- vault +
- +
-<code yaml> +
-- name: copia y ejecuta el script +
-  script: /mi/fichero/local.sh argumentos +
-</code> +
- +
-=== shell +
-ejecuta comandos, pero permite (**command** no lo hace) el uso de tuberías, redirecciones, etc...\\ +
-[[https://docs.ansible.com/ansible/latest/modules/shell_module.html#shell-module]] +
-  * chdir = /directorio +
-  * creates = /fichero/comprobar <- si existe, no ejecuta +
-  * removes = /fichero/comprobar <- si no existe, no ejecuta +
-  * executable +
- +
-<code yaml> +
-- nameobtener uname +
-  shell: uname -a | tee fichero.log +
-  register: salida_uname +
-- name obtener uname 2 +
-  shell: uname -a | tee fichero.log +
-  args: +
-    executable: /bin/bash +
-    chdir: /tmp +
-</code> +
- +
-=== assert +
-asegurarse que se cumplen ciertas condiciones\\ +
-[[https://docs.ansible.com/ansible/latest/modules/assert_module.html#assert-module]] +
-    * that condiciones +
-    * msg mensaje a mostrar +
-<code yaml> +
-- vars: +
-  - numero: 50 +
-- assert: +
-    that: +
-      - numero <= 100 +
-      - numero > 0 +
-    msg: "Número ha de estar entre 0 y 100" +
-</code> +
- +
-===debug +
-muestra un texto personalizado o el valor de una variable\\ +
-[[https://docs.ansible.com/ansible/latest/modules/debug_module.html#debug-module]] +
-  * msg = "mensaje de texto" +
-  * var= variable +
-  * verbosity = [0-3] +
-<code yaml> +
-- debug: msg="Hostname {{ ansible_hostname }}" +
-- debug: var=salida # muestra todo el array, se puede especificar cualquiera de ellos +
-</code> +
- +
-=== pause +
-[[https://docs.ansible.com/ansible/latest/modules/pause_module.html#pause-module]] +
-  * prompt = "texto a mostrar" +
-  * minutes = minutos +
-  * seconds = segundos +
- +
-=== fail +
-generar mensaje error y salir\\ +
-[[https://docs.ansible.com/ansible/latest/modules/fail_module.html#fail-module]] +
- +
-  * msg = "mensaje" +
-<code yaml> +
-- failmsg="Dato incorrecto" +
-  when: valor not in ['y','Y'+
-</code> +
- +
-== 3:34 Comando Utilidades (III) +
-=== include +
-incluir otro playbook / tareas\\ +
-[[https://docs.ansible.com/ansible/latest/modules/include_module.html#include-module]] +
-<code yaml; /roles/%%<rol>%%/tasks/main.yml> +
-includename="configura.yml" +
-includename="install.yml" +
-include: name="post-install.yml" +
-</code> +
- +
- +
-=== include_role +
-incluir rol\\ +
-[[https://docs.ansible.com/ansible/latest/modules/include_role_module.html#include-role-module]] +
-  * obligatorio +
-    * name +
-  * opcional +
-    * private = true / false +
-    * tasks_from = main +
-    * vars_from = main +
-    * defaults_from = main +
-    * allow_duplicates = true / false +
- +
-=== include_vars +
-incluir  variables desde un fichero, en lugar de tener una sección **vars:**\\ +
-[[https://docs.ansible.com/ansible/latest/modules/include_vars_module.html#include-vars-module]] +
- +
- +
- +
- +
-<code yaml; playbook> +
---- +
-- hostslocalhost +
-- vars: +
-  - numero: 10 +
-- tasks: +
-  - include_vars: variables.yml +
-  - include_rol: name=httpd # en directorio local o en /etc/ansible/roles o en /root/roles +
-</code> +
-<code yaml; variables.yml> +
-otronumero20 +
-</code> +
- +
-=== self_fact +
-establece un fact\\ +
-[[https://docs.ansible.com/ansible/latest/modules/set_fact_module.html#set-fact-module]] +
- +
-permite modificar textos / variables +
- +
-<code yaml> +
-- tasks: +
-  - set_fact: nombre="{{ ansible_hostname }}" +
-  - debug: var=nombre +
-  - set_fact: nombre2="{{ ansible_hostname | upper }}" +
-</code> +
- +
- +
-=== wait_for +
-espera que se cumpla una condición para continuar (conexión SSH o si un fichero existe, por ejemplo)\\ +
-[[http://example.com|Enllaç extern]]https://docs.ansible.com/ansible/latest/modules/wait_for_module.html#wait-for-module]] +
- +
-  * state = { present | absent | started | stopped } +
-    * files: present/absent, puertos: started/stopped +
-  * port = puerto +
-  * timeout = segundos de espera a conectar si no hay respuesta +
-  * host = servidor al que conectar +
-  * connection_timeout =  +
-  * search_regex = cadena esperada (ya sea conexión o fichero) +
-  * delay = segundos de espera antes de empezar a enviar peticiiones +
-  * path = /ruta/del/fichero +
-  * exclude_hosts +
- +
-<code yaml> +
-- hosts: localhost +
-  tasks: +
-    - name: esperando al puerto 8080 +
-      wait_for: port=8080 delay=2 +
-    - name: esperando a que exista el fichero +
-      wait_for: path=/fichero/esperado +
-    - name: esperando a que no exista el fichero +
-      wait_for: path=/fichero/espeado state=absent +
-</code> +
-<code yaml> +
-- name: esperando a server +
-  wait_for: +
-    port: 22 +
-    host: "{{ ansible_hostname ]]" +
-    search_regex: OpenSSH +
-    delay: 10 +
-    delegate_to: localhost # ??? +
-</code> +
-''nc -l 8080'' +
- +
- +
- +
-== 3:35 Notificaciones +
-sistemas de mensajería: +
-  * cisco_spark +
-  * flowdock +
-  * hipchat +
-  * irc +
-  * jabber +
-  * mattermost : tipo **slack** pero de código abierto +
-  * mqt : mensajería IoT +
-  * nexmo : SMS +
-  * pushbullet : móbiles +
-  * pushover : móbiles +
-  * rocketchat +
-  * sendgrid +
-  * slack  +
-  * sns : Simple Notification Service Amazon +
-  * telegram +
-  * twilo +
- +
-=== hipchat +
-[[https://docs.ansible.com/ansible/latest/modules/hipchat_module.html#hipchat-module]] +
-  * requeridos +
-    * token +
-    * msg +
-    * room +
-  * opcional +
-    * api +
-    * color +
-    * from +
-    * msg_format = { text | html } +
-    * notify = yes / no +
-    * validate_certs = YES / no +
- +
-<code yaml> +
---- +
-- hostslocalhost +
-  connectionlocalhost +
-  vars: +
-    - notificar: "hipchat" +
-  tasks: +
-    - hipchat: +
-        api: https://api.hipchat.com/v2/ +
-        token: "..." +
-        room: destinatario +
-        msg: "Tarea finalizada" +
-      when: notificar == "hipchat" +
-    - mail: +
-        subject: "Tarea finalizada" +
-      delegate_to: localhost +
-      when: notificar == "mail" +
-    - pip: name=pushbullet.py +
-      when: notificar == "pushbullet" +
-</code> +
-         +
-         +
-=== mail +
-[[https://docs.ansible.com/ansible/latest/modules/mail_module.html#mail-module]] +
-  * requerido +
-    * subject +
-  * opcional +
-    * host +
-    * port +
-    * user +
-    * password +
-    * to +
-    * body +
-    * cc +
-    * bcc +
-    * secure = { always | never | try | starttls } +
- +
-<code yaml> +
---- +
-- hostslocalhost +
-  connectionlocalhost +
-  vars: +
-    - notificar: "mail" +
-  tasks: +
-    - mail: +
-        subject: "Tarea finalizada" +
-        host: servidor.correo +
-        port: 25 +
-        to: alberto@correo +
-      delegate_to: localhost +
-      when: notificar == "mail" +
-</code> +
- +
-=== pushbullet +
-[[https://docs.ansible.com/ansible/latest/modules/pushbullet_module.html#pushbullet-module]] +
-  * requerido +
-    * api_key +
-    * title +
-  * opcional +
-    * body +
-    * channel +
-    * device +
-    * push_type +
- +
-<code yaml> +
---- +
-- hosts: localhost +
-  connection: localhost +
-  vars: +
-    - notificar: "pushbullet" +
-  tasks: +
-    - name: instalar pushbullet.py +
-        pip: name=pushbullet.py state=latest +
-        when: notificar == "pushbullet" +
-    - name: enviar notificación +
-        pushbullet: +
-          api_key: <clave> +
-          device: <dispositivo> +
-          title: "Notificación Ansible" +
-        when: notificar == "pushbullet" +
-</code> +
- +
-=== pushover +
-[[https://docs.ansible.com/ansible/latest/modules/pushover_module.html#pushover-module]] +
-  * requeridos +
-    * app_token +
-    * user_key +
-    * msg +
-  * opcional +
-    * pri = prioridad +
- +
-=== rocketchat +
-[[https://docs.ansible.com/ansible/latest/modules/rocketchat_module.html#rocketchat-module]] +
-  * requeridos: +
-    * token +
-    * domain +
-  * opcional +
-    * mdg +
-    * channel +
-    * username +
-    * color = { normal | good | warning | danger } +
-    * protocol = { https | http } +
-    * validate_certs = true /false +
- +
-=== slack +
-[[https://docs.ansible.com/ansible/latest/modules/slack_module.html#slack-module]] +
-  * requerido +
-    * token +
-  * opcional +
-    * msg +
-    * channel = #canal +
-    * username +
-    * color = { normal | good | warning | danger } +
-    * validate_certs = true / false +
- +
-== 3:36 Bases Datos +
- +
-  * mysql +
-    * mysql_db : añade o elimina BBDD +
-    * mysql_replication : administra replicación +
-    * mysql_user : administra usuarios +
-    * mysql_variables : administra variables globales +
-  * postgresql +
-    * postgres_db : añade o elimina BBDD +
-    * postgres_ext : administra extensiones +
-    * postgres_lang : administra procedimientos almacenados +
-    * postgres_privs : administra privilegios +
-    * postgres_schema : administra esquemas +
-    * postgres_user : administra usuarios +
-  * MongoDB +
-    * mongodb_parameter : gestionar parámetros +
-    * mongodb_user : administrar usuarios +
-  * Influxdb +
-    * influxdb_database: administrar BDDD +
-    * retention_policy: administrar políticas de retención +
-  * Vertica (HPE) +
-  * Miscelanea +
-    * elasticsearch_plugin +
-    * kibana_plugin +
-    * redis +
-    * riak +
- +
-=== mysql_db +
-  * requiere +
-    * name = nombre BDD +
-  * opcional +
-    * state = { present | absent | dump | import } +
-    * login_host +
-    * login_password +
-    * login_port +
-    * login_user +
-    * login_unix.socket +
-    * encoding +
-    * collation : (idioma) es_ES.UTF8 +
-    * target +
- +
-<code yaml> +
-- name: Instalar libreria requerida +
-  pip: name=pytho_mysql state=latest +
- +
-- name: crear si no existe la BDD +
-  mysql_db: +
-    name: <bdd> +
-    state: present +
-     +
-- name: copia de seguridad todas las BDD +
-  mysql_db: +
-    state: dump +
-    name: all # palabra clave +
-    target: /tmp/{{ ansible.hostname }}.sql +
-</code> +
- +
-=== mysql_user +
-  * requerido +
-    * name = nombre +
-  * opcional +
-    * state = { present | absent } +
-    * password +
-    * encrypted = no / yes +
-    * login_host +
-    * login_password +
-    * login_port +
-    * login_user +
-    * login_unix.socket +
-    * priv = dbtabla:priv1,priv2 <- privilegios +
-    * append_privs = yes / no <- añadir o sustituir +
- +
-<code yaml> +
-- name: crear usuario y darle permisos +
-  mysql_user: +
-    name: <nombre> +
-    password: <password> +
-    state: present +
-    priv: "<bdd>.*:ALL" +
-</code> +
- +
-=== postgres_db +
-  * requerido +
-    * name = nombreBDD +
-  * opcional +
-    * state = { present | absent } +
-    * login_host +
-    * login_password +
-    * port +
-    * login_user +
-    * login_unix.socket +
-    * encoding +
-    * lc_collate +
-    * template +
- +
-<code yaml> +
-- name: instalarlibrería requerida +
-  pip: name=pstcopg2 state=latest +
-- name: crear si no existe +
-  postgresql_db: +
-    name: <nombre_bdd> +
-    state: present +
-    encoding: utf-8 +
-    become_user: postgres +
-</code> +
- +
-=== postgres_user +
-  * requerido +
-    * name = usuaroi +
-  * opcionales +
-    * state = { present | absent } +
-    * login_host +
-    * login_password +
-    * port = 5432 +
-    * login_user +
-    * login_unix.socket +
-    * password +
-    * encrypted = yes / no +
-    * priv = tabla:privilegio +
-      * role_attr_flags +
-        * (NO)SUPERUSER +
-        * (NO)CREATEROL +
-        * (NO)CREATEUSER +
-        * (NO)CREATEDB +
-        * (NO)INHERIT +
-        * (NO)LOGIN +
-        * (NO)REPLICATION +
-    * db +
- +
-<code yaml> +
-- name: crear si no existe +
-  postgresql_user: +
-    db: <base de datos> +
-    name: <usuario> +
-    state: present +
-    password: <password> +
-    priv: ALL +
-</code> +
- +
-=== mongodb_user +
-  * requerido +
-    * name = usuario +
-    * database = nombre +
-  * opcional +
-    * state = { present | absent } +
-    * password = contraseña usuario +
-    * login_host +
-    * login_password +
-    * login_port = 27017 +
-    * login_user +
-    * roles +
-      * READWRITE +
-      * read +
-      * dbAdmin +
-      * userAdmin +
-      * clusterAdmin +
-      * ... +
- +
-<code yaml> +
-- name: instalar librería requerida +
-  pip: name=pymongo state=latest +
-- name: crear usuario +
-  mongodb_user: +
-    database: admin +
-    name: <usuario> +
-    password: <password> +
-    state: present +
-</code> +
-== 3:37 Gestionar Sistema (I) +
-  * alternatives : gestionar alternativas (versiones) para comandos +
-    * ''/etc/alternatives/java'' +
-  * at : programar ejecución de comandos +
-  * authorized_keys : gestión ficheros claves +
-  * cron : gestión de cron +
-  * crypttab : cifrado de dispositivos +
-  * filesystem : sistema de ficheros +
-  * firewald : equivalente en CentOS/RedHat de **iptables** +
-  * gluster-volume : gestión de volumenes GlusterFS +
-  * group : gestión de grupos +
-  * hostname : gestión nombre servidor +
-  * iptables : gestión reglas firewall +
-  * known_hosts : gestsionar claves de otros servidores +
-  * lvg : LVM +
-  * lvol : LVM +
-  *  +
-  * mount : montaje de FS +
-  * open_iscsi : gestión dispositivos icsci +
-  * openwrt_init : gestionar servicios OpenWRT +
-  * pam_limits : gestión límites PAM +
-  * pamd : gestión módulos PAM +
-  * ping : comprobar conexión +
-  * seboolean +
-  * selcontext +
-  * selinux +
-  * selinux_permisive +
-  * seport : soporte SELinux +
-  * service : gestión servicios +
-  * setup : información del sistema +
-    * gather_facts: false +
-  * sysctl : configurar /etc/sysctl/conf +
-  * systemd : gestión de servicios +
-  * timezone : zonas horarias +
-  * user: gestión usuarios +
- +
-=== alternatives +
-gestión de **/etc/alternatives**\\ +
-[[https://docs.ansible.com/ansible/latest/modules/alternatives_module.html#alternatives-module]] +
-  * requerido +
-    * name = nombre +
-    * path = /ruta/al/fichero +
-  * opcional +
-    * link = /ruta/al/fichero +
-    * priority = 50 +
-<code yaml> +
-- name: fijar la versión de Java a 8 +
-  alternatives: +
-    name: java +
-    path: /usr/lib/jvm/java-8-openjdk-amd64/bin/java +
-</code> +
-''/usr/bin/java'' -> ''/etc/alternatives/java'' -> ''/usr/lib/jvm/java-8-openjdk-amd64/bin/java'' +
- +
-=== authorized_keys +
-[[https://docs.ansible.com/ansible/latest/modules/authorized_key_module.html#authorized-key-module]] +
-  * requerido +
-    * user = <usuario> +
-    * key = <clave.ssh> +
-  * opcional +
-    * state = { present | absent } +
-    * path = ~/.ssh/authorized_keys +
-    * manage_dir = yes / no <- crea carpeta / fichero y ajusta permisos +
-    * key_options = opciones +
-    * exclusive = no / yes <- si ya existe no se añade +
- +
-<code yaml> +
-- nameautorizar clave pública +
-  authorized_keys: +
-    user: <user> +
-    key: "..." +
-</code> +
- +
-=== cron +
-[[https://docs.ansible.com/ansible/latest/modules/cron_module.html#cron-module]] +
-  * name = nombre +
-  * job = comando +
-  * state = { present | absent } +
-  * minute = [0 - 59] +
-  * hour = [0 - 23] +
-  * weekday = [0-6] +
-  * month = [1-12] +
-  * day = [1-31] +
-  * special_time = { reboot | yearly | annualy | monthly | weekly | daily | hourly } +
-  * cron_file = nombre <- crea el fichero en **/etc/cron.d/** +
-  * backup = yes / no +
- +
- +
-== 3:38 Gestionar Sistema (II) +
-=== filesystem +
-[[https://docs.ansible.com/ansible/latest/modules/filesystem_module.html#filesystem-module]] +
-  * requerido +
-    * dev = dispositivo +
-    * fstype = sistema de ficheros +
-  * opcionales +
-    * force = no / yes +
-    * opts = opciones +
-    * resicefs = no /yes +
- +
-<code yaml> +
-- name: crear FS xfs +
-  filesystem: +
-    dev: /dev/sdX1 +
-    fstype: xfs +
-</code> +
- +
-=== firewalld +
-control del firewall en sistemas CentOS/RH +
-[[https://docs.ansible.com/ansible/latest/modules/firewalld_module.html#firewalld-module]] +
-  * requerido +
-    * state = { enabled | disabled } +
-    * permananent = true / false <- hace falta *+reload** (handler) +
-  * opcional +
-    * servicio +
-    * zone +
-    * port +
-    * source +
-    * rol_rule +
-    * immediate = false / true +
-  +
-<code yaml> +
-- name: permitir acceso http/https +
-  firewalld: +
-    state: present +
-    service: "{{ item }}" +
-    permanent: true +
-  with_items: +
-    - "http" +
-    - "https" +
-</code> +
-<code yaml> +
-- name: permitir acceso http/https +
-  firewalld: +
-    state: present +
-    service: "{{ item }}" +
-    permanent: true +
-  with_items: +
-    - "http" +
-    - "https" +
-</code> +
- +
-=== group +
-[[https://docs.ansible.com/ansible/latest/modules/group_module.html#group-module]] +
-  * requerido +
-    * name = nombre +
-  * opcional +
-    * state = { present | absent } +
-    * gid = idgrupo +
-    * system = yes / no +
- +
-<code yaml> +
-- name: crear grupo para aplicación +
-  group: +
-    name: jboss +
-    state: present +
-    gid: 185 +
-</code> +
- +
-=== hostname +
-[[https://docs.ansible.com/ansible/latest/modules/hostname_module.html#hostname-module]] +
-  * name = nombre +
- +
-<code yaml> +
-- name: cambiar el nombre del servidor +
-  hostname: +
-    name: servidor.dominio.com +
-</code> +
- +
-=== ping ? +
-[[https://docs.ansible.com/ansible/latest/modules/ping_module.html#ping-module]] +
-<code yaml> +
-- name: comprobar conexión +
-  ping: +
-</code> +
- +
-=== timezone +
-[[https://docs.ansible.com/ansible/latest/modules/timezone_module.html#timezone-module]] +
-  * hwclock = true / false +
-  * name = Area/Ciudad +
-<code yaml> +
-- name definir huso horario +
-  timezone: +
-    name: Europe/Barcelona +
-</code> +
-== 3:39 Gestionar Sistema (III) +
-== 3:40 Gestionar Sistema (IV) +
-== 3:41 Windows (I) +
-== 3:42 Windows (II) +
-== 3:43 Control Versiones +
-== 3:44 Infra Web +
-== 3:45 Cloud Cluster +
-== 3:46 Monitorización+
  
  • info/cursos/udemy/ansible/modulos.1536921755.txt.gz
  • Darrera modificació: 14/09/2018 03:42
  • per mate