首页 文章

Ansible变量的变量

提问于
浏览
3

我正在使用Ansible 2.1.0.0

我尝试在任务中使用带有变量的become_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,则不必添加额外的行 .

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

2 回答

  • 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}}"
    
  • 1

    我想我找到了:

    become_user: "{{ansible_ssh_user}}"
    

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

    不确定它是否是一个干净的解决方案,但它的工作原理

相关问题