AWS Secrets Manager を作成削除する Ansible Playbook

お疲れ様です。
 

 

前回の記事では、Service Account を作成削除する Ansible Playbook を紹介しました。

Service Account を作成削除する Ansible Playbook
 
 
今回も引き続き、Ansible Playbook について紹介します。Ansibleは、インフラストラクチャーの自動化や構成管理に広く使用されるツールであり、シンプルで柔軟な構文を持つことから、多くの開発者やシステム管理者に支持されています。
 
 

今回は、AWS Secrets Manager を作成削除する Playbook になります。
 
AWS Secrets Manager は一般的に作成や削除を頻繁に行うことはありません。
そのため、1つのPlaybook (yamlファイル) で完結するものになります。
 
 
 

Ansible Playbook とは

Ansible Playbook は、指定したインベントリーやホストのグループに対して自動的に実行されるタスクのリストです。1 つまたは複数の Ansible タスクを組み合わせて play (特定のホストにマッピングされたタスクの順序付けられたグループ) を作ることができ、タスクは書かれた順序で実行されます。Playbook には 1 つ以上の play を含めることができます。

タスクはモジュール単位で実行されます。各モジュールは Playbook の中で特定のタスクを実行します。モジュールには、タスクを実行するタイミングと場所、そしてタスクを実行するユーザーを決定するメタデータが含まれています。数千もの Ansible モジュールがあり、次のようなあらゆる種類の IT タスクを実行します。

引用 Red Hat 公式サイト
 

 

処理概要

以下は処理概要を示した図になります。


 
 

Playbook の 詳細

AWS Secrets Manager のシークレット作成削除を行う Playbook の詳細です。何度も再利用しない想定で作成しています。

---
- name: Create or Delete Secrets in AWS Secrets Manager
  hosts: localhost
  gather_facts: no

  vars:
    aws_region: ap-northeast-1
    configmap_name: your_configmap_name
    namespace: your_namespace
    secret_name: your_secret_name
    kms_key_id: your_kms_key_id
    action: create
    kubeconfig: /path/to/your/kubeconfig

  tasks:
    - name: Extract certificate and private key from EKS ConfigMap
      k8s:
        definition: |
          apiVersion: v1
          kind: ConfigMap
          metadata:
            name: {{ configmap_name }}
            namespace: {{ namespace }}
        register: configmap
      environment:
        KUBECONFIG: {{ kubeconfig }}

    - name: Create or Delete Secrets Manager secret
      aws_secretsmanager:
        name: "{{ secret_name }}"
        secret_string: "{{ configmap['data']['certificate'] }}\n{{ configmap['data']['private_key'] }}"
        kms_key_id: "{{ kms_key_id }}"
        state: "{{ action }}"

 

8行目 : configmap_name: Kubernetes の ConfigMap名を指定します

12行目 : action: 作成の場合は’create’、削除の場合は’delete’を指定します

13行目 : kubeconfig: Kubeconfig ファイルのパスを指定します

17行目 : k8s: Ansible のKubernetesモジュールを使用してKubernetesリソースを管理するためのモジュールです。Red Hat がサポートしているので利用しています

33行目 : state: action変数の値に基づいて作成または削除が実行されます
 

 

Playbook の 各タスクについて

 

  • name: Extract certificate and private key from EKS ConfigMap

このタスクでは、指定されたKubernetesのConfigMapから証明書と秘密鍵を抽出します。
これらの情報は、後続の処理でAWS Secrets Managerに格納されます。
 

  • name: Create or Delete Secrets Manager secret

このタスクでは、AWS Secrets Managerにシークレットを作成または削除します。
作成する場合は指定されたシークレット名で、抽出された証明書と秘密鍵を保持します。
削除する場合は指定されたシークレット名のシークレットを削除します。

 

まとめ

Ansible Playbook を使用した、AWS Secrets Manager を作成削除について紹介しました。
 
Ansible を使用した自動化により、ヒューマンエラーのリスクが軽減され、作業時間の削減だけでなく、確実性とセキュリティも向上します。

 


関連記事

◆ Service Account を作成削除する Ansible Playbook
https://cloud5.jp/mk-ansible-playbook-serviseaccount/

◆【初心者向け】Ansibleについてざっくりまとめてみた
https://cloud5.jp/saitou-ansible-summary/

Last modified: 2024-02-16

Author