Установите ansible galaxy с помощью ansible - PullRequest
0 голосов
/ 18 июня 2019

Как установить роль ansible с помощью ansible?

В ручном режиме используется командная строка:

ansible-galaxy install user.role

Но как мне сделать это в самом anible, как модуль? Я бы предположил, что-то вроде этого в пьесе:

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

Это, кажется, очень тривиальная и элементарная задача, но я не могу найти, как это сделать.

Здесь есть похожий вопрос Как автоматически установить роли Ansible Galaxy? . Но он не отвечает на него, так как он просто запускает ручную команду каждый раз, и он не идемпотентен (то есть основная причина использовать ansible для автоматизации вещей).

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Ваш вывод "it just runs the manual command every time, and it is not idempotent" был слишком быстрым.Такая задача идемпотентна с параметром , создающим и соответствующим 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 }}"
0 голосов
/ 18 июня 2019

Основной вопрос в этом вопросе, который не так очевиден для новичков и не так легко найти во вводной документации, заключается в том, что роли галактики просто необходимо установить на клиенте, а не на сервере .

Таким образом, в игровой книге для сервера вам не нужно устанавливать роль galay каждый раз, когда вы настраиваете сервер, а только один раз на своем клиентском компьютере.

...