使用Ansible安装Ansible星系

时间:2019-06-18 15:30:44

标签: ansible ansible-galaxy

如何使用ansible安装ansible角色?

手动方式是使用命令行:

ansible-galaxy install user.role

但是我该如何像模块一样在本身中做呢?我会在剧本中猜出这样的东西:

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

这似乎是一件非常琐碎且基本的任务,但是我找不到如何做的事情。

这里有一个类似的问题How to automatically install Ansible Galaxy roles?。但是它没有回答,因为它每次都只运行手动命令,并且它不是幂等的(这是使用ansible来使内容自动化的主要原因。 )。

2 个答案:

答案 0 :(得分:1)

您的结论“ it just runs the manual command every time, and it is not idempotent”太快了。这样的任务与参数creates和适当的 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 }}"

答案 1 :(得分:0)

这个问题对于新手来说并不那么明显,在入门文档中也不容易找到。要点是,银河角色只需要安装在客户端中,而不是安装在服务器上

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