首页 > 解决方案 > 如何使用 ansible playbook 运行合规性检查

问题描述

我有一本旨在在防火墙上运行合规性的剧本。然而,我对 ansible 的了解并没有扩展到配置变量和条件语句..

这是我目前的剧本:

---
- name: Juniper SRX configuration compliance checks 
  hosts: juniper
  gather_facts: false
  tasks:
  - name: Syslog server check
    junos_config:
      src: files/syslog_config
      comment: Appropriate Syslog server configured 
  - debug:
      var: task

  - name: print success
    debug:
      msg: Syslog server check - OK
    when: not {{ task.changed }}

  - name: print failed
    debug:
      msg: Syslog server check - failed
    when: "{{ task.changed }}"

  - name: Admin credentials 
    junos_config:
      src: files/admin_user
      comment: admin user created and confirmed 


  - name: NTP check 
    junos_config:
      src: files/NTP server
      comment: correct NTP server 

  - name: idle timeout check 
    junos_config:
      src: files/idle timeout
      comment: idle timeout confirmed 

这就是我想要实现的目标:

• 如果任务(Syslog 服务器检查)针对防火墙运行,并且输出类似于文件/syslog_config 的内容……应打印通过消息(即此控制 Syslog 服务器检查已标记为 PASS 合规性检查)因此被 Splunk 或 Elasticsearch 捕获。

• 但是,如果任务(系统日志服务器检查)针对防火墙运行并且输出与 files/syslog_config 的内容不同。应打印失败消息(即此控制系统日志服务器检查已标记为失败,并且缺少以下配置行(设置系统系统日志主机 192.168.100.70 源地址“{{inventory_hostname}}”。),因此由 Splunk / ELK 捕获。

• 在某些情况下,(目前它不是yaml 文件的一部分),任务(即控制检查)可能是防火墙中需要不存在的配置行。在这种情况下,如果找不到,将打印出通过消息。

我需要在 yaml 文件中添加哪些额外的代码行(即条件语句)才能使其工作?

上面的剧本是我的尝试,但它没有按预期工作。

标签: ansible

解决方案


推荐阅读