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

Tec*_*ain 8 ansible ansible-facts ansible-inventory

如何传递相对路径,以便 Ansible 可以从node/keys服务器复制文件并将其复制到服务器?

剧本是ansible/playbook

我的目录结构是:

??? ansible
?   ??? inventory
?   ??? playbook
??? node
?   ??? keys
?   ??? index.js
?   ??? node_modules
?   ??? package-lock.json
?   ??? utils
??? shell
    ??? data.json
    ??? create-data.sh
    ??? destory.sh
    ??? firewall-rules.sh
Run Code Online (Sandbox Code Playgroud)

下面是剧本:

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

  tasks: 

    - name: Copy files
      copy: 
        src:  "{{ source }}"
        dest: "{{ destination }}"
Run Code Online (Sandbox Code Playgroud)

这就是我运行的方式:

ansible-playbook -i inventory/inventory.yaml playbook/crypto-generate.yaml
 --extra-vars "source=../node/keys"
Run Code Online (Sandbox Code Playgroud)

我正在尝试传递相对路径。

ozk*_*nur 17

我正在使用{{ playbook_dir }}构建完整路径,请参阅 特殊的 ansible 变量

- name: Copy files
  copy: 
    src:  "{{ playbook_dir }}/../../node/keys"
    dest: "{{ destination }}"
Run Code Online (Sandbox Code Playgroud)


Ist*_*van -6

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

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

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

  • 正如 Istvan 所说,就像 `ansible-playbook -i inventory/inventory.yaml playbook/crypto-generate.yaml --extra-vars "source=$(pwd)/../node/keys"`。 (2认同)