2016-11-06 3 views
0

У меня есть множество загружаемых плейбуков, которые я использую для выполнения определенных действий на виртуальных машинах Debian и CentOS. До сих пор, когда мне нужно было обрабатывать пакеты, я использовал бы доступные модули apt и yum. Следовательно, я должен был проверить, какая ОС была установлена, а затем использовать правильный модуль.Безопасно ли использовать модуль пакета ansible для обновления всех пакетов?

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

Одна из операций, которые я хочу выполнить, - это обновление всех пакетов. Проблема в том, что ansible's documentation не говорит, как это сделать, используя пакет. Это не означает, однако, как это сделать с меткими и ня: первый использует и операции обновления, а вторые предлагает писать что-то вроде:

yum: name=* state=latest 

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

package: name=* state=latest 

Когда я запустил этот сборник пьес я не попадались какие-либо ошибки, но это нигде не документированы и склонны и yum не работают точно так же. Поэтому мой вопрос: является ли команда выше безопасной, так же как и на самом деле делает то, что я хочу?

Заранее благодарен!

EDIT:

Я обнаружил, что использование package: name=* state=latest будет пытаться установить или обновить все доступные пакеты, а не просто обновление установленных из них. Поэтому это не подходит для меня. В качестве альтернативы, я могу продолжать использовать yum и apt для этого конкретного действия, но я действительно удивляюсь, почему это невозможно сделать, используя пакет, или если у меня что-то не хватает.

ответ

0

Ну после дальнейшего тестирования я могу ответить на вопрос сам, а ответ - нет. Использование package: name=* state=latest на машине Debian будет пытаться установить или обновить каждый пакет, доступный в репозиториях, поэтому он не может использоваться в качестве замены для apt-get upgrade.

0

Из нижеприведенных документов я считаю, что описание, которое вы описываете, можно считать безопасным.

Из package документации:

Этот модуль фактически вызывает соответствующие модули пакета для каждой системы (APT, ням, и т.д.).

Таким образом, все, что вы передадите ему, должно поддерживаться подчеркнутыми упаковщиками yum или apt.

apt Из документации:

Имя подстановочные (fnmatch) как меткому * и версия маски, как Foo = 1,0 * также поддерживаются.

Из yum->name документации:

При использовании состояния = последней, это может быть '*', что означает запуск: ни -y обновление.

EDIT: После @Xavier Alvarez тестирования apt: name=* state=latest установит все пакеты в репо.

+0

Я думаю, что этот комментарий, связанный с apt, не обязательно означает, что использование только подстановочного знака будет обновлять все пакеты, особенно потому, что для этого модуля существует специальный флаг обновления. Поэтому я задаюсь вопросом, будет ли только использование шаблона устанавливать или обновлять * все * пакеты вместо того, чтобы просто обновлять те, которые уже установлены. –

+0

Причина, по которой я считаю, что подходящий шаблон для всех пакетов является [fnmatch] (https://docs.python.org/2/library/fnmatch.html), который упоминается в документах, и поддерживает этот тип подстановочных знаков, поскольку вы может видеть в своих документах. – zochamx

+1

Я только что протестировал его, и он не работает так, как я хочу. Если я использую 'package: name = * state = latest' на машине Debian, он попытается установить * все * пакеты, доступные в репозиториях. Я хочу обновить те пакеты, которые уже установлены. Я думаю, что лучше всего использовать ** apt ** и ** yum ** модули на этом этапе. –