我正在使用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卷的代码,以防有人感兴趣
请询问您需要的任何信息,所有帮助都是非常苛刻的
答案 0 :(得分:2)
这是一份清单:
将EBS卷(磁盘)附加到EC2实例(例如/dev/xvdh
)
制作分区(可选)(例如/dev/xvdh1
)
在分区/磁盘上创建文件系统
在EC2实例中安装文件系统(例如/opt/ebs_data
)
启动具有卷的Docker-container(例如/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