LoginSignup
39
43

More than 5 years have passed since last update.

ansibleでpostgresqlインストール

Posted at

最近ChefからAnsibleに乗り換えてみたので、AnsibleからPostgresqlをインストールする一連の流れをplaybookにしてみた。

手順

  1. 必要パッケージのインストール
  2. postgresql initdb
  3. postgresql start
  4. DB作成
  5. DBユーザ作成

playbook

main.yml
---
- hosts: all
  sudo: yes
  vars:
    dbuser: "sample-ansible"
    dbpass: "abcdefg"
    dbname: "ansible-db"

  tasks:
  - name: install postgresql
    yum: name={{ item }} state=latest
    with_items:
      - postgresql-server
      - postgresql-devel
      - postgresql-contrib
      - python-psycopg2

  - name: postgresql initdb
    shell: service postgresql initdb

  - name: start postgresql
    service: name=postgresql state=started  enabled=yes

  - name: postgres user sudores
    lineinfile: 
      dest: /etc/sudoers.d/postgres 
      owner: root
      group: root
      mode: 0440
      line: "%vagrant ALL=(postgres) NOPASSWD: ALL"
      state: present
      create: yes
      validate: "visudo -cf %s"

  - name : create database
    postgresql_db: 
      name: "{{ dbname }}"
      encoding: "UTF-8"
      login_user: postgres
    sudo_user: postgres
    sudo: yes

  - name: create user
    postgresql_user: 
      db: "{{ dbname }}"
      name: "{{ dbuser }}"
      password: "{{ dbpass }}"
      priv: ALL
      state: present
      login_user: postgres
    sudo_user: postgres
    sudo: yes

確認

[vagrant@postgresql-server ~]$ sudo su - postgres
-bash-4.1$ psql -l
                                      List of databases
    Name    |  Owner   | Encoding |  Collation  |    Ctype    |       Access privileges
------------+----------+----------+-------------+-------------+-------------------------------
 ansible-db | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres
                                                              : postgres=CTc/postgres
                                                              : "sample-ansible"=CTc/postgres
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                              : postgres=CTc/postgres
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                              : postgres=CTc/postgres
(4 rows)

ポイント

  • postgresqlをansibleで操作するために、'python-psycopg2'をインストールする
  • postgresユーザを利用するため、sudoresに権限を追加する

今回作成したplaybookを以下リポジトリにあげてます
https://github.com/tatsu07/Sample-ansible-postgresql

39
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
43