no_log: verdadeiro

no_log: verdadeiro

Eu tenho esse input.csv

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

e vou criar um server.yml,

---

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

Criei o ansible abaixo, mas não sei como filtrar isso para testar o servidor em outras portas do servidor. Esta verificação para todos os 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 ajude!

Responder1

Oservers.yml deveria ser assim,


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

O script ansible deveria ser assim,


  • nome: Inclui firewall do servidor para verificar include_vars: server.yml

  • nome: Obtenha o shell do nome do host: echo {{ ansible_hostname }} > /tmp/{{ ansible_hostname }}_data.csv

    no_log: verdadeiro

    args: executável: /bin/bash

  • nome: Obter shell IP: nome do host -I | cut -d' ' -f1 >> /tmp/{{ ansible_hostname }}_data.csv args: executável: /bin/bash

  • nome: Obtenha o shell do núcleo da CPU: nproc >> /tmp/{{ ansible_hostname }}_data.csv args: executável: /bin/bash

  • nome: Obter memóriacálculo de memória shell: awk '/MemTotal/ {print $2}' /proc/meminfo > argumentos de memória: executável: /bin/bash

  • nome: Obtenha memória em GBcálculo de memória shell: awk '{print $1/1000000}' memória >> /tmp/{{ ansible_hostname }}_data.csv args: executável: /bin/bash

  • nome: Obter informações do discocálculo de disco

    o cálculo estará errado se houver um disco com MB

    e /dev/vd é usado em vez de /dev/sd

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

  • nome: Obtenha quantos discoscálculo de disco shell: gato disk2 | wc -l args: executável: /bin/bash registrador: countline

  • nome: Calcule a soma dos discoscálculo de disco shell: awk '{sum+=$1} (NR%{{countline.stdout}})==0{print sum}' disk2 >> /tmp/{{ ansible_hostname }}_data.csv args: executável: /bin/bash

  • nome: excluir shell csv: rm -f /tmp/{{ ansible_hostname }}_output.csv args: executável: /bin/bash aviso: falso ignore_errors: True

  • nome: coloque-o em CSV em um shell de uma linha: cat /tmp/{{ ansible_hostname }}_data.csv | awk '{print}' ORS=',' > /tmp/{{ ansible_hostname }}_output.csv args: executável: /bin/bash

  • nome: Verifique se a porta do host remoto wait_for: host={{ item.server2 }} port={{ item.port }} timeout=1 ignore_errors: True registro: out quando: item.server1 == ansible_hostname with_items: "{{ servidores }}"

  • depuração: var = saída

  • nome: Salvar
    shell da porta remota: printf "\n,{{ item.item.server2 }} porta {{ item.item.port }} é {% if item.failed %}closed{% else %}open{% endif %}" >> /tmp/{{ ansible_hostname }}_output.csv args: executável: /bin/bash quando: item.item.server1 == ansible_hostname with_items: "{{ out.results }}"

  • nome: excluir local /tmp/buscado shell: rm -fr /tmp/fetched/ args: executável: /bin/bash aviso: falso ignore_errors: verdadeiro delegado_to: localhost

  • nome: Buscando arquivo fetch: src: /tmp/{{ ansible_hostname }}_output.csv dest: /tmp/fetched

  • nome: Executado uma vez no shell localhost: echo 'Hostname,IP,CPU-Core,Ram-GB,Disk-GB' > /tmp/fetched/main_output.csv run_once: True delegado_to: localhost

  • nome: combinado com um shell de arquivo: cat /tmp/fetched/{{ ansible_hostname }}/tmp/{{ ansible_hostname }}_output.csv >> /tmp/fetched/main_output.csv && printf '\r\n' >> /tmp/fetched/main_output.csv args: executável: /bin/bash delegado_to: localhost

    E o output.csv deveria ser assim,

Nome do host, IP, CPU-Core, Ram-GB, Disco-GB vm1,192.168.2.70,1,0.999696,21.5, ,vm2 porta 80 está aberta centos,192.168.2.100,2,1.86599,85.9, ,vm1 porta 22 é aberta, porta vm2 22 está aberta vm2,192.168.2.71,2,1.86705,86,, porta vm1 22 está aberta

informação relacionada