0

je suis en train de déploiement postgres avec docker, ansible et terraform dans awspostgres Ansible docker le volume

choses vont relativement bien, je commence l'instance avec terraform, disposition l'instance avec docker en utilisant ansible, commencer mon conteneur postgres avec ansible aussi, et attacher un volume d'ebs à mon instance, que j'ai l'intention d'utiliser comme le stockage de données principal.

mais je suis confus quant à la façon de fixer le volume au docker (non à l'instance que je suis en mesure de le faire en utilisant terraform)

j'imagine qu'il est possible à l'aide ansible ou Sa modification du dockerfile, mais la documentation du "volume" qui semble être la réponse n'est pas si claire pour moi.

donc si j'avais un PlayBook ansible comme ceci:

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

comment pourrais-je préciser le volume ebs à utiliser pour le stockage de données de Postgres?

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}" 
} 

qui était le code utilisé pour fixer le volume ebs, au cas où quelqu'un est intéressé

s'il vous plaît demander à tout genre d'info que vous avez besoin, toute l'aide est profondément aprécié

Répondre

1

Voici une liste de contrôle :

  1. le volume EBS Fixer (disque) à l'instance EC2 (par exemple /dev/xvdh)

  2. Créer une partition (facultatif) (par ex. /dev/xvdh1)

  3. système de fichiers Marque sur la partition/disque

  4. système de fichiers Mont dans votre instance EC2 (par exemple /opt/ebs_data)

  5. Démarrer Docker-conteneur avec le volume (par exemple /opt/ebs_data:/var/lib/postgresql/data)

Dans le module docker_container d'Ansible, volumes est une liste, donc:

- 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 
+0

merci beaucoup, je manquais l'étape "faire du système de fichiers", une question rapide: définissant le volume est: "ebs_storage_path: postgres_data_dir" correct? –

+0

bien, cela fonctionne maintenant, un détail: il ne fonctionne pas si vous utilisez la racine du volume monté en tant que répertoire, vous devez utiliser un sous-répertoire (exemple:/opt/ebs_data/postgres), je crois qu'il vaut la peine de mentionner dans répondre –