Skip to main content

No project description provided

Project description

Made with pop, a Python implementation of Plugin Oriented Programming Made with idem, a Python implementation of Plugin Oriented Programming Documentation is published with Sphinx on docs.idemproject.io Made with Python

Idem plugin to manage Azure cloud resources

About

idem-azure helps manage Azure with idem.

What is POP?

This project is built with pop, a Python-based implementation of Plugin Oriented Programming (POP). POP seeks to bring together concepts and wisdom from the history of computing in new ways to solve modern computing problems.

For more information:

What is Idem?

This project is built with idem, an idempotent, imperatively executed, declarative programming language written in Python. This project extends idem!

For more information:

Getting Started

Prerequisites

  • Python 3.8+

  • git (if installing from source, or contributing to the project)

Installation

If wanting to use idem-azure, you can do so by either installing from PyPI or from source.

Install from PyPI

pip install idem-azure

Install from source

# clone repo
git clone git@<your-project-path>/idem-azure.git
cd idem-azure

# Setup venv
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Usage

Credentials Setup

After installation, the Azure Idem execution and state modules will be accessible to the pop hub. In order to use them, we need to set up our credentials.

Create a new file called credentials.yaml and populate it with credentials. The default profile will be picked up automatically by idem.

There are multiple authentication backends for idem-azure which each have their own unique set of parameters. The following examples show the parameters that can be used to define credential profiles.

credentials.yaml:

azure:
   default:
      client_id: "12345678-1234-1234-1234-aaabc1234aaa"
      secret: "76543210-4321-4321-4321-bbbb3333aaaa"
      subscription_id: "ZzxxxXXXX11xx-aaaaabbbb-k3xxxxxx"
      tenant: "bbbbbca-3333-4444-aaaa-cddddddd6666"

Next step is to encrypt the credentials file, and add the encryption key and encrypted file path to the ENVIRONMENT.

Encrypt the credential file:

Idem encrypt credentials.yaml

This will generate a credentials.yaml.fernet file and a command line output token:

-AXFSEFSSEjsfdG_lb333kVhCVSCDyOFH4eABCDEFNwI=

Add these to your environment:

export ACCT_KEY="-AXFSEFSSEjsfdG_lb333kVhCVSCDyOFH4eABCDEFNwI="
export ACCT_FILE=$PWD/credentials.yaml.fernet

You are ready to use idem-azure!!!

STATES

Idem states are used to make sure resources are in a desired state. The desired state of a resource can be specified in sls file. In Idem-azure, three states are supported: present, absent, describe

present state

present state makes sure a resource exists in a desired state. If a resource does not exist, running present will create the resource on the provider. If a resource exists, running present will update the resource on the provider. (Only the values that the Azure REST api supports can be updated.)

absent state

absent state makes sure a resource does not exist. If a resource exits, running absent will delete the resource. If a resource does not exist, running absent is a no-operation.

describe state

describe state lists all the current resources of the same resource type under the subscription id specified in the credential profile.

States can be accessed by their relative location in idem-azure/idem_azure/states. For example, in the state sls yaml file below, Azure resource group state can be created with the present function.

my_resource_group_state.sls:

my-azure-resource-group:
  azure.resource_management.resource_groups.present:
  - resource_group_name: my-azure-resource-group
  - location: eastus

The state sls file can be executed with:

idem state $PWD/my_resource_group_state.sls

Example of creating an Azure virtual network:

my-virtual-network:
  azure.network.virtual_networks.present:
  - resource_group_name: my-azure-resource-group
  - virtual_network_name: my-virtual-network
  - location: eastus
  - address_space:
        - 10.0.0.0/16

The resource parameters in an sls yaml file follow the exact structure as what’s in the Azure REST api doc . URI Parameters should be specified in snake case with “- “ in front. All parameters of the api request body should be specified in exactly the same way as what’s in the Azure REST api.

Current Supported Resources states

authorization

role_definitions, role_assignments

resource_management

resource_groups

policy

policy_definitions, policy_assignments

management_groups

management_groups

subscription

subscription

network

firewall, firewall_policies, network_interfaces, network_security_groups, public_ip_addresses, route_tables, routes, security_rules, subnets, virtual_networks

compute

virtual_machines, log_analytics_workspace

storage_resource_provider

storage_accounts

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

idem-azure-2.2.0.tar.gz (134.5 kB view details)

Uploaded Source

Built Distribution

idem_azure-2.2.0-py3-none-any.whl (228.0 kB view details)

Uploaded Python 3

File details

Details for the file idem-azure-2.2.0.tar.gz.

File metadata

  • Download URL: idem-azure-2.2.0.tar.gz
  • Upload date:
  • Size: 134.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/41.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.0.4 tqdm/4.66.1 importlib-metadata/6.8.0 keyring/24.2.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.9.18

File hashes

Hashes for idem-azure-2.2.0.tar.gz
Algorithm Hash digest
SHA256 5f17048b8fe7ec3f76ad11476b3d7ef17d8b4f545271b791c0cb596905595b7f
MD5 5d409dacfe78ffc33c5fda70d74e2e8b
BLAKE2b-256 950ed7f99ffff0391f703ff935ff4120e19d3dec893cfa6a642033ef2d7a3922

See more details on using hashes here.

File details

Details for the file idem_azure-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: idem_azure-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 228.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/41.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.0.4 tqdm/4.66.1 importlib-metadata/6.8.0 keyring/24.2.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.9.18

File hashes

Hashes for idem_azure-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e2a247609db1e6330a6aa976ebdabd938baa8c8a8ed9ead9db280b92659d1bbf
MD5 1a0e138137df2f39bd0ccecf09a5ba0b
BLAKE2b-256 11700295aea4f16739cee0a099bf754468b18135c63bb9564451678e4bb825d6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page