add group_by_os_family in azure dynamic inventory (#40702)

This commit is contained in:
Etienne Deneuve 2018-08-09 11:00:17 +02:00 committed by Yunge Zhu
parent adc0efe10c
commit 379fb87b44
3 changed files with 19 additions and 2 deletions

View file

@ -19,4 +19,5 @@ include_powerstate=yes
group_by_resource_group=yes group_by_resource_group=yes
group_by_location=yes group_by_location=yes
group_by_security_group=yes group_by_security_group=yes
group_by_os_family=yes
group_by_tag=yes group_by_tag=yes

View file

@ -261,6 +261,7 @@ AZURE_CONFIG_SETTINGS = dict(
group_by_location='AZURE_GROUP_BY_LOCATION', group_by_location='AZURE_GROUP_BY_LOCATION',
group_by_security_group='AZURE_GROUP_BY_SECURITY_GROUP', group_by_security_group='AZURE_GROUP_BY_SECURITY_GROUP',
group_by_tag='AZURE_GROUP_BY_TAG', group_by_tag='AZURE_GROUP_BY_TAG',
group_by_os_family='AZURE_GROUP_BY_OS_FAMILY',
use_private_ip='AZURE_USE_PRIVATE_IP' use_private_ip='AZURE_USE_PRIVATE_IP'
) )
@ -572,6 +573,7 @@ class AzureInventory(object):
self.replace_dash_in_groups = False self.replace_dash_in_groups = False
self.group_by_resource_group = True self.group_by_resource_group = True
self.group_by_location = True self.group_by_location = True
self.group_by_os_family = True
self.group_by_security_group = True self.group_by_security_group = True
self.group_by_tag = True self.group_by_tag = True
self.include_powerstate = True self.include_powerstate = True
@ -706,7 +708,7 @@ class AzureInventory(object):
host_vars['os_disk'] = dict( host_vars['os_disk'] = dict(
name=machine.storage_profile.os_disk.name, name=machine.storage_profile.os_disk.name,
operating_system_type=machine.storage_profile.os_disk.os_type.value operating_system_type=machine.storage_profile.os_disk.os_type.value.lower()
) )
if self.include_powerstate: if self.include_powerstate:
@ -811,10 +813,16 @@ class AzureInventory(object):
host_name = self._to_safe(vars['name']) host_name = self._to_safe(vars['name'])
resource_group = self._to_safe(vars['resource_group']) resource_group = self._to_safe(vars['resource_group'])
operating_system_type = self._to_safe(vars['os_disk']['operating_system_type'].lower())
security_group = None security_group = None
if vars.get('security_group'): if vars.get('security_group'):
security_group = self._to_safe(vars['security_group']) security_group = self._to_safe(vars['security_group'])
if self.group_by_os_family:
if not self._inventory.get(operating_system_type):
self._inventory[operating_system_type] = []
self._inventory[operating_system_type].append(host_name)
if self.group_by_resource_group: if self.group_by_resource_group:
if not self._inventory.get(resource_group): if not self._inventory.get(resource_group):
self._inventory[resource_group] = [] self._inventory[resource_group] = []

View file

@ -328,6 +328,7 @@ By default hosts are grouped by:
* security group name * security group name
* tag key * tag key
* tag key_value * tag key_value
* os_disk operating_system_type (Windows/Linux)
You can control host groupings and host selection by either defining environment variables or creating an You can control host groupings and host selection by either defining environment variables or creating an
azure_rm.ini file in your current working directory. azure_rm.ini file in your current working directory.
@ -344,6 +345,7 @@ Control grouping using the following variables defined in the environment:
* AZURE_GROUP_BY_LOCATION=yes * AZURE_GROUP_BY_LOCATION=yes
* AZURE_GROUP_BY_SECURITY_GROUP=yes * AZURE_GROUP_BY_SECURITY_GROUP=yes
* AZURE_GROUP_BY_TAG=yes * AZURE_GROUP_BY_TAG=yes
* AZURE_GROUP_BY_OS_FAMILY=yes
Select hosts within specific resource groups by assigning a comma separated list to: Select hosts within specific resource groups by assigning a comma separated list to:
@ -390,7 +392,7 @@ file will contain the following:
group_by_location=yes group_by_location=yes
group_by_security_group=yes group_by_security_group=yes
group_by_tag=yes group_by_tag=yes
group_by_os_family=yes
Examples Examples
........ ........
@ -402,6 +404,12 @@ Here are some examples using the inventory script:
# Execute /bin/uname on all instances in the Testing resource group # Execute /bin/uname on all instances in the Testing resource group
$ ansible -i azure_rm.py Testing -m shell -a "/bin/uname -a" $ ansible -i azure_rm.py Testing -m shell -a "/bin/uname -a"
# Execute win_ping on all Windows instances
$ ansible -i azure_rm.py windows -m win_ping
# Execute win_ping on all Windows instances
$ ansible -i azure_rm.py winux -m ping
# Use the inventory script to print instance specific information # Use the inventory script to print instance specific information
$ ./ansible/contrib/inventory/azure_rm.py --host my_instance_host_name --resource-groups=Testing --pretty $ ./ansible/contrib/inventory/azure_rm.py --host my_instance_host_name --resource-groups=Testing --pretty