community.general.appimage module – Manage AppImage packages

Note

This module is part of the community.general collection (version 14.0.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.general.

To use it in a playbook, specify: community.general.appimage.

New in community.general 13.4.0

Synopsis

  • Install, update, and remove applications distributed as AppImage files.

  • The module installs AppImage files into a user-controlled directory.

  • Sources can be local AppImage files, direct AppImage URLs, GitHub release pages containing AppImage assets, or https://appimage.github.io catalog entries.

Parameters

Parameter

Comments

asset_name

string

Glob pattern used to select the AppImage asset from a GitHub release.

If the pattern matches multiple assets, the module fails and asks for a more specific pattern.

Default: "*.AppImage"

attributes

aliases: attr

string

The attributes the resulting filesystem object should have.

To get supported flags look at the man page for chattr on the target system.

This string should contain the attributes in the same order as the one displayed by lsattr.

The = operator is assumed as default, otherwise + or - operators need to be included in the string.

catalog_url

string

URL of the https://appimage.github.io-compatible JSON feed used when url is omitted.

Default: "https://appimage.github.io/feed.json"

github_token

string

GitHub token used when querying GitHub releases.

This can be useful for private repositories or higher API rate limits.

group

string

Name of the group that should own the filesystem object, as would be fed to chown.

When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership.

Specifying a numeric group name (for example, “1000”) will be assumed to be a group ID (GID) and not a group name. To prevent confusion, avoid using purely numeric group names.

install_dir

path

Directory where the AppImage executable is installed.

Default: "~/.local/bin"

mode

any

The permissions the resulting filesystem object should have.

For those used to /usr/bin/chmod remember that modes are actually octal numbers. You must give Ansible enough information to parse them correctly. For consistent results, quote octal numbers (for example, '644' or '1777') so Ansible receives a string and can do its own conversion from string into number. Adding a leading zero (for example, 0755) works sometimes, but can fail in loops and some other circumstances.

Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results.

As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r).

If mode is not specified and the destination filesystem object does not exist, the default umask on the system will be used when setting the mode for the newly created filesystem object.

If mode is not specified and the destination filesystem object does exist, the mode of the existing filesystem object will be used.

Specifying mode is the best way to ensure filesystem objects are created with the correct permissions. See CVE-2020-1736 for further details.

name

string / required

Name of the managed AppImage.

This is used as the installed executable filename.

When url is omitted, this is also used to look up the AppImage in the https://appimage.github.io catalog.

owner

string

Name of the user that should own the filesystem object, as would be fed to chown.

When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership.

Specifying a numeric username (for example, “1000”) will be assumed to be a user ID (UID) and not a username. To prevent confusion, avoid using purely numeric usernames.

selevel

string

The level part of the SELinux filesystem object context.

This is the MLS/MCS attribute, sometimes known as the range.

When set to _default, it will use the level portion of the policy if available.

serole

string

The role part of the SELinux filesystem object context.

When set to _default, it will use the role portion of the policy if available.

setype

string

The type part of the SELinux filesystem object context.

When set to _default, it will use the type portion of the policy if available.

seuser

string

The user part of the SELinux filesystem object context.

By default it uses the system policy, where applicable.

When set to _default, it will use the user portion of the policy if available.

state

string

Desired state of the AppImage.

When state=present, the AppImage is installed if missing.

When state=latest, sources that support multiple versions, such as GitHub releases pages, are resolved to the latest release and updated when the recorded version differs.

state=latest cannot be combined with version, and is not supported for fixed sources such as direct AppImage URLs or local files.

Choices:

  • "absent"

  • "present" ← (default)

  • "latest"

timeout

integer

Timeout in seconds for HTTP requests.

Default: 30

unsafe_writes

boolean

Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object.

By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner.

This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes).

IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption.

Choices:

  • false ← (default)

  • true

url

string

Source used to obtain the AppImage.

This can point directly to an AppImage URL, a local AppImage file path, a file:// AppImage URL, or to a GitHub releases page such as https://github.com/OWNER/REPO/releases or https://github.com/OWNER/REPO/releases/tag/TAG.

When omitted with state=present or state=latest, the module looks up name in the https://appimage.github.io catalog.

validate_certs

boolean

If false, TLS certificates are not validated.

Choices:

  • false

  • true ← (default)

version

string

GitHub release tag to install when url points to a GitHub releases page.

This can only be used with sources that provide release versions, such as GitHub releases pages.

By default, GitHub release pages use the latest release.

Attributes

Attribute

Support

Description

check_mode

Support: full

Can run in check_mode and return changed status prediction without modifying target.

diff_mode

Support: none

Returns details on what has changed (or possibly needs changing in check_mode), when in diff mode.

Examples

- name: Install an AppImage from a direct URL
  community.general.appimage:
    name: example
    url: https://example.com/downloads/example-x86_64.AppImage

- name: Install an AppImage from a local file
  community.general.appimage:
    name: example
    url: /tmp/example-x86_64.AppImage

- name: Install an AppImage from the appimage.github.io catalog
  community.general.appimage:
    name: appimagetool

- name: Install the latest x86_64 AppImage from GitHub releases
  community.general.appimage:
    name: example
    url: https://github.com/example/example/releases
    state: latest
    asset_name: "*x86_64.AppImage"

- name: Install a specific GitHub release tag
  community.general.appimage:
    name: example
    url: https://github.com/example/example/releases
    version: v1.2.3

- name: Remove an AppImage
  community.general.appimage:
    name: example
    state: absent

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

catalog_name

string

AppImage catalog entry name used to resolve the source.

Returned: when installing from the appimage.github.io catalog

Sample: "appimagetool"

catalog_url

string

AppImage catalog page used to resolve the source.

Returned: when installing from the appimage.github.io catalog

Sample: "https://appimage.github.io/appimagetool/"

path

string

Path to the managed AppImage executable.

Returned: always

Sample: "/home/user/.local/bin/example"

source_path

string

Local AppImage source path.

Returned: when installing from a local path or file:// source

Sample: "/tmp/example-x86_64.AppImage"

source_url

string

Resolved AppImage download URL.

Returned: when state is present or latest

Sample: "https://github.com/example/example/releases/download/v1.2.3/example-x86_64.AppImage"

version

string

GitHub release tag that was installed.

Returned: when installing from a GitHub release

Sample: "v1.2.3"

Authors

  • Travis Beale (@travisbeale)