DockerでAnsibleを使ってPostgreSQLをインストールする
フォルダ構成
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