在ansible中调用角色时如何使用become?

How do you use become when invoking a role in ansible?

如何在 ansible 中使用角色 become 用户?

例如,我如何使用 ansible galaxy 中的 geerlingguy.nodejs 角色以 root 身份安装 nodejs?这是我所拥有的相关部分:

roles:
  - geerlingguy.nodejs
    become: yes

但这会在 YAML 文件上生成 ERROR! Syntax Error while loading YAML

我终于找到了解决方案,回想起来从 documentation

roles:
    - role: geerlingguy.nodejs
      become: yes

这也可以写成:

roles:
    - { role: geerlingguy.nodejs, become: yes }

这个 ansible 新手之前不明显的部分是文档中使用的替代 json 类语法,当它声明 "Also, should you wish to parameterize roles, by adding variables, you can do so, like this:"

- hosts: webservers
  roles:
    - common
    - { role: foo_app_instance, dir: '/opt/a',  app_port: 5000 }

我花了很长时间才弄清楚这个问题,所以希望这个答案能对其他人有所帮助。