docker - Ansible:将文件复制到 Docker 卷
问题描述
我运行一个 Ansible Playbook,它收集机器特定信息并将日期存储在文件中。每个主机一个。所以我最终得到了一堆文件,现在应该将它们发送到我的基于 Docker 的应用程序以进行进一步处理。
实际上,我需要将其存储在特定文件夹中并创建一个卷,以便容器能够读取文件。
这需要存在/创建 /tmp/incoming ... 现在,如果 Monitor 应用程序被移动或需要第二个实例,您将必须访问文件系统并创建目录。
所以我想创建一个更动态的卷:
docker volume create --name monitor-incoming:/var/www/monitor/incoming
现在 Docker 容器将能够访问该卷。但是我可以使用 Ansible 将文件“复制”到这个远程卷吗?将它们发送到 monitor-incoming 而不是 /tmp/incoming ?
解决方案
您可以使用以下任何一种方法:
file/copy
Ansible 与标准 Ansible模块的非 SSH docker 连接。取自Ansible 文档的示例:
- 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
- 使用 docker cli 的Ansible
command
模块。我用这种方法取得了更大的成功。
- 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
推荐阅读
- javascript - 滚动 ember 灯表
- algorithm - 寻找在工人之间分配不同工作任务的最有效方法的算法
- swift - Swift,iOS:仅在给定pressedChangedHandler时如何检测GCController按钮被按住?
- flutter - 如何停止在 Flutter 中播放音频
- git - refs/heads/master:refs/heads/master 是什么意思?
- game-physics - 检测到碰撞后如何解决?
- shinyapps - 带有日期输入的 R Shiny App 未根据选择进行过滤。如何根据最大日期过滤数据。请检查语法是否正确
- c# - 如何使用 Ntlm 身份验证在 wcfTestClient.exe 中测试我的端点 URL
- r - openxlsx 中的动态 writeFormula 超出了我在 excel 输出中的数据框的最后一行
- javascript - 在javascript中通过多个值聚合数据