无法将ansible yml文件中的dict键值获取到我的after.yml文件中

时间:2018-05-10 06:34:43

标签: python dictionary ansible

abc.yml:

d_lab: 192.168.1.1
d_location: /ephemeral
ema:
    apple: 10.0.0.1
    orange: 10.0.0.2
    jack: 10.0.0.3

def.yml:

- name: Load data
  hosts: CENTRAL_host
  any_errors_fatal: yes
  tasks:
    - name: Copy files from ema
      shell: "scp -oStrictHostKeyChecking=no -i ~/.ssh/abc.pem root@{{ ema['item'] }}:/tmp/ /tmp/test/"
      with_items:
        - "{{ items }}"

我可以从def.yml中的abc.yml访问d_lab和d_location。 但是当我尝试访问字典ema中的任何键的值时(例如ema [apple]),我收到错误

  

”   任务[从电子邮件中复制文件] ******************************************* ************************************************** **********************   失败:[<>](item = apple)=> {“已更改”:true,“cmd”:“scp -oStrictHostKeyChecking = no -i~ / .ssh / abc.pem root@10.0.0.1:/ tmp / / tmp / test /”,“delta”:“0: 00:00.089524“,”结束“:”2018-05-10 09:15:24.235767“,”失败“:真实,”项目“:”苹果“,”rc“:1,”开始“:”2018-05 -10 09:15:24.146243“,”stderr“:”警告:永久性地将'10 .0.0.1'(RSA)添加到已知主机列表中。\ r \ n \ nscp:/ tmp:不是常规文件“,”stderr_lines“ :[“警告:永久添加'10 .0.0.1'(RSA)到已知主机列表。”,“scp:/ tmp:不是常规文件”],“stdout”:“”,“stdout_lines”:[] }   “

请告诉我如何访问ansible剧本中的字典。

1 个答案:

答案 0 :(得分:1)

看起来发生的实际错误是:

/tmp/

这可能是由于-r是目录而不是远程服务器上的文件。

您应该能够通过将scp参数传递给 public async Task<string> ListFileNames(string projectID) { var nasClient = new NasClient(userId, userPassword); string nasPath = baseNasLocation + env + @"\" + projectID + @"\"; return await nasClient.ListFilesAsync(nasPath); } 来递归复制文件。有关详细信息,请参阅this question