0

Ansible でセキュリティ グループを表示または一覧表示する良い方法を探しています

現在、Ansible で定義されているものと一致するようにセキュリティ グループをサイレントに変更する Ansible モジュールec2_groupを使用していますが、変更内容は表示されません。

変更: [localhost -> 127.0.0.1] => {"変更": true, "group_id": "sg-8649adee"}

ec2_groupAnsible のタスクが実行されると消去される Web コンソールに誰かが何かを追加するのではないかと心配しています。以前の状態に関する情報を (出力で) 得ることができれば問題ありません。そのため、重要ではあるが「文書化されていない」変更を消去した場合でも、すぐに元に戻すことができます。

現在、私が知っている唯一の方法は、これをローカル コマンド モジュールとして実行することです。

aws ec2 describe-security-groups [some pattern]

できれば完全に Ansible 内でこれを行うためのより良い方法はありますか?

4

2 に答える 2

2

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

もう 1 つのオプションは、単純にCloudTrailを使用して、AWS アカウントで何が変更されたかを確認することです。

于 2016-04-13T06:30:01.757 に答える
0

アップデートを 1 つだけ追加します。

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

于 2016-04-13T09:44:13.597 に答える