ansible docker postgres 卷

ansible docker postgres volume

我正在使用 docker、aws 中的 ansible 和 terraform 进行一些 postgres 部署

一切进展顺利,我使用 terraform 启动实例,使用 ansible 为实例提供 docker,也使用 ansible 启动我的 postgres 容器,并将 ebs 卷附加到我的实例,这是我打算的用作主要数据存储。

但我很困惑如何将卷附加到 docker(不是实例,因为我可以使用 terraform 做到这一点)

我想可以使用 ansible 或修改 docker 文件,但是似乎是答案的“volume”的文档并不那么清楚对我来说。

所以如果我有这样一个 ansible 剧本:

name: Start postgis
docker_container:
name: postgis
image: "{{ ecr_url }}"    
network_mode: bridge
exposed_ports:
  5432
published_ports:
  5432:5432
state: started

如何指定用于 Postgres 数据存储的 ebs 卷?

resource "aws_volume_attachment" "ebs-volume-postgis-attach" {
device_name = "/dev/xvdh"
volume_id = "${aws_ebs_volume.ebs-volume-postgis.id}"
instance_id = "${aws_instance.postgis.id}"
}

这是用于附加 ebs 卷的代码,以防有人感兴趣

请询问您需要的任何信息,非常感谢所有帮助

这是一个清单:

  1. 将 EBS 卷(磁盘)附加到 EC2 实例(例如 /dev/xvdh

  2. 创建分区(可选)(例如/dev/xvdh1

  3. 在 partition/disk

  4. 上创建文件系统
  5. 在您的 EC2 实例中挂载文件系统(例如 /opt/ebs_data

  6. 启动 Docker-具有体积的容器(例如 /opt/ebs_data:/var/lib/postgresql/data

在Ansible的docker_container模块中,volumes是一个列表,所以:

- docker_container:
    name: postgis
    image: "{{ ecr_url }}"    
    network_mode: bridge
    exposed_ports:
      - 5432
    published_ports:
      - 5432:5432
    state: started
    volumes:
      - /opt/ebs_data:/var/lib/postgresql/data