ansible docker postgres卷

时间:2017-09-18 19:53:58

标签: postgresql amazon-web-services docker ansible infrastructure

我正在使用docks,ansible和terraform在aws中进行一些postgres部署

事情进展相对顺利,我用terraform启动实例,使用ansible为docker配置实例,也用ansible启动我的postgres容器,并将ebs卷附加到我的实例,我打算用它作为主要数据存储

但我很困惑如何将音量附加到泊坞窗(而不是实例,因为我可以使用terraform这样做)

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

所以,如果我有一个这样的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 个答案:

答案 0 :(得分:2)

这是一份清单:

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

  2. 制作分区(可选)(例如/dev/xvdh1

  3. 在分区/磁盘上创建文件系统

  4. 在EC2实例中安装文件系统(例如/opt/ebs_data

  5. 启动具有卷的Docker-container(例如/opt/ebs_data:/var/lib/postgresql/data

  6. 在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