mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
add group_by_os_family in azure dynamic inventory (#40702)
This commit is contained in:
parent
adc0efe10c
commit
379fb87b44
3 changed files with 19 additions and 2 deletions
|
@ -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
|
||||||
|
|
|
@ -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] = []
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue