cdriehuys.rds-postgres
cdriehuys.rds-postgres
このロールを使うと、AWSのRDSを使ってPostgreSQLデータベースを作成できます。
要件
このロールはAWSとやりとりをするため、botoパッケージをインストールする必要があります。このロールの機能は、ロールが実行されるホストにboto >= 2.26
がインストールされていることに依存しています。また、データベースとやりとりするためにpsycopg2
も必要です。
ロール変数
このロールはAWSとやりとりをするため、ロールを使用するための資格情報を設定する必要があります。資格情報が変数として提供されない場合、Ansibleはこちらに記載されているように、環境変数から資格情報を検索しようとします。
aws_access_key: あなたのアクセスキー
aws_secret_key: あなたのシークレットキー
aws_region: あなたのAWSリージョン
ロールは、他のパラメータのデフォルト名を提供するために、いくつかの一般的なAWS変数を使用します。
aws_application_name: my-application
aws_tags: {}
データベースインスタンスを作成する際に使用されるパラメータは以下の通りです。これらのパラメータはデフォルトでは最小の値に設定されていますので、変更することをお勧めします。
db_instance_name: "{{ aws_application_name }}-db"
db_instance_size: 5
db_instance_type: db.t2.micro
db_instance_default_tags:
application: "{{ aws_application_name }}"
role: database
db_instance_tags: "{{ db_instance_default_tags | combine(aws_tags) }}"
db_instance_subnet: default
# 管理ユーザーのための資格情報
db_admin_username: dbadmin
db_admin_password: password
デフォルトでは、RDSインスタンスはどこからでもアクセスできるセキュリティグループで作成されます。ロール実行後、デフォルトではアクセスは許可されません。実行時に望ましいルールが分からない場合、作成されたセキュリティグループの参照をdb_security_group
として保存します。
db_instance_sg_name: "{{ aws_application_name }}-db-sg"
db_instance_sg_description: '{{ aws_application_name }}'データベースのためのセキュリティグループ。
# 希望するルールで上書きしてください
db_instance_sg_rules: []
# ロールが実行されている間にアクセスを許可するルール
db_instance_sg_holes:
- proto: tcp
from_port: 5432
to_port: 5432
cidr_ip: 0.0.0.0/0
各インスタンスには複数のデータベースをホストできます。データベースは名前と任意のパラメータで指定します。各データベースに付与されたユーザーには、データベース上の全ての権限があります。
db_map: {}
# 複数のユーザーを持つ複数のデータベースの例
db_map:
mydb:
users:
john: johnpassword
alice: alicepassword
otherdb:
users:
phil: philpassword
依存関係
特になし
例のプレイブック
ロールがlocal_action
コマンドを使用するため、ホストをローカルマシンに設定するのが最も適切です。
- hosts: localhost
connection: local
gather_facts: no
roles:
- cdriehuys.rds-postgres
ライセンス
MIT
著者情報
Chathan Driehuys cdriehuys@gmail.com
Role for provisioning a PostgreSQL database on RDS.
ansible-galaxy install cdriehuys.rds-postgres