Подтвердить что ты не робот

Saltstack для "configure make install"

Я мочу ноги SaltStack. Я сделал свое первое состояние (установщик Vim со статической конфигурацией), и я работаю над вторым.

К сожалению, не существует пакета Ubuntu для приложения, которое я бы хотел установить для моего состояния. Мне нужно будет создать приложение самостоятельно. Есть ли "наилучшая практика" для установки типа "configure-make-install" с помощью Salt? Или мне просто нужно использовать cmd?

В частности, если бы я делал это вручную, я бы сделал что-то вроде:

wget -c http://example.com/foo-3.4.3.tar.gz
tar xzf foo-3.4.3.tar.gz
cd foo-3.4.3
./configure --prefix=$PREFIX && make && make install
4b9b3361

Ответ 1

Существуют государственные модули для абстрагирования первых двух строк, если хотите.

Но вы также можете просто запустить команды на целевом миньоне.

install-foo:
  cmd.run:
    - name: |
        cd /tmp
        wget -c http://example.com/foo-3.4.3.tar.gz
        tar xzf foo-3.4.3.tar.gz
        cd foo-3.4.3
        ./configure --prefix=/usr/local
        make
        make install
    - cwd: /tmp
    - shell: /bin/bash
    - timeout: 300
    - unless: test -x /usr/local/bin/foo

Просто включите аргумент unless, чтобы сделать idempotent script.

В качестве альтернативы, распространите bash script на миньон и выполните. Видеть: Как выполнить несколько команд с помощью Salt Stack?

Что касается best practice? Я бы рекомендовал использовать fpm для создания пакета .deb или .rpm и установить его. По крайней мере, скопируйте этот архив в мастер соли и не будете полагаться на внешние ресурсы, чтобы быть там через три года.

Ответ 2

Предположим, что foo-3.4.3.tar.gz проверяется на GitHub. Вот такой подход, который вы можете выполнить в своем файле состояния:

git:
  pkg.installed

https://github.com/nomen/foo.git:
  git.latest:
    - rev: master
    - target: /tmp/foo
    - user: nomen
    - require:
      - pkg: git

foo_deployed:
  cmd.run:
    - cwd: /tmp/foo
    - user: nomen
    - name: |
        ./configure --prefix=/usr/local
        make
        make install
    - require:
      - git: https://github.com/nomen/foo.git

Местоположение вашей конфигурации prefix может быть передано как соляная колонна. Если процесс сборки более сложный, вы можете рассмотреть возможность создания настраиваемого состояния.