前回まではLAMP構成を作ってみましたが、今回はPostgreSQL環境を構築しようとして、
ユーザ作成で地味にはまったのでメモ。
AnsibleでPostgreSQLのユーザを作成するとき、以下のようにします。
*AnsibleのDocumentより抜粋
# Create rails user, grant privilege to create other databases and demote rails from super user status- postgresql_user: name=rails password=secret role_attr_flags=CREATEDB,NOSUPERUSERなるほど、role_attr_flagsに割り当てる権限を指定するのだな。
というわけで、次のようにしてみました。
しかし、これはエラーになります。
- name: ユーザ作成
postgresql_user:
db: "{{ pgsql_dbname }}"
name: "{{ pgsql_dbuser }}"
password: "{{ pgsql_dbpass }}"
priv: ALL
encrypted: yes
state: present
login_user: postgres
role_attr_flags: "NOSUPERUSER,NOCREATEDB,NOCREATEUSER,NOCREATEROLE"
sudo_user: postgres
sudo: yes
何故か?と小一時間悩んだのですが、どうやら、NO_SUPERUSER権限は既にNOCREATEDBなどの権限を有しているため、重複するロールを指定するとエラーになるようです。参考
なので、通常はNO_SUPERUSERだけで事が足りそうです。
自分は明示的に指定したかったので、以下のようにNOSUPERUSERを外しました。
- name: ユーザ作成
postgresql_user:
db: "{{ pgsql_dbname }}"
name: "{{ pgsql_dbuser }}"
password: "{{ pgsql_dbpass }}"
priv: ALL
encrypted: yes
state: present
login_user: postgres
role_attr_flags: "NOCREATEDB,NOCREATEUSER,NOCREATEROLE"
sudo_user: postgres
sudo: yes
0 件のコメント:
コメントを投稿