** Summary changed: - charm fails at 'Ensure prerequisites for "etcd" are available' in air-gapped environments + snap installation fails at 'Ensure prerequisites for "etcd" are available' in air-gapped environments
** Description changed: + Simpler reproducer: + + $ snap version + snap 2.42.1+18.04 + snapd 2.42.1+18.04 + series 16 + ubuntu 18.04 + kernel 4.15.0-91-generic + + $ snap download core18 + Fetching snap "core18" + Fetching assertions for "core18" + Install the snap with: + snap ack core18_1885.assert + snap install core18_1885.snap + + $ snap download --channel 3.3/stable etcd + Fetching snap "etcd" + Fetching assertions for "etcd" + Install the snap with: + snap ack etcd_229.assert + snap install etcd_229.snap + + $ sudo iptables -A OUTPUT -p tcp --destination-port 80 -j REJECT --reject-with tcp-reset + $ sudo iptables -A OUTPUT -p tcp --destination-port 443 -j REJECT --reject-with tcp-reset + + + $ sudo snap install --dangerous ./core18_1885.snap + core18 20200724 installed + + $ sudo snap install --dangerous ./etcd_229.snap + error: cannot perform the following tasks: + - Ensure prerequisites for "etcd" are available (Post https://api.snapcraft.io/v2/snaps/refresh: dial tcp 91.189.92.41:443: connect: connection refused) + + + === + How to reproduce: 1. set apt-http-proxy for deb package downloads $ juju model-config apt-http-proxy http://squid-deb-proxy.lxd:8000/ 2. block outgoing connections to port 80 and 443 to simulate the air- gapped env - $ cat ./userdata.yaml + $ cat ./userdata.yaml cloudinit-userdata: | - preruncmd: - - iptables -A OUTPUT -p tcp --destination-port 80 -j REJECT --reject-with tcp-reset - - iptables -A OUTPUT -p tcp --destination-port 443 -j REJECT --reject-with tcp-reset + preruncmd: + - iptables -A OUTPUT -p tcp --destination-port 80 -j REJECT --reject-with tcp-reset + - iptables -A OUTPUT -p tcp --destination-port 443 -j REJECT --reject-with tcp-reset $ juju model-config ./userdata.yaml 3. deploy the charm with the pre-downloaded charm and pre-downloaded resources (note: core.snap is core18.snap required by the etcd 3.3/stable snap). juju deploy -n 1 --resource core=./resources/etcd/core.snap --resource etcd=./resources/etcd/etcd.snap --resource snapshot=./resources/etcd/snapshot.gz ./charms/etcd - Then, the charm will fail with the following: 2020-08-12 01:50:29 ERROR juju-log Hook error: Traceback (most recent call last): - File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/__init__.py", line 74, in main - bus.dispatch(restricted=restricted_mode) - File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 390, in dispatch - _invoke(other_handlers) - File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 359, in _invoke - handler.invoke() - File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 181, in invoke - self._action(*args) - File "/var/lib/juju/agents/unit-etcd-0/charm/reactive/etcd.py", line 313, in snap_install - snap.install('etcd', channel=channel, classic=False) - File "lib/charms/layer/snap.py", line 66, in install - _install_local(res_path, **kw) - File "lib/charms/layer/snap.py", line 328, in _install_local - subprocess.check_call(cmd) - File "/usr/lib/python3.6/subprocess.py", line 311, in check_call - raise CalledProcessError(retcode, cmd) + File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/__init__.py", line 74, in main + bus.dispatch(restricted=restricted_mode) + File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 390, in dispatch + _invoke(other_handlers) + File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 359, in _invoke + handler.invoke() + File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 181, in invoke + self._action(*args) + File "/var/lib/juju/agents/unit-etcd-0/charm/reactive/etcd.py", line 313, in snap_install + snap.install('etcd', channel=channel, classic=False) + File "lib/charms/layer/snap.py", line 66, in install + _install_local(res_path, **kw) + File "lib/charms/layer/snap.py", line 328, in _install_local + subprocess.check_call(cmd) + File "/usr/lib/python3.6/subprocess.py", line 311, in check_call + raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['snap', 'install', '--channel=3.3/stable', '--dangerous', '/var/lib/juju/agents/unit-etcd-0/resources/etcd/etcd.snap']' returned non-zero exit status 1. 2020-08-12 01:50:29 ERROR juju.worker.uniter.operation runhook.go:136 hook "install" (via explicit, bespoke hook script) failed: exit status 1 - by running the command by hand, I get the following: ubuntu@juju-cb1bd7-1:~$ sudo snap install --channel=3.3/stable --dangerous /var/lib/juju/agents/unit-etcd-0/resources/etcd/etcd.snap error: cannot perform the following tasks: - Ensure prerequisites for "etcd" are available (cannot install system snap "snapd": Post https://api.snapcraft.io/v2/snaps/refresh: dial tcp 91.189.92.41:443: connect: connection refused) ** Also affects: snapd Importance: Undecided Status: New ** Also affects: snapd (Ubuntu) Importance: Undecided Status: New ** Description changed: Simpler reproducer: $ snap version - snap 2.42.1+18.04 - snapd 2.42.1+18.04 + snap 2.45.1+18.04.2 + snapd 2.45.1+18.04.2 series 16 ubuntu 18.04 - kernel 4.15.0-91-generic + kernel 4.15.0-112-generic $ snap download core18 Fetching snap "core18" Fetching assertions for "core18" Install the snap with: - snap ack core18_1885.assert - snap install core18_1885.snap + snap ack core18_1885.assert + snap install core18_1885.snap $ snap download --channel 3.3/stable etcd Fetching snap "etcd" Fetching assertions for "etcd" Install the snap with: - snap ack etcd_229.assert - snap install etcd_229.snap + snap ack etcd_229.assert + snap install etcd_229.snap $ sudo iptables -A OUTPUT -p tcp --destination-port 80 -j REJECT --reject-with tcp-reset $ sudo iptables -A OUTPUT -p tcp --destination-port 443 -j REJECT --reject-with tcp-reset - $ sudo snap install --dangerous ./core18_1885.snap core18 20200724 installed $ sudo snap install --dangerous ./etcd_229.snap error: cannot perform the following tasks: - - Ensure prerequisites for "etcd" are available (Post https://api.snapcraft.io/v2/snaps/refresh: dial tcp 91.189.92.41:443: connect: connection refused) + - Ensure prerequisites for "etcd" are available (cannot install system snap "snapd": cannot get nonce from store: Post https://api.snapcraft.io/api/v1/snaps/auth/nonces: dial tcp 91.189.92.41:443: connect: connection refused) === How to reproduce: 1. set apt-http-proxy for deb package downloads $ juju model-config apt-http-proxy http://squid-deb-proxy.lxd:8000/ 2. block outgoing connections to port 80 and 443 to simulate the air- gapped env $ cat ./userdata.yaml cloudinit-userdata: | preruncmd: - iptables -A OUTPUT -p tcp --destination-port 80 -j REJECT --reject-with tcp-reset - iptables -A OUTPUT -p tcp --destination-port 443 -j REJECT --reject-with tcp-reset $ juju model-config ./userdata.yaml 3. deploy the charm with the pre-downloaded charm and pre-downloaded resources (note: core.snap is core18.snap required by the etcd 3.3/stable snap). juju deploy -n 1 --resource core=./resources/etcd/core.snap --resource etcd=./resources/etcd/etcd.snap --resource snapshot=./resources/etcd/snapshot.gz ./charms/etcd Then, the charm will fail with the following: 2020-08-12 01:50:29 ERROR juju-log Hook error: Traceback (most recent call last): File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/__init__.py", line 74, in main bus.dispatch(restricted=restricted_mode) File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 390, in dispatch _invoke(other_handlers) File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 359, in _invoke handler.invoke() File "/var/lib/juju/agents/unit-etcd-0/.venv/lib/python3.6/site-packages/charms/reactive/bus.py", line 181, in invoke self._action(*args) File "/var/lib/juju/agents/unit-etcd-0/charm/reactive/etcd.py", line 313, in snap_install snap.install('etcd', channel=channel, classic=False) File "lib/charms/layer/snap.py", line 66, in install _install_local(res_path, **kw) File "lib/charms/layer/snap.py", line 328, in _install_local subprocess.check_call(cmd) File "/usr/lib/python3.6/subprocess.py", line 311, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['snap', 'install', '--channel=3.3/stable', '--dangerous', '/var/lib/juju/agents/unit-etcd-0/resources/etcd/etcd.snap']' returned non-zero exit status 1. 2020-08-12 01:50:29 ERROR juju.worker.uniter.operation runhook.go:136 hook "install" (via explicit, bespoke hook script) failed: exit status 1 by running the command by hand, I get the following: ubuntu@juju-cb1bd7-1:~$ sudo snap install --channel=3.3/stable --dangerous /var/lib/juju/agents/unit-etcd-0/resources/etcd/etcd.snap error: cannot perform the following tasks: - Ensure prerequisites for "etcd" are available (cannot install system snap "snapd": Post https://api.snapcraft.io/v2/snaps/refresh: dial tcp 91.189.92.41:443: connect: connection refused) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1891259 Title: snap installation fails at 'Ensure prerequisites for "etcd" are available' in air-gapped environments To manage notifications about this bug go to: https://bugs.launchpad.net/charm-etcd/+bug/1891259/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs