Предлагает ли Ansible способ сборки / компиляции на управляющем узле, а затем развертывание на управляемых узлах?

Есть ли способ получить Ansible ] запустить сценарий сборки локально на управляющем узле, а затем развернуть полученный артефакт на различных управляемых узлах?

Сообщите мне, если я что-то пропустил, но я просмотрел документацию по оболочке , , команда и скрипт модули, и каждый из них, кажется, разрешает выполнение только на управляемом узле. Я действительно удивлен, что не могу найти способ запустить команду на управляющем узле.

Может быть, это не в рулевой рубке Ansible? Это идея, что вы должны использовать какой-то другой инструмент, например Make , для сборки, а Ansible только копирует его на серверы?

0
задан 1 March 2021 в 00:05
2 ответа

Для Ansible, чтобы запустить что-то на другом наборе хостов, попробуйте начать новую игру.

- name: Build thing
  # localhost is the node running Ansible
  # By default, this already is connection local
  #   exec instead of ssh
  hosts: localhost
  
  tasks:
  # Assuming make based build scripts
  # make module reports not changed if nothing to do
  - make: 
      chdir: /home/builduser/source/thing/
    
    
- name: Install thing
  hosts: various
  
  tasks:
  - copy:
      # copy is an action plugin that handles the copy from localhost to remote for yoy
      src: /home/builduser/source/thing/output/thing.rpm
      dest: /tmp/thing.rpm

  # TODO Use custom repo for content management rather than copying one-off packages

  - package:
      name: /tmp/thing.rpm

Хотя вы можете использовать Ansible в CI/CD конвейерах и т.д., и он может запускать все, что вам нравится, Ansible не является замечательной системой сборки. Она не ориентирована на артефакты.

2
ответ дан 24 April 2021 в 01:25

Вы можете создать простую задачу для вызова команды make на localhost следующим образом:

    - name: make an executable
      command: make
      tags: compile
      delegate_to: localhost
      connection: local
      run_once: True
      become: no

Это запустит команду make и выполнит все, что есть в вашем Makefile. Затем в следующей задаче вы можете создать задачу копирования, чтобы скопировать результат на управляемые узлы.

2
ответ дан 24 April 2021 в 01:25

Теги

Похожие вопросы