No project description provided
Project description
PyIAACSync
Introduction
infrastructure-as-code tools such as Terraform and Palumi gaining popularity and increasingly becoming neceessary to support the principles of Site Reliability Engineering (SRE).
However, there are a couple of disadvantages in existing tools in the market:
- Terraform requires knowledge of golang to be able to sync assets
- Both Terraform and Paulmi can be quite complex for beginners to manage and maintain
PyIAACSync provides a framework which allows software engineering getting into infrastructure-as-code to easily create and sync assets which they have defined in YAML spec files, in a polled manner (non-event driven). The infrastructue can be anything (AWS asset, GCP asset, any SIEM detection rule) that
Software engineers need to create the following:
- A folder (
iaac_sync_folder) that contains the specs/configs for the infrastructure to create - A simple asset python file that contains a class describing the asset with the following
staticfunctions:- validate: to validate whether the spec/config that has been supplied in the
- create: to create the asset via the supplied spec/config
- delete: to delete that has been supplied via the spec/config
- check: to check whether the asset that has been deployed matches the spec/config aka
integrity check. If not, the asset will be re-created
Please see Usage section that describes the example in more detail
Install
via PyPI
python3 -m pip install pyiaacsync
Manually
Install all necessary dependencies as follows:
python3 -m pip install -r requirements.txt
Usage
Structure
We will be using the example example-fileasset described in the examples folder of this repository. Users of this repo can use the files in the examples folder (especially fileasset.py) to build their own assets with pyiaacsync.py.
In this folder, we have the following objects:
exampleconf: a folder which contains 3 spec/config files (1 file is in a subfolder) that describe what kind of file to createfileasset.py: A python file that contains the fileasset which defines how tovalidatethe spec config file,createasset from the spec / config file,deletethe existing asset created from the config file and alsocheckif the the created asset is different from the config fileexample.py: the main script which will invoke the creation of assets using pyiaacsync conf file
Actions
init
The first steps is to execute init which will create a new state file out-teststate.yaml:
python3 example.py -a init
To force re-creation of the state file even if it exists (NOTE: Beware this will delete the existing state file!):
python3 example.py -a init -if
We can also specify an existing state file to use:
python3 example.py -a init -if -f /tmp/out-teststatefile.yaml
validate_configs
To validate the configs in the spec folder for all existing assets using the validate function defined in fileasset.py class:
python3 example.py -a validate_configs
sync
To sync the assets based on the spec/configs folder continuously - this will create the files as per the configs in the folder. Any changes made to the files the next time will be reset.
python3 example.py -a sync
To sync the assets once only:
python3 example.py -a sync_once
delete_assets
To delete all existing assets (in this case, all files) and remove the assets from the state file:
python3 example.py -a delete_assets
TODO
- Add unit testing
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyiaacsync-0.2.tar.gz.
File metadata
- Download URL: pyiaacsync-0.2.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b6df398761114b68385db7a5d2122657f25ed8bfc95780d23af4a3b7511420b
|
|
| MD5 |
68f3ebb6cb5c5567cfe718dfa863a678
|
|
| BLAKE2b-256 |
217926071ff40981f3dc7bf9fe967eb9b2a2f0a466befbc2e8617b475ada7cca
|
File details
Details for the file pyiaacsync-0.2-py3-none-any.whl.
File metadata
- Download URL: pyiaacsync-0.2-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6c845d3dca57efd897c0ee2c35a385e4b579b88b80099bab1d2d722afb978ea
|
|
| MD5 |
94174d032d60cf06543d2439e5c9263d
|
|
| BLAKE2b-256 |
c31dd7ea598b5efeb08c6f9eaf05a0663d08aec498a798a617dc626a8ecaadd6
|