2015-06-02 2 views
4

Согласно http://docs.ansible.com/apt_module.html, модуль уместность позволяет установку из .deb файла:анзибль не распознает параметр Деб для способности

# Install a .deb package 
- apt: deb=/tmp/mypackage.deb 

Но работает анзибль 1.9.2 или 1.8.4 на Ubuntu 14.04, этой конфигурации:

- name: install riak 
    apt: deb=/data/riak/riak.deb update_cache=no 

производит этот выход:

TASK: [riak | install riak] *************************************************** 
failed: [riak-server-1] => {"failed": true} 
msg: unsupported parameter for module: deb 

То же анзибль сценарий горе rks отлично работает на Mac с Ansible 1.8.4 и 1.9.

Гость во всех случаях - это созданный Vagrant ubuntu/trusty64. Все создание и настройка VM выполняется с помощью Vagrant и Ansible, и мы все работаем с теми же файлами Vagrant/Ansible.

Edit:

>ansible-playbook --version 
ansible-playbook 1.9.2 
    configured module search path = /usr/share/ansible 

>ansible --version 
ansible 1.9.2 
    configured module search path = /usr/share/ansible 

>locate apt.py | xargs md5sum 
0058a84d0685ad1b67895fdf2da95bc5 /usr/local/lib/python2.7/dist-packages/ansible-1.9.2-py2.7.egg/ansible/modules/core/packaging/os/apt.py 
134ac4074dd7929826f5cf888b2ec3ad /usr/local/lib/python2.7/dist-packages/ansible-1.9.2-py2.7.egg/ansible/modules/core/packaging/os/apt.pyc 

Он построен из источника:

>git status 
On branch stable-1.9 
Your branch is up-to-date with 'origin/stable-1.9'. 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 
    (commit or discard the untracked or modified content in submodules) 

    modified: lib/ansible/module_utils/basic.py 
    modified: lib/ansible/modules/core (modified content) 
    modified: v2/ansible/modules/core (modified content) 

>git diff lib/ansible/module_utils/basic.py 
diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py 
index 91501b1..3430abe 100644 
--- a/lib/ansible/module_utils/basic.py 
+++ b/lib/ansible/module_utils/basic.py 
@@ -911,7 +911,7 @@ class AnsibleModule(object): 
      #if k in ('CHECKMODE', 'NO_LOG'): 
      # continue 
      if k not in self._legal_inputs: 
-    self.fail_json(msg="unsupported parameter for module: %s" % k) 
+    self.fail_json(msg="unsupported parameter for module: %s. supported parameters are %s" % (k, self._legal_inputs)) 

    def _count_terms(self, check): 
     count = 0 

TASK: [riak | install riak] *************************************************** 
failed: [riak-server-3] => {"failed": true} 
msg: unsupported parameter for module: deb. supported parameters are ['CHECKMODE', 'NO_LOG', 'dpkg_options', 'upgrade', 'force', 'package', 'pkg', 'name', 'purge', 'state', 'update_cache', 'update-cache', 'default_release', 'default-release', 'install_recommends', 'install-recommends', 'cache_valid_time'] 

Это действительно смотрит на меня, как это собирание старую версию apt.py откуда-то. Я побежал sudo find/-name apt.py, и есть несколько копий в моем доме, но только один под/usr.

Edit:

Я удалил все экземпляры apt.py, лежащие вокруг, так что:

>sudo find/-name apt.py* | xargs md5sum 
134ac4074dd7929826f5cf888b2ec3ad /usr/local/lib/python2.7/dist-packages/ansible-1.9.2-py2.7.egg/ansible/modules/core/packaging/os/apt.pyc 
0058a84d0685ad1b67895fdf2da95bc5 /usr/local/lib/python2.7/dist-packages/ansible-1.9.2-py2.7.egg/ansible/modules/core/packaging/os/apt.py 
+0

Это очень странно. Вы втрое проверили версию Ansible? Если нарушающая команда является 'ansible-playbook', попробовали ли вы' ansible-playbook -version' непосредственно перед тем, как попытаться выполнить команду оскорбления? Если вы работаете в virtualenv, попробуйте удалить и переустановить virtualenv. –

+0

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

+0

@AntonisChristofides - отредактированный вопрос, чтобы добавить дополнительную информацию. –

ответ

1

Ну, это сейчас работает. Оказывается, некоторое время назад остался остаток оставшегося от бега sudo apt-get install ansible. Таким образом, хотя я пытался полностью вычистить любые анзибль биты слева, используя

sudo rm -rf /usr/local/lib/python2.7/dist-packages/ansible* /usr/local/bin/ansible* /usr/bin/ansible* 

и даже если не было никакого старого apt.py не осталось где-нибудь в моей системе, sudo apt-get remove ansible нашел что-то удалить. Я думал, что уже бежал, прежде чем идти по исходному маршруту, но, видимо, нет.

>sudo apt-get remove ansible 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
The following packages were automatically installed and are no longer required: 
    python-jinja2 python-markupsafe python-yaml 
Use 'apt-get autoremove' to remove them. 
The following packages will be REMOVED: 
    ansible 
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. 
After this operation, 2,758 kB disk space will be freed. 
Do you want to continue? [Y/n] y 
(Reading database ... 282489 files and directories currently installed.) 
Removing ansible (1.5.4+dfsg-1) ... 
Processing triggers for man-db (2.6.7.1-1ubuntu1) ... 

После этого я снова клонировали источник:

git clone [email protected]:ansible/ansible --recursive 

и перестроен:

sudo make clean install 
sudo /bin/bash ./hacking/env-setup 

Теперь установить из файла .deb работы:

TASK: [riak | install riak] *************************************************** 
changed: [riak-server-3] 
Смежные вопросы