Grow up

生活とプログラミング

DockerでAnsibleを使ってPostgreSQLをインストールする

f:id:knkomko:20210718235123p:plain:w250

はじめに

前回のcronに続いて今回はPostgreSQLをインストールしてみました。

knkomko.hatenablog.com

YAMLは以下のリポジトリに保存しています。

github.com

フォルダ構成
C:\docker\ansible-psql\
│  docker-compose.yml
│  inventry.ini
│  playbook.yml
│
├─ansible\
│     Dockerfile
│
└─target\
    │  Dockerfile
    │
    └─home\
playbook.yml

PostgreSQLのインストール後にサービスを起動しています。

- name: Postgre SQL
  hosts: target
  tasks:
   - name: Install PostgreSQL 
     apt: name=postgresql update_cache=true state=present
   - name: PostgreSQL service is running
     service: name=postgresql state=started enabled=yes
Docker コンテナの起動
# docker-compose.yml のディレクトリに移動
$cd C:\docker\ansible-psql\
# コンテナの起動
$docker compose up -d --build
inventory.ini の変更

Ansibleからcronの設定を行うコンテナのIPアドレスを inventory.ini に入力します。
今回は 172.27.0.2 と記載していますが、環境に合わせて変更が必要です。

[target]
172.27.0.2

[target:var]
ansible_python_interpreter=/usr/bin/python3

コンテナのIPアドレスは内部で起動しているUbuntuに接続すると確認できます。

# target コンテナに接続
$docker exec -it target bash
# IPアドレスの確認
$hostname -i
playbook.yml の実行

ansible のコンテナに接続してAnsibleから PostgreSQL をインストールします。
今回SSH接続のパスワードは password としています。

# ansible コンテナに接続
$docker exec -it ansible bash
# Ansibleから PostgreSQL のインストール
$ansible-playbook -i inventry.ini playbook.yml --ask-pass

SSH password:

PLAY [Postgre SQL] ************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [172.27.0.2]

TASK [Install PostgreSQL] *****************************************************************************************************************************************************************************************************************************************************
changed: [172.27.0.2]

TASK [Ensure the PostgreSQL service is running] *******************************************************************************************************************************************************************************************************************************
changed: [172.27.0.2]

PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************
172.27.0.2                 : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
PostgreSQL の接続

インストールしたPostgreSQLに接続するため target コンテナに接続します。
ユーザーを postgres に変更した後 psql を使って接続できることを確認します。

# target コンテナに接続
$docker exec -it target bash
# postgres ユーザに変更
$su - postgres
# PostgreSQL に接続
$psql -U postgres -d postgres