Failed to lock apt for exclusive operation

I create a new user using ansible called nginx, nginx is part of the sudo group a, but when I try to do an apt install with this user I get the below error

: FAILED! => {"changed": false, "msg": "Failed to lock apt for exclusive operation"}

What is the cause of the error and how can it be fixed?

I create a new user using ansible called `nginx`, `nginx` is part of the sudo group a, but when I try to do an apt
install with this user I get the below error

: FAILED! => {"changed": false, "msg": "Failed to lock apt for exclusive operation"}

What is the cause of the error and how can it be fixed?

Please show your playbook.

Regards
          Racke

Hi Stefan, I have attached my playbook below

`

  • name: Install Nginx Ubuntu
    hosts: web
    remote_user: “{{ NGINX_USER }}”
    become: yes
    become_method: sudo
    become_user: “{{ NGINX_USER }}”
    connection: ssh
    gather_facts: no
    vars:
    NGINX_VERSION: nginx-1.17.10
    NGINX_SBIN_PATH: /usr/sbin/
    NGINX_ERROR_LOG_PATH: /var/log/nginx/error.log
    NGINX_HTTP_LOG_PATH: /var/log/nginx/access.log
    NGINX_PID_PATH: /var/run/nginx.pid
    vars_files:
  • …/vars/global.yaml
    tasks:
  • name: Check if Nginx Exists
    stat: path=/etc/init.d/nginx
    register: nginx_status
    become: yes
  • name: Stop nginx Service
    service: name=nginx state=stopped
    when: nginx_status.stat.exists
    register: service_stopped
  • name: Make sure a systemd is not running
    systemd:
    state: stopped
    name: nginx
  • name: Install aptitude using apt
    apt:
    name: aptitude
    state: latest
    update_cache: yes
    force_apt_get: yes
  • name: Update apt repo
    apt:
    update_cache: yes
    cache_valid_time: 3600
  • name: Install required system packages
    apt: name={{ item }} state=latest update_cache=yes
    loop:
    [
    “build-essential”,
    “libpcre3”,
    “libpcre3-dev”,
    “zlib1g”,
    “zlib1g-dev”,
    “libssl-dev”,
    ]

`

Hi Stefan, I have attached my playbook below

Hello George,

you need to be superuser to install APT packages, but your become_user is "{{ NGINX_USER }}" which
is probably not root.

Regards
       Racke

Okay, sorry I am new to Ansible and all this is a bit confusing.

How do I set the super password, because now I change it to root, and even though I use the flag --ask-pass and pass in the password I now get the error Missing sudo password

`

  • name: Install Nginx Ubuntu
    hosts: web
    remote_user: “{{ NGINX_USER }}”
    become: yes
    become_method: sudo
    become_user: root
    connection: ssh
    gather_facts: no
    vars:
    NGINX_VERSION: nginx-1.17.10
    NGINX_SBIN_PATH: /usr/sbin/
    NGINX_ERROR_LOG_PATH: /var/log/nginx/error.log
    NGINX_HTTP_LOG_PATH: /var/log/nginx/access.log
    NGINX_PID_PATH: /var/run/nginx.pid
    vars_files:
  • …/vars/global.yaml
    tasks:
  • name: Check if Nginx Exists
    stat: path=/etc/init.d/nginx
    register: nginx_status
    become: yes
  • name: Stop nginx Service
    service: name=nginx state=stopped
    when: nginx_status.stat.exists
    register: service_stopped
  • name: Make sure a systemd is not running
    systemd:
    state: stopped
    name: nginx
  • name: Install aptitude using apt
    apt:
    name: aptitude
    state: latest
    update_cache: yes
    force_apt_get: yes
    `

And I run with this playbook with the command

ansible-playbook nginx_ubuntu_18_04/playbook.yaml -i hosts --ask-pass

But I now get the error

`

TASK [Check if Nginx Exists] ********************************************************************************************************************************************************************************************
fatal: [142.93.15.195]: FAILED! => {“msg”: “Missing sudo password”}

`

Okay, sorry I am new to Ansible and all this is a bit confusing.

How do I set the super password, because now I change it to root, and even though I use the flag --ask-pass and pass in
the password I now get the error `Missing sudo password`

Hello George,

--ask-pass is for the SSH connection, --ask-become-pass for Sudo password.

Regards
         Racke

Not sure what a "super password" is - but it indicates that you might
not have read the dedicated web page on Privilege escalation.
I would suggest doing that though:
https://docs.ansible.com/ansible/latest/user_guide/become.html.