Установка с помощью ansible

Я использую сценарии ansible для настройки своей среды (Ubuntu) в Amazon EC2 и vagrant box. Затем я пытаюсь настроить ту же среду на GermanVPS (Ubuntu Minimal). Установка пакетов с помощью Apt не работает.

я бегу

ansible-playbook -i ansible/live -u priidu ansible/caselaw.yml -s -vvvv --start-at-task="install"

что дает следующую ошибку.

failed: [master] => (item=postgresql-9.4,postgresql-contrib-9.4,postgresql-server-dev-9.4,python-psycopg2) => {"failed": true, "item": "postgresql-9.4,postgresql-contrib-9.4,postgresql-server-dev-9.4,python-psycopg2"}
stderr: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. 

msg: '/usr/bin/apt-get -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold"   install 'postgresql-server-dev-9.4' 'python-psycopg2'' failed: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. 


FATAL: all hosts have already failed -- aborting

Тогда я пытаюсь

ansible-playbook -i ansible/live -u priidu ansible/caselaw.yml -s -vvvv --start-at-task="dpkg configure"

и я получаю следующее сообщение об ошибке

failed: [master] => (item=postgresql-9.4,postgresql-contrib-9.4,postgresql-server-dev-9.4,python-psycopg2) => {"failed": true, "item": "postgresql-9.4,postgresql-contrib-9.4,postgresql-server-dev-9.4,python-psycopg2", "parsed": false}
BECOME-SUCCESS-grensagvuewehoylwpjytnkzpwwqgsre
Killed
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/priidukull/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 51: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 54431
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 2
debug3: mux_client_read_packet: read header failed: Broken pipe
debug2: Received exit status from master 0
Shared connection to <<hostname>> closed.


FATAL: all hosts have already failed -- aborting

Что там происходит и как я могу начать решать головоломку?

Изменить: соответствующая часть моей пьесы

- name: dpkg configure
  shell: dpkg --configure -a

- name: install
  apt: name={{ item }} update_cache=yes
  with_items:
    - postgresql-9.4
    - postgresql-contrib-9.4
    - postgresql-server-dev-9.4
    - python-psycopg2

Изменить 2: добавлены команды playbook.

Изменить 3: проблема исчезла, когда я увеличил объем оперативной памяти с 64 МБ до 512 МБ.


person Priidu Kull    schedule 10.06.2015    source источник
comment
вставьте соответствующий фрагмент вашей пьесы   -  person    schedule 10.06.2015
comment
Вы запускаете плейбук с помощью sudo? Это не ясно из вашего фрагмента, но может быть причиной.   -  person udondan    schedule 11.06.2015
comment
-s означает sudo Во всяком случае, я только что заметил, что купил виртуальный сервер с преступно маленькой оперативной памятью 64 МБ. Так что я буду отходить от этого оборудования.   -  person Priidu Kull    schedule 11.06.2015


Ответы (3)


Я столкнулся с этой проблемой, когда пытался установить докер через ansible-playbook.

Я пытаюсь увеличить оперативную память с 512 МБ до 1024 МБ. Но это не сработало.

И тогда я нашел решение, как показано ниже:

Удалите все файлы в /var/lib/dpkg/updates и повторите попытку!!

Во всяком случае, это работает для меня!

person Zach.Z    schedule 01.08.2017

Я добавил несколько задач, чтобы удалить проблему dpkg в Ubuntu 16.04, и она работает хорошо.

tasks:
- name: configure dpkg 1
  command: sudo rm /var/lib/apt/lists/lock
  become: true

- name: configure dpkg 2
  command: sudo rm /var/cache/apt/archives/lock
  become: true

- name: configure dpkg 3
  command: sudo rm /var/lib/dpkg/lock  
  become: true

- name: configure dpkg 4
  command: sudo dpkg --configure -a
  become: true

- name: Update and upgrade apt packages 
  become: true
  apt:
    upgrade: yes
    update_cache: yes
    cache_valid_time: 86400 #One day
person GANESH CHOKHARE    schedule 23.07.2018

В Ansible есть модуль yum, который можно использовать для установки пакетов. Я застрял на некоторое время, так как обнаружил, что мне нужно установить другие зависимости, например. разархивировать. Но это было очень полезно, чтобы мой код оставался элегантным и простым.

Эта ссылка содержит документацию к модулю: http://docs.ansible.com/yum_module.html

Например, чтобы установить последнюю версию Apache:

ням: name=httpd state=latest

person Deepak Shenoy    schedule 15.07.2015
comment
Yum — менеджер пакетов для систем на основе Rhel, OP, безусловно, использует систему на основе Debian, поэтому он использует apt. - person DevOops; 07.06.2016