gpt4 book ai didi

docker - Ansible:将文件复制到 Docker 卷

转载 作者:行者123 更新时间:2023-12-02 18:21:07 24 4
gpt4 key购买 nike

我运行一个 Ansible Playbook,它收集机器特定信息并将日期存储在文件中。每个主机一个。所以我最终得到了一堆文件,现在应该将它们发送到我的基于 Docker 的应用程序以进行进一步处理。

实际上,我需要将其存储在特定文件夹中并创建一个卷,以便容器能够读取文件。

这需要存在/创建/tmp/incoming ...
现在,如果 Monitor 应用程序被移动或需要第二个实例,您将必须访问文件系统并创建目录。

所以我想创建一个更动态的卷:

docker volume create --name monitor-incoming:/var/www/monitor/incoming

现在 Docker 容器将能够访问该卷。但是我可以使用 Ansible 将文件“复制”到这个远程卷吗?将它们发送到 monitor-incoming 而不是/tmp/incoming ?

最佳答案

您可以使用以下任何一种方法:

  • Ansible 非 SSH docker 连接与标准 Ansible file/copy模块。示例取自 Ansible documentation :

  • - name: create jenkins container
    docker_container:
    docker_host: myserver.net:4243
    name: my_jenkins
    image: jenkins

    - name: add container to inventory
    add_host:
    name: my_jenkins
    ansible_connection: docker
    ansible_docker_extra_args: "--tlsverify --tlscacert=/path/to/ca.pem --tlscert=/path/to/client-cert.pem --tlskey=/path/to/client-key.pem -H=tcp://myserver.net:4243"
    ansible_user: jenkins
    changed_when: false

    - name: create directory for ssh keys
    delegate_to: my_jenkins
    file:
    path: "/var/jenkins_home/.ssh/jupiter"
    state: directory
  • Ansible command使用 docker cli 的模块。我用这种方法取得了更大的成功。

  • - name: remove temporary data-only container
    become: yes
    docker_container:
    name: your_temp_data_container
    state: absent

    - name: recreate data volume
    become: yes
    docker_volume:
    name: your_data_volume
    state: present

    - name: create temporary data-only container
    become: yes
    docker_container:
    name: your_temp_data_container
    image: tianon/true
    state: present
    volumes:
    - your_data_volume:/data

    - name: copy folder contents to data volume via temporary data-only container
    become: yes
    command: docker cp /some_data_path_on_this_ansible_host/. your_temp_data_container:/data

    - name: remove temporary data-only container
    become: yes
    docker_container:
    name: your_temp_data_container
    state: absent

    关于docker - Ansible:将文件复制到 Docker 卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52668990/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com