Lxd instance not found fix false positives (#7521)
* lxd: Add lxc command execution debug statement.
* lxd: avoid false positives in "instance not found" detection
Due to changes over time in the error message which lxd printed when an
instance wasn't found, the detection logic in the lxd connection plugin
matched any "not found" string. Unfortunately this also false triggered
on other errors e.g. "/usr/bin/python3: not found" from the payload,
giving a confusing error message "UNREACHABLE! ... instance not found"
to the ansible user.
* Update changelog fragment.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b4a2e9da50)
Co-authored-by: Tim Small <tim@seoss.co.uk>
* plugins/connection/lxd: convert FQDN to instance name
This allows to use FQDNs in the inventory and have the
connection driver do the translation when talking to
LXD that uses hostnames (no ".") for instance names.
Those are either globally unique or unique per network/
project in LXD.
```
all:
# Groups and hosts
children:
lxd_dmz:
vars:
ansible_lxd_project: dmz
hosts:
www01.dmz.example.com:
www02.dmz.example.com:
```
```
$ lxc list --project dmz
+---------+---------+----------------+------+-----------+-----------+----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | LOCATION |
+-------+---------+------------------+------+-----------+-----------+----------+
| www01 | RUNNING | 192.0.2.1 (eth0) | | CONTAINER | 0 | t1 |
+-------+---------+------------------+------+-----------+-----------+----------+
| www02 | RUNNING | 192.0.2.2 (eth0) | | CONTAINER | 0 | t3 |
+-------+---------+------------------+------+-----------+-----------+----------+
```
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
* plugins/connection/lxd: VMs/containers are called instances
Update error string parsing to support the new format:
$ lxc stop c1 -- true
$ lxc exec c1 -- true
Error: Instance is not running
$ lxc exec does-not-exist -- true
Error: Instance not found
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
* plugins/connection/lxd: add changelog fragment
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
---------
Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
* Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt.
* Replace 'Copyright:' with 'Copyright'
sed -i 's|Copyright:\(.*\)|Copyright\1|' $(rg -l 'Copyright:')
Co-authored-by: Maxwell G <gotmax@e.email>
* fixes lxd connection plugin issue #4886
remote_addr value was set to literal string 'inventory_hostname' instead
of the value for inventory_hostname variable. solution found in PR
ansible/ansible#77894
* changelog fragment - bugfix - lxd connection plugin
* correct changelog fragment
* Update changelogs/fragments/4886-fix-lxd-inventory-hostname.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* replace _host instance variable with calls to get 'remote_addr' option
suggested by felixfontein
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update lxd connection to use documented vars
* Add a changelog fragment
* Add clarification to changelog description
* Shorten changelog fragment description
* added utf-8 markers to all .py files in plugins/{action,cache,callback}
* added utf-8 markers to all .py files in plugins/connection
* added utf-8 markers to all .py files in plugins/doc_fragments
* callback_type -> type.
* Mark authors as unknown.
* Add author field forgotten in #627.
* Fix author entries.
* Add author field forgotten in #127.
* Fix some types.