no_log:是的

no_log:是的

我有这个输入.csv

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

我将创建一个 server.yml,

---

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

我已经在下面创建了 ansible,但我不知道如何过滤它以测试服务器到另一个服务器端口。这检查所有服务器。

--- 
- 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   

请帮忙!

答案1

servers.yml 应该是这样的,


服务器: - 服务器 1:centos 服务器 2:vm1 端口:22 - 服务器 1:centos 服务器 2:vm2 端口:22 - 服务器 1:vm2 服务器 2:vm1 端口:22 - 服务器 1:vm1 服务器 2:vm2 端口:80

ansible 脚本应该是这样的,


  • 名称:包含要检查的服务器防火墙include_vars:server.yml

  • 名称:获取主机名 shell:echo {{ ansible_hostname }} > /tmp/{{ ansible_hostname }}_data.csv

    no_log:是的

    参数:可执行文件:/bin/bash

  • 名称:获取 IP shell:主机名 -I | cut -d' ' -f1 >> /tmp/{{ ansible_hostname }}_data.csv 参数:可执行文件:/bin/bash

  • 名称:获取 CPU 核心 shell:nproc >> /tmp/{{ ansible_hostname }}_data.csv 参数:可执行文件:/bin/bash

  • 名称:获取内存记忆计算 shell:awk'/MemTotal/{print $2}'/proc/meminfo > 内存参数:可执行文件:/bin/bash

  • 名称:获取内存(以 GB 为单位)记忆计算 shell:awk'{print $1/1000000}'内存>>/tmp/{{ansible_hostname}}_data.csv args:可执行文件:/bin/bash

  • 名称:获取磁盘信息磁盘计算

    如果有 MB 的磁盘,计算将会错误

    并且使用 /dev/vd 代替 /dev/sd

    shell:fdisk -l|grep /dev/sd > disk && awk '/Disk /dev/sd/ {print $3}' disk > disk2 参数:可执行文件:/bin/bash

  • 名称:获取磁盘数量磁盘计算 shell:cat disk2 | wc -l args:可执行文件:/bin/bash 寄存器:countline

  • 名称:计算磁盘总数磁盘计算 shell:awk'{sum+=$1} (NR%{{countline.stdout}})==0{print sum}' disk2 >> /tmp/{{ ansible_hostname }}_data.csv args:可执行文件:/bin/bash

  • 名称:删除 csv shell:rm -f /tmp/{{ ansible_hostname }}_output.csv 参数:可执行文件:/bin/bash 警告:false ignore_errors:True

  • 名称:将其放在一行中的 CSV shell:cat /tmp/{{ ansible_hostname }}_data.csv | awk '{print}' ORS=',' > /tmp/{{ ansible_hostname }}_output.csv args:可执行文件:/bin/bash

  • 名称:检查远程主机端口 wait_for:host={{ item.server2 }} port={{ item.port }} timeout=1 ignore_errors:True register:out when:item.server1 == ansible_hostname with_items:“{{ servers }}”

  • 调试:var=out

  • 名称:保存远程端口
    shell:printf“\n,{{ item.item.server2 }} 端口 {{ item.item.port }} 是 {% if item.failed %}closed{% else %}open{% endif %}”>> /tmp/{{ ansible_hostname }}_output.csv 参数:可执行文件:/bin/bash 时间:item.item.server1 == ansible_hostname with_items:“{{ out.results }}”

  • 名称:删除本地 /tmp/fetched shell:rm -fr /tmp/fetched/ args:可执行文件:/bin/bash 警告:False ignore_errors:True delegate_to:localhost

  • 名称:获取文件 fetch:src:/tmp/{{ ansible_hostname }}_output.csv dest:/tmp/fetched

  • 名称:在本地主机上运行一次 shell:echo'Hostname,IP,CPU-Core,Ram-GB,Disk-GB'> /tmp/fetched/main_output.csv run_once:True delegate_to:localhost

  • 名称:合并为一个文件 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:可执行文件:/bin/bash delegate_to:localhost

    output.csv 应该是这样的,

主机名,IP,CPU-核心,Ram-GB,磁盘-GB vm1,192.168.2.70,1,0.999696,21.5, ,vm2 端口 80 已打开 centos,192.168.2.100,2,1.86599,85.9, ,vm1 端口 22 已打开 ,vm2 端口 22 已打开 vm2,192.168.2.71,2,1.86705,86, ,vm1 端口 22 已打开

相关内容