如何使用ansible安装ansible角色?
手动方式是使用命令行:
ansible-galaxy install user.role
但是我该如何像模块一样在本身中做呢?我会在剧本中猜出这样的东西:
- tasks:
galaxy:
user: username
role: rolename
state: installed
这似乎是一件非常琐碎且基本的任务,但是我找不到如何做的事情。
这里有一个类似的问题How to automatically install Ansible Galaxy roles?。但是它没有回答,因为它每次都只运行手动命令,并且它不是幂等的(这是使用ansible来使内容自动化的主要原因。 )。
答案 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角色,而只需在客户端计算机中安装一次。