no_log: verdadero

no_log: verdadero

Tengo este input.csv

Server, Check-Server, Firewall-Port,
Server1,Server2,80,
,Server2,9999,
,server8,8443,
Server2,,,
server3,Server6,8443,
,Server9,8888,

y crearé un server.yml,

---

  Server1:
     name: Server2
        - 80
        - 9999
     name: server8
        - 8443
  Server2:
  server3:
     name: Server6
        - 8443
     name: Server9
        - 8888

He creado el siguiente ansible, pero no sé cómo filtrarlo para probar el servidor en otros puertos del servidor. Este cheque a todos los servidores.

--- 
- name: Include file
  include_vars: server.yml


- name: Check if remote host port
  wait_for: host={{ item.name }} port={{ item.port }} timeout=1
  ignore_errors: True
  register: out
  with_items: "{{ servers }}"

- debug: var=out  

- name: Save remote port   
  shell: printf "\n,{{ item.item.name }} port {{ item.item.port }} is {% if item.failed %}closed{% else %}open{% endif %}"  >> /tmp/{{ ansible_hostname }}_output.csv
  args:
    executable: /bin/bash
  with_items: "{{ out.results }}"

- name: delete local /tmp/fetched
  shell: rm -fr /tmp/fetched/ 
  args:
    executable: /bin/bash
    warn: False
  ignore_errors: True
  delegate_to: localhost

- name: Fetching file
  fetch:
    src: /tmp/{{ ansible_hostname }}_output.csv
    dest: /tmp/fetched

- name: Run once on localhost
  shell: echo 'Hostname,IP,CPU-Core,Ram-GB,Disk-GB' > /tmp/fetched/main_output.csv 
  run_once: True
  delegate_to: localhost    

- name: Combined to one file
  shell: cat /tmp/fetched/{{ ansible_hostname }}/tmp/{{ ansible_hostname }}_output.csv >> /tmp/fetched/main_output.csv && printf '\r\n' >> /tmp/fetched/main_output.csv
  args:
    executable: /bin/bash
  delegate_to: localhost   

¡Por favor ayuda!

Respuesta1

El servers.yml debería ser así,


servidores: - servidor1: centos servidor2: vm1 puerto: 22 - servidor1: centos servidor2: vm2 puerto: 22 - servidor1: vm2 servidor2: vm1 puerto: 22 - servidor1: vm1 servidor2: vm2 puerto: 80

El script ansible debería ser así,


  • nombre: incluya el firewall del servidor para verificar include_vars: server.yml

  • nombre: obtener el nombre de host shell: echo {{ ansible_hostname }} > /tmp/{{ ansible_hostname }}_data.csv

    no_log: verdadero

    argumentos: ejecutable: /bin/bash

  • nombre: Obtener IP shell: nombre de host -I | cut -d'' -f1 >> /tmp/{{ ansible_hostname }}_data.csv args: ejecutable: /bin/bash

  • nombre: Obtener shell del núcleo de la CPU: nproc >> /tmp/{{ ansible_hostname }}_data.csv args: ejecutable: /bin/bash

  • nombre: Obtener memoriacálculo de memoria shell: awk '/MemTotal/ {print $2}' /proc/meminfo > argumentos de memoria: ejecutable: /bin/bash

  • nombre: Obtener memoria en GBcálculo de memoria shell: awk '{ print $1/1000000}' memoria >> /tmp/{{ ansible_hostname }}_data.csv args: ejecutable: /bin/bash

  • nombre: Obtener información del discocálculo-de-disco

    el cálculo será incorrecto si hay un disco con MB

    y /dev/vd se usa en lugar de /dev/sd

    shell: fdisk -l|grep /dev/sd > disk && awk '/Disk /dev/sd/ {print $3}' disk > disk2 args: ejecutable: /bin/bash

  • nombre: Obtenga cuántos discoscálculo-de-disco shell: disco de gato2 | wc -l args: ejecutable: /bin/bash registro: línea de conteo

  • nombre: Calcular la suma de discoscálculo-de-disco shell: awk '{sum+=$1} (NR%{{countline.stdout}})==0{print sum}' disk2 >> /tmp/{{ ansible_hostname }}_data.csv args: ejecutable: /bin/bash

  • nombre: eliminar csv shell: rm -f /tmp/{{ ansible_hostname }}_output.csv args: ejecutable: /bin/bash advertencia: falso ignore_errors: verdadero

  • nombre: póngalo en CSV en un shell de una línea: cat /tmp/{{ ansible_hostname }}_data.csv | awk '{print}' ORS=',' > /tmp/{{ ansible_hostname }}_output.csv args: ejecutable: /bin/bash

  • nombre: compruebe si el puerto del host remoto espera_para: host={{ item.server2 }} port={{ item.port }} timeout=1 ignore_errors: True registro: fuera cuando: item.server1 == ansible_hostname with_items: "{{ servidores }}"

  • depuración: var=fuera

  • nombre: Guardar shell de puerto remoto
    : printf "\n,{{ item.item.server2 }} puerto {{ item.item.port }} es {% if item.failed %}cerrado{% else %}abierto{% endif %}" >> /tmp/{{ ansible_hostname }}_output.csv args: ejecutable: /bin/bash cuando: item.item.server1 == ansible_hostname with_items: "{{ out.results }}"

  • nombre: eliminar local /tmp/fetched shell: rm -fr /tmp/fetched/ args: ejecutable: /bin/bash advertencia: Falso ignore_errors: Verdadero delegado_a: localhost

  • nombre: Obteniendo archivo fetch: src: /tmp/{{ ansible_hostname }}_output.csv dest: /tmp/fetched

  • nombre: Ejecutar una vez en el shell del host local: echo 'Nombre de host,IP,CPU-Core,Ram-GB,Disk-GB' > /tmp/fetched/main_output.csv run_once: Verdadero delegado_a: localhost

  • nombre: Combinado en un archivo shell: cat /tmp/fetched/{{ ansible_hostname }}/tmp/{{ ansible_hostname }}_output.csv >> /tmp/fetched/main_output.csv && printf '\r\n' >> /tmp/fetched/main_output.csv args: ejecutable: /bin/bash delegado_to: localhost

    Y el archivo output.csv debería ser así,

Nombre de host, IP, CPU-Core, Ram-GB, Disk-GB vm1,192.168.2.70,1,0.999696,21.5, el puerto 80 de vm2 está abierto centos, 192.168.2.100,2,1.86599,85.9, el puerto 22 de vm1 es abierto, el puerto 22 de vm2 está abierto vm2,192.168.2.71,2,1.86705,86, el puerto 22 de vm1 está abierto

información relacionada