This Python plugin provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.
- Java 8+ (for building the plugin)
- Gradle 8.10.2+ (included via Gradle wrapper)
-
Build the plugin:
./gradlew clean build
-
Install the plugin: Copy the
build/libs/rundeck-azure-storage-plugin-X.X.X.zipto$RDECK_BASE/libextfolder -
Restart Rundeck to load the new plugin
The plugin is written in Python and requires the following modules to be installed on the Rundeck server or remote nodes (depending on where the Rundeck jobs will be executed):
# Install required Python packages (recommended: use requirements.txt)
pip install -r requirements.txt
# Or install individually:
# pip install python-magic azure-storage-blob aiohttpSecurity Note: It's strongly recommended to use a virtual environment for Python dependencies to avoid conflicts and security issues:
# Using virtual environment (recommended)
python -m venv rundeck-azure-env
source rundeck-azure-env/bin/activate # On Windows: rundeck-azure-env\Scripts\activate
pip install -r requirements.txt-
Azure / Storage / Remote Copy: Copies a remote file or Azure Storage Object to another location or in Azure Storage. To reference an Azure container use the following URI pattern:
azure://pathorazure://path/file.ext -
Azure / Storage / Remote Sync: Synchronizes directories with Azure Storage. To reference an Azure container use the following URI pattern:
azure://pathorazure://path/file.ext
- Azure / Storage / List Blobs: List Azure Storage blobs and common prefixes under a prefix or all Azure Storage
- Azure / Storage / Remove Blobs: Deletes an Azure Storage blob from a container
The plugin requires Azure Storage account credentials. These can be provided through:
-
Environment variables (recommended for security):
AZURE_STORAGE_ACCOUNT_NAMEAZURE_STORAGE_ACCOUNT_KEYorAZURE_STORAGE_CONNECTION_STRING
-
Rundeck job configuration (less secure, credentials visible in job definitions)
- Credentials: Never store Azure Storage credentials in plain text. Use Rundeck's Key Storage facility or environment variables
- Network: Use HTTPS protocol (default) for all Azure Storage communications
- Access Control: Limit Azure Storage account permissions to only what's necessary for your use case
- Audit: Enable Azure Storage logging to track access and operations
# Clone the repository
git clone https://github.com/rundeck-plugins/rundeck-azure-storage-plugin.git
cd rundeck-azure-storage-plugin
# Build the plugin
./gradlew clean build
# The plugin zip will be created in build/libs/./gradlew testIf you get authentication errors on remote nodes, add the following entry to /etc/ssh/sshd_config to pass RD_* variables from the Rundeck server to remote nodes:
AcceptEnv RD_*
Then restart the SSH daemon:
sudo systemctl restart sshdIf you encounter Python module import errors:
- Verify Python modules are installed in the correct environment
- Check Python path and virtual environment activation
- Ensure compatible versions of azure-storage-blob and dependencies
If the build fails:
- Ensure Java 8+ is installed:
java -version - Try cleaning and rebuilding:
./gradlew clean build - Check for proper file permissions on gradlew:
chmod +x gradlew
This project is licensed under the Apache License 2.0 - see the plugin.yaml file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Please ensure your code follows security best practices and passes all tests before submitting.