Documentation

lxd_profile - Manage LXD profiles

New in version 2.2.

Synopsis

  • Management of LXD profiles

Options

parameter required default choices comments
cert_file
no "{}/.config/lxc/client.crt" .format(os.environ["HOME"])
The client certificate file path.
config
no
The config for the container (e.g. {"limits.memory": "4GB"}). See https://github.com/lxc/lxd/blob/master/doc/rest-api.md#patch-3
If the profile already exists and its "config" value in metadata obtained from GET /1.0/profiles/<name> https://github.com/lxc/lxd/blob/master/doc/rest-api.md#get-19 are different, they this module tries to apply the configurations.
Not all config values are supported to apply the existing profile. Maybe you need to delete and recreate a profile.
devices
no
The devices for the profile (e.g. {"rootfs": {"path": "/dev/kvm", "type": "unix-char"}). See https://github.com/lxc/lxd/blob/master/doc/rest-api.md#patch-3
key_file
no "{}/.config/lxc/client.key" .format(os.environ["HOME"])
The client certificate key file path.
name
yes
Name of a profile.
new_name
no
A new name of a profile.
If this parameter is specified a profile will be renamed to this name. See https://github.com/lxc/lxd/blob/master/doc/rest-api.md#post-11
state
no present
  • present
  • absent
Define the state of a profile.
trust_password
no
The client trusted password.
You need to set this password on the LXD server before running this module using the following command. lxc config set core.trust_password <some random password> See https://www.stgraber.org/2016/04/18/lxd-api-direct-interaction/
If trust_password is set, this module send a request for authentication before sending any requests.
url
no unix:/var/lib/lxd/unix.socket
The unix domain socket path or the https URL for the LXD server.

Examples

# An example for creating a profile
- hosts: localhost
  connection: local
  tasks:
    - name: Create a profile
      lxd_profile:
        name: macvlan
        state: present
        config: {}
        description: my macvlan profile
        devices:
          eth0:
            nictype: macvlan
            parent: br0
            type: nic

# An example for creating a profile via http connection
- hosts: localhost
  connection: local
  tasks:
  - name: create macvlan profile
    lxd_profile:
      url: https://127.0.0.1:8443
      # These cert_file and key_file values are equal to the default values.
      #cert_file: "{{ lookup('env', 'HOME') }}/.config/lxc/client.crt"
      #key_file: "{{ lookup('env', 'HOME') }}/.config/lxc/client.key"
      trust_password: mypassword
      name: macvlan
      state: present
      config: {}
      description: my macvlan profile
      devices:
        eth0:
          nictype: macvlan
          parent: br0
          type: nic

# An example for deleting a profile
- hosts: localhost
  connection: local
  tasks:
    - name: Delete a profile
      lxd_profile:
        name: macvlan
        state: absent

# An example for renaming a profile
- hosts: localhost
  connection: local
  tasks:
    - name: Rename a profile
      lxd_profile:
        name: macvlan
        new_name: macvlan2
        state: present

Return Values

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

name description returned type sample
old_state The old state of the profile success string absent
logs The logs of requests and responses. when ansible-playbook is invoked with -vvvv. list (too long to be placed here)
actions List of actions performed for the profile. success list ["create"]


Notes

Note

  • Profiles must have a unique name. If you attempt to create a profile with a name that already existed in the users namespace the module will simply return as “unchanged”.

Status

This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.

Support

This module is community maintained without core committer oversight.

For more information on what this means please read Module Support

For help in developing on modules, should you be so inclined, please read Community Information & Contributing, Helping Testing PRs and Developing Modules.