2016-10-25 2 views
0

Скажем, у меня есть очень простая программа magic_command.c, которую я хочу скомпилировать до magic_command и установить в /usr/local/bin.Компиляция и установка простого двоичного файла с использованием Ansible

Один метода, который я могу думать делать это примерно следующее с анзиблем:

  • Создайте временный каталог на удаленном хосте
  • Скопируйте magic_command.c и Makefile к временному каталогу
  • Запуск make all создать magic_command
  • Run make install, цель, которая копирует magic_command в /usr/local/bin

Есть ли более простой или более сжатый способ сделать это с помощью Ansible?

+0

http://meta.codereview.stackexchange.com/a/5778 – techraf

+0

@techraf Не знаете, как это отношение - «Без кода, встроенного непосредственно в вопрос, мы просто не можем делать обзор кода». – DanielGibbs

+0

Это хороший момент. Ваш вопрос не только запрашивает субъективные ответы («* elegant *»), но также гипотетичен и не содержит кода. – techraf

ответ

0

Я закончил с использованием метода, очень похожий на описанный в моей оригинальный вопрос:

- name: Create temporary directory for compilation 
    command: mktemp -d /tmp/magic_command.XXXXXXXXX 
    register: magic_command_temp_dir 

- name: Copy source and makefile 
    copy: src={{ item }} dest={{ magic_command_temp_dir.stdout }} 
    with_items: 
    - magic_command.c 
    - Makefile 

- name: Compile executable 
    shell: make chdir={{ magic_command_temp_dir.stdout }} 

- name: Install executable 
    copy: remote_src=True src={{ magic_command_temp_dir.stdout }}/magic_command dest=/usr/local/bin/magic_command mode=0755 owner=root group=root 

- name: Remove temporary directory 
    file: name={{ magic_command_temp_dir.stdout }} state=absent