访问remote_user变量

Jos*_*nis 13 ansible ansible-playbook

这似乎有效,但它是否脆弱?我希望将files命令中的所有者和组设置为someguy.我希望能够使用,{{ remote_user }}但这不起作用.

这是一个显示我的意思的示例剧本.

---
- hosts: foobar
  remote_user: someguy
  tasks:
    - name: configure /usr/src/foo
      file: 
        dest: /usr/src/foo
        state: directory
        owner: {{ ansible_ssh_user }}
        group: {{ ansible_ssh_user }}
        recurse: yes
      sudo: yes
Run Code Online (Sandbox Code Playgroud)

这不起作用:

---
- hosts: foobar
  remote_user: someguy
  tasks:
    - name: configure /usr/src/foo
      file: 
        dest: /usr/src/foo
        state: directory
        owner: {{ remote_user }}
        group: {{ remote_user }}
        recurse: yes
      sudo: yes
Run Code Online (Sandbox Code Playgroud)

一个或多个未定义的变量:'remote_user'未定义

小智 8

还有{{ ansible_ssh_user }},其中包含远程用户名,并且似乎可以正常访问。另请参阅此答案


Phi*_*mes -4

在命令中指定变量时,必须将它们括在引号中 - 例如:

  file: dest=/usr/src/foo state=directory owner={{ remote_user }} group={{ remote_user }} recurse=yes
Run Code Online (Sandbox Code Playgroud)

确实应该是:

  file: dest=/usr/src/foo state=directory owner="{{ remote_user }}" group="{{ remote_user }}" recurse=yes
Run Code Online (Sandbox Code Playgroud)

鉴于缺少引号,我很惊讶你的第一个示例竟然能起作用。

此外,在该示例中,您的“remote_user”实际上不必是“someguy”,因为通常使用sudo: yes足以让文件模块正确设置指定的所有者和组。