1

如何使用 ansible 安装 ansible 角色?

手动方式是使用命令行:

ansible-galaxy install user.role

但是我如何在 ansible 本身中做到这一点,就像一个模块?我猜想在剧本中是这样的:

- tasks:
  galaxy:
    user: username
    role: rolename
    state: installed

这似乎是一个非常琐碎和基本的任务,但我找不到如何去做。

这里有一个类似的问题如何自动安装 Ansible Galaxy 角色?.但它没有回答它,因为它每次只是运行手动命令,而且它不是幂等的(这是使用 ansible 来自动化的主要原因)。

4

2 回答 2

2

你的结论“ it just runs the manual command every time, and it is not idempotent”太快了。这样的任务对于参数create和适当的ansible_roles_list是幂等的。

- name: Install roles from Ansible Galaxy
  command: "ansible-galaxy install {{ item.role_name }}"
  args:
    creates: "{{ item.role_path }}"
  loop: "{{ ansible_roles_list }}"
于 2019-06-18T15:54:48.163 回答
0

这个问题对新手来说不是那么明显并且在介绍性文档中不容易找到的主要观点是,galaxy 的角色只需要安装在客户端,而不是服务器上

因此,在服务器的剧本中,您不必每次设置服务器时都安装 galay 角色,而只需在客户端计算机中安装一次。

于 2019-06-18T17:01:51.350 回答