Ansible 是一种工具,用于对环境进行更改以对其进行配置,使其看起来像已定义的那样。因此,它所做的几乎所有事情都纯粹是为了实施所述更改,并且除了收集事实以使其他模块能够进行更改之外,很少有模块不进行更改。
因此,我想说,如果您使用 Ansible 来控制您的资产,那么您应该完全支持它。如果有人在 Ansible 之外进行了更改,那么让 Ansible 将其更改回来应该是一件好事。如果发生一些非工作时间的紧急情况,有人需要进行手动更改,那么该人应该有一些机制来阻止 Ansible 运行,直到更改反馈到自动化代码中(在我的公司,我们使用 Jenkins 来驱动所有我们的自动化,因此他们可以简单地禁用相关工作)。
如果这不是您的选择,那么您始终可以在更改之前对组进行外壳和描述,然后执行任务检查ec2_group
模块是否更改了任何内容,如果是,则输出安全组之前的样子:
- hosts: localhost
connection: local
vars:
security_group_name: testing
tasks:
- name: describe ec2 security group before change
shell: "aws ec2 describe-security-groups --group-names {{ security_group_name }}"
register: before
changed_when: false
- name: create ec2 security group
ec2_group:
name: "{{ security_group_name }}"
description: "{{ security_group_name }}"
rules:
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- proto: udp
from_port: 123
to_port: 123
cidr_ip: 10.0.0.0/8
rules_egress:
- proto: all
cidr_ip: 0.0.0.0/0
register: ec2_group
- name: security group changed
debug: var=before
when: ec2_group.changed
另一种选择可能是简单地使用CloudTrail来查看您的 AWS 账户中发生了什么变化。