Ansible变量__user变量

时间:2016-06-23 12:54:13

标签: ansible ansible-playbook

我正在使用Ansible 2.1.0.0

我尝试将alter_user与任务中的变量一起使用,但我收到以下消息:

fatal: [host]: FAILED! => {"failed": true, "msg": "'ansible_user' is undefined"}

执行此任务的任务是

- name: Config git user name
  git_config: name=user.name scope=global value={{ ansible_host }}
  become: Yes
  become_user: "{{ansible_user}}"

Playbook有以下行来定义远程用户:

- name: Foo
  hosts: foo
  vars:
    http_port: 80
  remote_user: admin

我看过this response这似乎是同一个问题,但这对我不起作用。

我也看到了a set_fact解决方案,但我想尽可能使用remote_user var,因此如果playbook已经设置了remote_user var,则不必添加额外的行。

有谁知道如何做到这一点或我做错了什么?

3 个答案:

答案 0 :(得分:1)

我想我找到了它:

become_user: "{{ansible_ssh_user}}"

实际上remote_user: admin是另一种定义变量ansible_ssh_user的方法,我不知道为什么remote_user不能作为变量访问,但我所知道的是,当你设置remote_user时,它会改变变量{{1 }}

不确定它是否是一个干净的解决方案,但它有效

答案 1 :(得分:1)

那是怎么回事:

- name: Foo
  hosts: foo
  vars:
    http_port: 80
    my_user: admin
  remote_user: "{{my_user}}"

然后:

- name: Config git user name
  git_config: name=user.name scope=global value={{ ansible_host }}
  become: Yes
  become_user: "{{my_user}}"

答案 2 :(得分:0)

我在使用{{ ansible_ssh_user }}时遇到类似的问题

fatal: [xxx]: FAILED! => {"msg": "The field 'become_user' has an
invalid value, which includes an undefined variable. The error was:
'ansible_user' is undefined"}

我使用以下方法解决了该错误:

- name: Backups - Start backups service
  shell:
    cmd: systemctl --user enable backups.service && systemctl --user restart backups.service
    executable: /bin/bash
  become: true
  become_method: sudo
  become_user: "{{ lookup('env','USER') }}"

我希望这会有所帮助。