Почему команда SaltStack pkg.installed не распознает установленные пакеты в CentOS 6.6

У меня есть ряд формул, которые отлично работали в Ubuntu, но я обнаружил, что они не работают правильно на моем миньоне под управлением CentOS версии 6.6 (Final). В миньоне работает солевая версия: salt-minion 2014.7.0 (Helium)

Например, пакет git-core не работает:

git-core:
    pkg.installed

Когда я запускаю highstate, я получаю эту ошибку:

[user] out: ----------
[user] out: ID: git-core
[user] out: Function: pkg.installed
[user] out: Result: False
[user] out: Comment: Package 'git-core' not found (possible matches: git, wt-git)
[user] out: Changes:   
[user] out: ----------

Когда я пытаюсь вручную установить требования на сервер, они кажутся уже установленными:

root@host [225 01:41:35 /home/project]# yum install git-core
Loaded plugins: changelog, downloadonly, fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * epel: mirror.steadfast.net
Package wt-git-1.7.1-1.x86_64 already installed and latest version
Nothing to do

Почему SaltStack не находит git-core, когда он установлен?

Кстати, существует целый набор ошибок в пакетах, а не только в git, в том числе:

[user] out: ----------
[user] out:           ID: ssh
[user] out:     Function: service.running
[user] out:       Result: False
[user] out:      Comment: The named service ssh is not available
[user] out:      Changes:   
[user] out: ----------
[user] out:           ID: iptables-persistent
[user] out:     Function: pkg.installed
[user] out:       Result: False
[user] out:      Comment: The following package(s) were not found, and no possible matches were found in the package db: iptables-persistent
[user] out:      Changes:   
[user] out: ----------
[user] out:           ID: iptables-persistent
[user] out:     Function: service.running
[user] out:       Result: False
[user] out:      Comment: The named service iptables-persistent is not available
[user] out:      Changes:   
[user] out: ----------
[user] out:           ID: openjdk-6-jdk
[user] out:     Function: pkg.installed
[user] out:       Result: False
[user] out:      Comment: The following package(s) were not found, and no possible matches were found in the package db: openjdk-6-jdk
[user] out:      Changes:   
[user] out: ----------
[user] out:           ID: tomcat6
[user] out:     Function: pkg.installed
[user] out:       Result: False
[user] out:      Comment: The following packages failed to install/update: tomcat6.
[user] out:      Changes:   
[user] out: ----------

person ninapavlich    schedule 14.01.2015    source источник


Ответы (2)


Я уверен, что вы уже нашли это, но ради следующего человека, это sshd на моих компьютерах с CentOS. Попробуйте что-то вроде:

{% if grains['os_family']=="RedHat" %}

sshd:
    service.running

{% elif grains['os_family']=="Debian" %}

ssh:
    service.running

{% endif %}
person Joe Block    schedule 25.01.2015

Похоже, это потому, что пакеты могут иметь несколько разные имена в зависимости от семейства ОС.

В качестве обходного пути я обновил имя пакета git для систем «RedHat» на «wt-git»:

{% if grains['os_family']=="RedHat" %}
wt-git:
    pkg.installed
{% elif grains['os_family']=="Debian" %}
git-core:
    pkg.installed
{% endif %}    

и для джавы:

{% if grains['os_family']=="RedHat" %}

java-1.6.0-openjdk:
    pkg.installed

{% elif grains['os_family']=="Debian" %}

openjdk-6-jdk:
    pkg.installed

{% endif %}    

Все еще не уверен, что обходной путь для SSH service.running не распознается.

person ninapavlich    schedule 14.01.2015