8

如何传递相对路径以便 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

下面是剧本:

- 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"

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

4

2 回答 2

19

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

- name: Copy files
  copy: 
    src:  "{{ playbook_dir }}/../../node/keys"
    dest: "{{ destination }}"
于 2020-11-22T11:39:24.840 回答
-5

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

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

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

于 2019-09-11T11:47:36.553 回答