Package: idem-azure-auto
NoteIdem plugin to manage Azure cloud resourcesAboutAzure Cloud Provider Idem pluginWhat is POP?This project is built withpop, a Python-based
implementation ofPlugin 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:Intro to Plugin Oriented Programming (POP)pop-awesomepop-createGetting StartedPrerequisitesPython 3.7+git(if installing from source, or contributing to the project)InstallationNoteIf wanting to contribute to the project, and setup your local development
environment, see theCONTRIBUTING.rstdocument in the source repository
for this project.If wanting to useidem-azure-auto, you can do so by either
installing from PyPI or from source.Install from PyPIpipinstallpop-releaseInstall from source# clone repogitclonegit@<your-project-path>/idem-azure-auto.gitcdidem-azure-auto# Setup venvpython3-mvenv.venvsource.venv/bin/activatepipinstall-e.UsageCredentials SetupAfter installation, the Azure Idem execution and state modules will be accessible to the pophub.
In order to use them, we need to set up our credentials.Create a new file calledcredentials.yamland populate it with credentials.
Thedefaultprofile will be picked up automatically byidem.There are multiple authentication backends foridem-azure-autowhich 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:Idemencryptcredentials.yamlThis will generate a credentials.yaml.fernet file and a command line output token:-AXFSEFSSEjsfdG_lb333kVhCVSCDyOFH4eABCDEFNwI=Add these to your environment:exportACCT_KEY="-AXFSEFSSEjsfdG_lb333kVhCVSCDyOFH4eABCDEFNwI="exportACCT_FILE=$PWD/credentials.yaml.fernetYou are ready to use idem-azure-auto!!!STATESIdem 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-auto, three states are supported:present,absent,describepresent statepresentstate makes sure a resource exists in a desired state. If a resource does
not exist, runningpresentwill create the resource on the provider. If a resource
exists, runningpresentwill update the resource on the provider. (Only the values
that the Azure REST api supports can be updated.)absent stateabsentstate makes sure a resource does not exist. If a resource exits, runningabsentwill delete the resource. If a resource does not exist, runningabsentis a no-operation.describe statedescribestate 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 inidem-azure-auto/idem_azure_auto/states.
For example, in the state sls yaml file below, Azure resource group state can be created with thepresentfunction.my_resource_group_state.sls:my-azure-resource-group:azure.resource_management.resource_groups.present:-resource_group_name:my-azure-resource-group-location:eastusThe state sls file can be executed with:idemstate$PWD/my_resource_group_state.slsExample 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/16The resource parameters in an sls yaml file follow the exact structure as
what’s in theAzure 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 statesauthorizationrole_assignmentsresource_managementresource_groupspolicypolicy_definitions, policy_assignmentsmanagement_groupsmanagement_groupssubscriptionsubscriptionvirtual_networksvirtual_networks, subnets, network_interfacescomputevirtual_machines