【问题标题】:Get changed output from the ec2_group Ansible module从 ec2_group Ansible 模块获取更改的输出
【发布时间】:2016-08-03 19:07:23
【问题描述】:

我正在寻找一种在 Ansible 中显示或列出安全组的好方法

目前我正在使用 Ansible 模块 ec2_group,它默默地更改安全组以匹配 Ansible 中定义的内容,但不显示更改的内容。

已更改:[localhost -> 127.0.0.1] => {“已更改”:true,“group_id”: “sg-8649adee”}

我担心有人可能会在 Web 控制台中添加一些内容,这些内容会在 Ansible 的 ec2_group 任务执行时被删除。只要我能获得有关先前状态的一些信息(在输出中),就可以了,所以在删除一些重要但“未记录”的修改的情况下,它可以快速恢复。

目前我知道的唯一方法是将其作为本地命令模块运行:

aws ec2 describe-security-groups [some pattern]

有没有更好的方法来做到这一点,希望完全在 Ansible 中?

【问题讨论】:

  • 还是不清楚。您想使用 ansible 描述安全组吗?

标签: amazon-web-services amazon-ec2 ansible aws-security-group


【解决方案1】:

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 账户中发生了什么变化。

【讨论】:

  • 谢谢@ydaetskcoR 我看到我们有相同的想法 :) 我确实将 CloudTrail 作为“最后的手段”。
【解决方案2】:

我将只添加一个更新:

--group-names YourGroupName 

仅适用于默认 VPC

对于非默认 VPC,请使用过滤器,例如:

aws ec2 --region YourRegion describe-security-groups --filters Name=group-name,Values=YourGroupName

http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2020-12-16
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多