Commit Graph

78 Commits (bb2ba14b8fde1639f1053fc0e0a52349b22deee3)

Author SHA1 Message Date
Peter Siegel bb2ba14b8f
fix: use os module to get uid and gid 2025-02-10 11:13:04 +01:00
Peter Siegel 06fb16c658
fix: format 2025-02-02 13:48:18 +01:00
Peter Siegel bb3262079b
fix: add comment about defaults 2025-02-02 13:44:21 +01:00
Peter Siegel e2d3fe7a1c
fix: display msg for PUT 2025-02-02 13:35:36 +01:00
Peter Siegel ab11857bc0
fix: format 2025-02-02 13:34:35 +01:00
Peter Siegel b2583960c0
fix: print put command 2025-02-02 11:08:39 +01:00
Peter Siegel 894c28fa28
fix: use ints for uid and gid 2025-02-02 10:39:24 +01:00
Peter Siegel bdb9ab354f
fix: ensure default values are of type str 2025-02-02 02:34:42 +01:00
Peter Siegel 478b25c636
fix: better logging 2025-02-02 02:30:09 +01:00
Peter Siegel cce1c3c099
feat: complete placeholder _get_remote_uid_gid function 2025-02-02 02:23:54 +01:00
Peter Siegel b27fdf07c7
feat: add get_remote_uid_gid placeholder function 2025-02-02 02:11:51 +01:00
Peter Siegel 4eb496c1ea
fix: add put command 2025-02-02 01:55:59 +01:00
Peter Siegel e40b0e2be4
Update plugins/connection/lxd.py
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-01-31 22:45:14 +01:00
Peter Siegel 42a51c9b01
Update plugins/connection/lxd.py
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-01-31 22:44:54 +01:00
Peter Siegel 553f38ac98
Update plugins/connection/lxd.py
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-01-31 22:44:44 +01:00
Peter Siegel fe0add095c
fix: use -c flag with su 2025-01-31 22:21:04 +01:00
Peter Siegel 297f3c0f9a
fix: line length 2025-01-31 20:41:02 +01:00
Peter Siegel 30a6f46570
fix: ensure lxc exec comes first 2025-01-31 20:41:02 +01:00
Peter Siegel 845705665f
fix: use single quotes inside f-string 2025-01-31 20:41:02 +01:00
Peter Siegel daf5eaa20a
fix: remove ansible_ssh_user from remote_user vars 2025-01-31 20:41:02 +01:00
Peter Siegel de8272c1f1
fix: add root as default remote_user 2025-01-31 20:41:02 +01:00
Peter Siegel 4a661375bb
feat: add options for setting remote user and become method 2025-01-31 20:41:02 +01:00
Peter Siegel 28fb13bdff
unset default user 2025-01-31 20:41:02 +01:00
Peter Siegel 4ebd4a6efe
fix: use build_exec_command to execute as nonroot 2025-01-31 20:41:02 +01:00
Peter Siegel bb81a7bb11
fix: show correct info for connection 2025-01-31 20:41:02 +01:00
Peter Siegel 433ed7c030
fix: add support for non-root user 2025-01-31 20:40:59 +01:00
Alexei Znamensky bd864c45ff
connection/inventory: adjust import __future__ for Python3 (#9584)
* connection/inventory: adjust import __future__ for Python3

* add changelog frag

* remove metaclass

* adjust chglog
2025-01-20 19:36:29 +01:00
Nils cee62a4069
Proxmox remote pct connection (#8424)
* First Revision (squashed)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Second Revision (squashed)

* implement data_in

* Removed quot()
There is no need for quoting, exec_command gets the command already quoted with shell from Ansible

* Use shell from self._shell

* Improved error handling

* updated docs

* Use Int for Container ID

* Updated docs to include detailed description for non root usage

* Fix ansible_user var in example

* Fix become method
We need to differentiate between become method used in Proxmox and the one inside the container.

* Implement review findings
- f-Strings
- lower() when input
- yaml indent
- consistent quotes
- use to_text()
- Enhanced examples
- Ansibullbot findings

* remove ssh cache

* Ensure we delete the tempfile

* use octal mode

* Use FileLock().lock_file

* ansibullbot findings

* refactor _connect()

* Update plugins/connection/pct_remote.py

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

* renamed plugin to proxmox_pct_remote

* Use ansible.builtin.ping as example

* added unit tests

* fixed bugs in close()

* catch invalid host key

* test invalid host key

* Added integration test

* cleanup

* setup test via ansible

* Revised notes based on review feedback

* Review findings
Co-authored-by: Felix Fontein <felix@fontein.de>

* gather_facts hint in example

* Update tests/integration/targets/connection_proxmox_pct_remote/aliases

Co-authored-by: Felix Fontein <felix@fontein.de>

* Fix FreeBSD, deactivate macOS

* Test and Fix: Hang on copy with empty content

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2025-01-18 16:27:06 +01:00
Alexei Znamensky 040cd0ca50
normalize docs in cache/connection plugins (#9453)
Normalize doc blocks for plugins
2024-12-29 13:34:33 +01:00
Felix Fontein ec585392e5
Docs: fix its vs. it's (#9442)
* Fix its vs. it's.

* Improvements from review.

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Improve formulations.

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2024-12-29 13:29:58 +01:00
Felix Fontein 2203560867
plugins: replace to_native(), to_text(), str() with str() where possible or leave it away in f-string formatting (#9379)
* Replace to_native(), to_text(), str() with str() where possible or leave it away in f-string formatting.

* Improve formulation.

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* Use more f-strings.

* Remove unicode prefix for strings.

---------

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2024-12-28 22:47:18 +01:00
Alexei Znamensky d539b00d4c
connection plugins: use f-strings (#9322)
* connection plugins: use f-strings

* add changelog frag
2024-12-24 12:00:19 +01:00
Alexei Znamensky da51594f9d
qubes connection plugin: fix display stmt (#9334)
* qubes connection plugin: fix display stmt

* add changelog frag
2024-12-23 12:21:59 +01:00
Felix Fontein ce65eb8736
Type options of connection plugins (#8627)
Type options of connection plugins.
2024-07-21 21:04:53 +02:00
Simon Deziel 13e3161f2a
Refer to LXD containers/VMs as instances (#7873)
* plugins/connection/lxd: rename container to instance

Signed-off-by: Simon Deziel <simon.deziel@canonical.com>

* plugins/inventory/lxd: rename container to instance

It seems that a previous search and replace was done but it
missed those `containe_name` due to missing `r` in `container`.

Signed-off-by: Simon Deziel <simon.deziel@canonical.com>

---------

Signed-off-by: Simon Deziel <simon.deziel@canonical.com>
2024-01-24 13:35:17 +01:00
Travis McCollum 44028060c3
Fix: incus connection plugin treats inventory_hostname incorrectly in remote config (#7875)
* Fixes inventory_hostname treatment as a litteral instead of inventory_hostname variable. Similar problem fixed in LXD: https://github.com/ansible-collections/community.general/pull/4912

* changelog for upsream

* Update changelogs/fragments/7874-incus_connection_treats_inventory_hostname_as_literal_in_remotes.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: travis <travis@cypressMini.local>
Co-authored-by: Felix Fontein <felix@fontein.de>
2024-01-23 07:18:25 +01:00
Stéphane Graber 6d74e0c640
Introduce an Incus connection plugin (#7726)
* plugins/connection/incus: Introduce new plugin

Signed-off-by: Stéphane Graber <stgraber@stgraber.org>

* BOTMETA: Add incus connection plugin

Signed-off-by: Stéphane Graber <stgraber@stgraber.org>

* tests/integration: Add connection_incus test

Signed-off-by: Stéphane Graber <stgraber@stgraber.org>

---------

Signed-off-by: Stéphane Graber <stgraber@stgraber.org>
2023-12-28 08:32:31 +01:00
Tim Small b4a2e9da50
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>
2023-12-03 09:41:04 +01:00
Felix Fontein 2b62826082
Fix more typos (#7439)
* Fix more typos in plugins/.

* Fix typos in tests/unit/.

* Fix typos in tests/integration/.

* Fix more typos.

Co-authored-by: Sebastian Gumprich <rndmh3ro@users.noreply.github.com>

---------

Co-authored-by: Sebastian Gumprich <rndmh3ro@users.noreply.github.com>
2023-10-29 18:04:44 +01:00
Simon Deziel c7150dd818
plugins/connection/lxd: convert FQDN to instance name (#7360)
* 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>
2023-10-25 08:47:27 +02:00
Corubba 3ae19aa28f
Handle remote_addr change in lxc connection plugin (#7373)
* Stopped container error test

* Handle remote_addr change

Detect if the remote_addr option changed, and properly "reconnect" aka
update the internal state of the plugin instance.

* Add changelog fragment

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-18 20:54:24 +02:00
Corubba 1bf5a44a77
Fix lxc plugin options (#7369)
* Fixture for liblxc

Add a fixture to allow testing the lxc connection plugin both with and
without liblxc being present.

Also change the test from unittest to pytest.

* Update liblxc error message

The error is not specific to python2, so remove the version. Also add
a test for it.

* Migrate to options

Because the lxc plugin was only using PlayContext properties, using host
vars like `ansible_lxc_host` didn't work. This is fixed by instead using
the `get_option` method inherited from `AnsiblePlugin`.
The options are not yet available in the `__init__` function, so the
determination of the container name is moved to the `_connect` method,
which is the first time it is actually needed.
The default for the `remote_addr` option is removed, because the string
`inventory_hostname` is not very useful. At all. This seams to have been
spread with copy&paste and a bit of cargo culting. The variable priority
already takes care of setting the value.

* Add changelog fragment

* Fix for Py2.7

`TypeError: super() takes at least 1 argument (0 given)`

* Add plugin type to changelog fragment.

* Restore untemplated default

This partially reverts commit 429d8c8cfb.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-09 09:11:11 +02:00
Сашка724ая bf728aadfb
chroot: add `disable_root_check` option (#7099)
* Initial commit

* Update plugins/connection/chroot.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Add changelog fragment

* Update changelogs/fragments/7099-chroot-disable-root-check-option.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Сашка724ая <git@sashok724.net>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-08-14 19:41:33 +02:00
Corubba eafdf87b1b
lxc: fix remote_addr default to inventory_hostname (#7104)
* lxc: fix remote_addr default to inventory_hostname

* Update changelogs/fragments/7104_fix_lxc_remoteaddr_default.yml

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-08-13 20:55:18 +02:00
Przemysław Sztoch 7496466f9d
Update chroot.py - better documentation (#7010)
* Update chroot.py

Better informations about sudo and env.

* Update plugins/connection/chroot.py

---------

Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
2023-08-12 18:03:56 +02:00
Abhijeet Kasurde 59479b4abd
chroot: added an example (#6824)
* chroot: added an example

Added a simple example of chroot connection plugin

Fixes: #6365

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-08 10:21:13 +02:00
Giacomo Olgeni 9a97bc7c11
Add 'inventory_hostname' to the jail plugin documentation (#6118)
This fixes the following warning on FreeBSD:

  [WARNING]: The "jail" connection plugin has an improperly configured
  remote target value, forcing "inventory_hostname" templated value
  instead of the string
2023-03-03 22:56:24 +01:00
Evan Jarrett 5e5af458fb
chroot plugin fix inventory_hostname var for remote_addr (#5570)
* Add inventory_hostname under remote_addr.vars in chroot connection plugin required by ansible 2.13

* fix changelog fragment
2022-11-17 06:53:46 +01:00
Felix Fontein a54af8909c
Fix linting errors; fix some real bugs (#5111)
* Fix linting errors.

* Fix bugs.

* Another linter error ignored.

* More fixes.

* Ignore sanity errors with older versions.

ci_complete

* Forgot to commit more changes.
2022-08-12 11:07:30 +02:00
Felix Fontein 496bf27b5c
Fix copyright lines (make sure 'Copyright' is there). (#5083) 2022-08-05 22:12:10 +02:00