将文件从相对路径复制到服务器

时间:2019-09-11 11:37:10

标签: ansible ansible-inventory ansible-facts

Helllo All,

我想从系统中复制文件。我的目录结构如下。

├── ansible
│   ├── inventory
│   └── playbook
├── node
│   ├── keys
│   ├── index.js
│   ├── node_modules
│   ├── package-lock.json
│   └── utils
└── shell
    ├── data.json
    ├── create-data.sh
    ├── destory.sh
    └── firewall-rules.sh

因此,剧本位于ansible/playbook路径中,我想从node/keys/复制文件。我如何传递相对路径,以便ansible可以从node/keys中选择并复制到服务器。

下面是剧本

- hosts: all
  vars:
    source: "{{ source }}"
    destination: /home/ubuntu

  tasks: 

    - name: Copy files
      copy: 
        src:  "{{ source }}"
        dest: "{{ destination }}"

这就是我的跑步方式

ansible-playbook -i inventory/inventory.yaml playbook/crypto-generate.yaml
 --extra-vars "source=../node/keys"

我正在尝试传递相对路径

2 个答案:

答案 0 :(得分:2)

我正在使用perl -ne'print unless $seen{$_}++' universe* > out.csv 构建完整路径,请参见 enter image description here

{{ playbook_dir }}

答案 1 :(得分:0)

您可以在src中使用绝对路径,从而避免了不知道根文件夹在哪里的问题。

  

要复制到远程服务器的文件的本地路径。这可以是   绝对或相对。如果path是目录,则将其复制   递归地在这种情况下,如果路径以“ /”结尾,则仅内部内容   该目录的副本将复制到目标。否则,如果没有   以“ /”结尾的目录本身将被复制。这个   行为类似于rsync命令行工具。

https://docs.ansible.com/ansible/latest/modules/copy_module.html