Facts and Operations

Facts

Facts return information about the target system.

Example:

The facts.apk.get_packages() returns a formatted list of installed apk packages.

reemote -i=inventory.py -s facts/apk/get_packages.py -c Get_packages

Commands

Commands are executed on the target system.

  • guard parameter indicates whether the command should be executed.

Example:

The commands.apk.packages() command installs apk packages.

reemote -i=inventory.py -s operations/apk/install.py -c Install -k ['vim']

Operations

Operations are declarative and idempotent. They describe the desired state of the target system.

Example:

The operations.apk.packages() operation either installs or removes apk packages to a achieve the desired state.

reemote -i=inventory.py -s operations/apk/packages.py -c Packages -k ['vim'],present=True

Deployments

A deployment is a stand alone Python program with an inventory parameter

Example:

The deployments.files.write_text_to_file deployment demonstrates writing a file using scp.

python3 -i=inventory.py deployments/files/write_text_to_file.py
import asyncio
from reemote.deployment import main

class Write_text_to_file:
    def execute(self):
        from reemote.operations.sftp.write_file import Write_file
        yield Write_file(path='hello.txt',text='Hello World!')

if __name__ == "__main__":
    asyncio.run(main(Write_text_to_file))

The deployment can also be called from the command line.

reemote -i ~/reemote/inventory-proxmox-alpine.py \
-s ~/reemote/reemote/deployments/files/write_text_to_file.py \
-c Write_text_to_file