我正在使用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,则不必添加额外的行。
有谁知道如何做到这一点或我做错了什么?
答案 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') }}"
我希望这会有所帮助。