ansible - 复制文件(remote1->fetch->控制机->copy->remote2)
问题描述
我的剧本有 2 个远程主机和 1 个主节点。我希望将名为“.env”的文件与模块“Fetch”复制到主节点,然后使用模块“copy”将复制到远程主机 2
我的主人:
[jitsi]
185.139.68.189
[VideoBridge2]
46.17.104.103
[Jitsi_Stack]
185.139.68.189
46.17.104.103
[jitsi:vars]
ansible_python_interpreter=/usr/bin/python3
[VideoBridge2:vars]
ansible_python_interpreter=/usr/bin/python3
我的剧本:
---
- hosts: Jitsi_Stack
tasks:
- name: fetch /home/docker-jitsi-meet/.env
fetch:
src: /home/docker-jitsi-meet/.env
dest: /home/
flat: true
when: inventory_hostname == "185.139.68.189"
- name: Copy the file from master to VideoBridge2
copy:
src: /home/.env
dest: /home/
when: inventory_hostname == "46.17.104.103"
我得到错误:
root@lxd02:/etc/ansible/playbook/VideoBridges# ansible-playbook -vv File_copy_from_host_to_host.yaml
ansible-playbook 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
Using /etc/ansible/ansible.cfg as config file
PLAYBOOK: File_copy_from_host_to_host.yaml **************************************************************************
1 plays in File_copy_from_host_to_host.yaml
PLAY [Jitsi_Stack] **************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************
task path: /etc/ansible/playbook/VideoBridges/File_copy_from_host_to_host.yaml:2
ok: [185.139.68.189]
ok: [46.17.104.103]
META: ran handlers
TASK [fetch /home/docker-jitsi-meet/.env] ***************************************************************************
task path: /etc/ansible/playbook/VideoBridges/File_copy_from_host_to_host.yaml:6
changed: [185.139.68.189] => {"changed": true, "checksum": "b445c33c0e4e59ef8624d22060cdbeb1e8953a86", "dest": "/home/.env", "md5sum": "89718e47f6f1fa3817a707f88e7c3774", "remote_checksum": "b445c33c0e4e59ef8624d22060cdbeb1e8953a86", "remote_md5sum": null}
fatal: [46.17.104.103]: FAILED! => {"changed": false, "msg": "file not found: /home/docker-jitsi-meet/.env"}
TASK [Copy the file from master to VideoBridge2] ********************************************************************
task path: /etc/ansible/playbook/VideoBridges/File_copy_from_host_to_host.yaml:13
ok: [185.139.68.189 -> localhost] => {"changed": false, "checksum": "b445c33c0e4e59ef8624d22060cdbeb1e8953a86", "dest": "/home/.env", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "path": "/home/.env", "size": 10437, "state": "file", "uid": 0}
META: ran handlers
META: ran handlers
PLAY RECAP **********************************************************************************************************
185.139.68.189 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
46.17.104.103 : ok=1 changed=0 unreachable=0 failed=1 skipped=0
获救=0 忽略=0
任务 #1 工作正常,并将文件复制.env
到我的本地主节点,但任务 2 完成但出现错误。我试图找到解决方案将近 3 天。
解决方案
我更改了我的host
文件
[jitsi_app]
jitsi ansible_host=185.139.68.189
[videobridge_server]
videobridge ansible_host=46.17.104.103
[Jitsi_Stack]
jitsi
videobridge
[jitsi_app:vars]
ansible_python_interpreter=/usr/bin/python3
[videobridge_server:vars]
ansible_python_interpreter=/usr/bin/python3
并改变剧本:
---
- hosts: Jitsi_Stack
gather_facts: yes
tasks:
- name: Here we are displaying the inventory_hostname values.
debug:
msg: "inventory_hostname = {{ inventory_hostname }}"
- name: fetch.env from /home/docker-jitsi-meet/.env
run_once: true
fetch:
src: /home/docker-jitsi-meet/.env
dest: /home/.env
flat: true
when: inventory_hostname == "jitsi"
- name: Copy the file .env from master to videobridge
copy:
src: /home/.env
dest: /home/docker-jitsi-meet/.env
when: inventory_hostname == "videobridge"
之后,一切正常。也许它会帮助某人!
推荐阅读
- postgresql - 在 Postgres DB 中存储用户生成的报告
- mysql - MYSQL 中通过 ON JOIN 和 Using 有什么区别
- sql - 是否可以在 Bigquery 中为 SQL 编写测试?
- kotlin - 如何从 FileChooser 存储文件路径?
- javascript - 转换成word文档时如何保持html页面样式?
- javascript - 如何隐藏第一张图片的左箭头和最后一张图片的右箭头
- spring-boot - 扩展在百里香叶中无法正常工作
- plsql - 单行 SQL 输出
- flutter - 有没有办法使用颤振访问 twitter API 而不会出错?
- node.js - 即使我的命令几乎完全相同 2 个命令可以工作,而其他 2 个命令不 discord.js