首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Ansible运行“停靠卷创建”?

用Ansible运行“停靠卷创建”?
EN

Stack Overflow用户
提问于 2016-01-27 20:56:11
回答 3查看 6K关注 0票数 7

我有一个Rails应用程序,我正通过Ansible部署在Docker容器中。到目前为止,我的应用程序包括三个容器:

  • Docker卷容器(用docker volume create --name dbdata创建)
  • Postgres容器(带有volumes_from dbdata)
  • Rails应用程序容器(链接到postgres容器)

我的部署剧本正在工作,但我必须通过SSH在服务器上运行docker volume create命令。我很想通过Ansible来做这件事,这样我就可以将这个应用程序的一个新实例部署到一个空容器上。

是否有一种通过Ansible运行docker volume create的方法,或者有其他方法来实现它?我检查了Ansible模块的文档,但看起来它们还不支持volume create。除非我遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-27 21:33:40

这里有一个选项,使用command模块。

代码语言:javascript
复制
- hosts: localhost
  tasks:
    - name: check if myvolume exists
      command: docker volume inspect myvolume
      register: myvolume_exists
      failed_when: false

    - name: create myvolume
      command: docker volume create --name myvolume
      when: myvolume_exists|failed

我们首先使用docker volume inspect检查卷是否存在。我们将该任务的结果保存在变量myvolume_exists中,然后只在inspect任务失败时创建卷。

票数 11
EN

Stack Overflow用户

发布于 2019-03-28 02:40:17

您可以使用Ansible自己的体积模块管理坞卷。新版本2.4。

示例:

代码语言:javascript
复制
- name: Create a volume
  docker_volume:
    name: volume_one

- name: Remove a volume
  docker_volume:
    name: volume_one
    state: absent

- name: Create a volume with options
  docker_volume:
    name: volume_two
    driver_options:
      type: btrfs
      device: /dev/sda2
票数 4
EN

Stack Overflow用户

发布于 2017-01-23 13:32:03

现在,您可以使用-v参数创建命名的卷,从docker的手册页:

如果提供名称,Docker将根据该名称创建一个命名卷。

代码语言:javascript
复制
  - name: Run mariadb
    docker_container:
      name: mariadb-container
      image: mariadb
      env:
        MYSQL_ROOT_PASSWORD: "secret-password"
        MYSQL_DATABASE: "db"
        MYSQL_USER: "user"
        MYSQL_PASSWORD: "password"
      ports:
        - "3306:3306"
      volumes:
        - mariadb-data:/var/lib/mysql

mariadb-data是一个命名卷,由docker自动创建:

代码语言:javascript
复制
$ docker volume inspect mariadb-data
[
    {
        "Name": "mariadb-data",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/mariadb-data/_data",
        "Labels": null,
        "Scope": "local"
    }
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35047813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档