I'm using Ansible to install Apt packages on a lxd Ubuntu20.04 container running an Ubuntu 20.04 host.
The container is created successfully and commands execute in the container as expected. But using apt through Ansible does not. Ansible shows successful task run but when I enter the container the packages have not been installed.
I've recently upgraded the version of Ansible to the latest and have been following along from Ansible docs. I've tried bot the apt and ansible.builtin.apt formats. The results remain the same Ansible fails silently.
I was expecting to see a response from php -v and nginx -t when I enter the container. Expecting configs at /etc/nginx and /etc/php
Tasks
tasks:
- name: apt-get update
ansible.builtin.apt:
update_cache: yes
cache_valid_time: 3600
- name: Install Nginx PHP
delegate_to: "{{ lxd_container_name }}"
ansible.builtin.apt:
state: latest
pkg:
- nginx
- python3-pymysql
- php8.1
- php8.1-mysql
- name: Install PHP Extensions
delegate_to: "{{ lxd_container_name }}"
apt: name={{ item }} update_cache=yes state=latest
loop: "{{ php_modules }}"
Ansible version: 2.11.5 Python version: 3.8
Output of running this playbook:
PLAY [localhost] **************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************
ok: [localhost]
TASK [apt-get update] *********************************************************************************************************************************************
ok: [localhost]
TASK [Install Nginx PHP] ******************************************************************************************************************************************
[DEPRECATION WARNING]: Distribution Ubuntu 20.04 on host localhost should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior
Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See https://docs.ansible.com/ansible-
core/2.11/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation warnings can be disabled
by setting deprecation_warnings=False in ansible.cfg.
ok: [localhost -> template]
TASK [Install PHP Extensions] *************************************************************************************************************************************
ok: [localhost -> template] => (item=php-curl)
ok: [localhost -> template] => (item=php-gd)
ok: [localhost -> template] => (item=php-mbstring)
ok: [localhost -> template] => (item=php-xml)
ok: [localhost -> template] => (item=php-xmlrpc)
ok: [localhost -> template] => (item=php-soap)
ok: [localhost -> template] => (item=php-intl)
ok: [localhost -> template] => (item=php-zip)
Result in the container shows that the packages where not installed after several attempts.
root@template:~# nginx
bash: nginx: command not found
root@template:~# php
bash: php: command not found
root@template:~# cd /etc/php
bash: cd: /etc/php: No such file or directory
root@template:~# apt install php8.1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
libcurl4 libgdbm-compat4 libgdbm6 libjansson4 libldap-2.5-0 libldap-common liblua5.3-0 libmagic-mgc libmagic1 libnghttp2-14 libperl5.34 libpsl5 librtmp1
libsasl2-2 libsasl2-modules libsasl2-modules-db libssh-4 mailcap mime-support perl perl-modules-5.34 php-common php8.1-cli php8.1-common php8.1-opcache
php8.1-readline psmisc publicsuffix ssl-cert xz-utils
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser ufw bzip2-doc php-pear gdbm-l10n libsasl2-modules-gssapi-mit
| libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql perl-doc libterm-readline-gnu-perl
| libterm-readline-perl-perl make libtap-harness-archive-perl
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
libcurl4 libgdbm-compat4 libgdbm6 libjansson4 libldap-2.5-0 libldap-common liblua5.3-0 libmagic-mgc libmagic1 libnghttp2-14 libperl5.34 libpsl5 librtmp1
libsasl2-2 libsasl2-modules libsasl2-modules-db libssh-4 mailcap mime-support perl perl-modules-5.34 php-common php8.1 php8.1-cli php8.1-common php8.1-opcache
php8.1-readline psmisc publicsuffix ssl-cert xz-utils
0 upgraded, 43 newly installed, 0 to remove and 0 not upgraded.
Need to get 17.4 MB of archives.
After this operation, 90.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] n
root@template:~# apt install nginx
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
fontconfig-config fonts-dejavu-core libbrotli1 libdeflate0 libfontconfig1 libfreetype6 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libmaxminddb0
libnginx-mod-http-geoip2 libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libnginx-mod-stream-geoip2
libpng16-16 libtiff5 libwebp7 libxpm4 libxslt1.1 nginx-common nginx-core
Suggested packages:
libgd-tools mmdb-bin fcgiwrap nginx-doc ssl-cert
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libbrotli1 libdeflate0 libfontconfig1 libfreetype6 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libmaxminddb0
libnginx-mod-http-geoip2 libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libnginx-mod-stream-geoip2
libpng16-16 libtiff5 libwebp7 libxpm4 libxslt1.1 nginx nginx-common nginx-core
0 upgraded, 25 newly installed, 0 to remove and 0 not upgraded.
Need to get 3773 kB of archives.
After this operation, 11.0 MB of additional disk space will be used.
Do you want to continue? [Y/n] n