访问remote_user变量

时间:2015-06-01 17:57:27

标签: ansible ansible-playbook

这似乎有效,但它是否脆弱?我希望files命令中的所有者和组设置为$scope.closePopover = function() { for (var d in $scope.data) { if ($scope.data[d].tempChecked == true) { $scope.data[d].checked = true; } else { $scope.data[d].checked = false; } } $scope.popover.hide(); };。我希望能够使用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
  

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

4 个答案:

答案 0 :(得分:4)

还有{{ ansible_ssh_user }},它包含远程用户名,似乎可以无问题地访问。 See also this answer

答案 1 :(得分:-2)

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

  file: dest=/usr/src/foo state=directory owner={{ remote_user }} group={{ remote_user }} recurse=yes

应该是:

  file: dest=/usr/src/foo state=directory owner="{{ remote_user }}" group="{{ remote_user }}" recurse=yes

我很惊讶你的第一个例子在没有引号的情况下起作用。

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

答案 2 :(得分:-2)

您可以通过添加vars:option

来解决此问题
---
- hosts: foobar
  vars:
    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

答案 3 :(得分:-3)

您可以尝试编写剧本,如:

---
  - set_fact: remote_user="someguy"
  - hosts: foobar
    tasks:
      - name: configure /usr/src/foo
        file: dest=/usr/src/foo state=directory owner={{ remote_user }} group={{ remote_user }} recurse=yes
        sudo: yes