summaryrefslogtreecommitdiffstats
path: root/docs/docsite/rst/userguide/inventory_plugins_templates.rst
blob: 3fee4cd2529ed9a1f392f422af6a7f7f85c01d84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
.. _ir_inv_plugin_templates_reference:

Supported Inventory Plugin Templates
==============================================

.. index::
    pair: templates;inventory plugins

Upon upgrades, existing configurations will be migrated to the new format that will produce a backwards compatible inventory output. Use the templates below to help aid in migrating your inventories to the new style inventory plugin output.

.. contents::
    :local:


Amazon Web Services EC2
------------------------

.. index:: 
   pair: inventories; Amazon Web Services
   pair: inventories; aws
   pair: inventory plugins; aws

::

	compose:
 	  ansible_host: public_ip_address
 	  ec2_account_id: owner_id
 	  ec2_ami_launch_index: ami_launch_index | string
 	  ec2_architecture: architecture
 	  ec2_block_devices: dict(block_device_mappings | map(attribute='device_name') | list | zip(block_device_mappings | map(attribute='ebs.volume_id') | list))
 	  ec2_client_token: client_token
 	  ec2_dns_name: public_dns_name
 	  ec2_ebs_optimized: ebs_optimized
 	  ec2_eventsSet: events | default("")
 	  ec2_group_name: placement.group_name
 	  ec2_hypervisor: hypervisor
 	  ec2_id: instance_id
 	  ec2_image_id: image_id
 	  ec2_instance_profile: iam_instance_profile | default("")
 	  ec2_instance_type: instance_type
 	  ec2_ip_address: public_ip_address
 	  ec2_kernel: kernel_id | default("")
 	  ec2_key_name: key_name
 	  ec2_launch_time: launch_time | regex_replace(" ", "T") | regex_replace("(\+)(\d\d):(\d)(\d)$", ".\g<2>\g<3>Z")
 	  ec2_monitored: monitoring.state in ['enabled', 'pending']
 	  ec2_monitoring_state: monitoring.state
 	  ec2_persistent: persistent | default(false)
 	  ec2_placement: placement.availability_zone
 	  ec2_platform: platform | default("")
 	  ec2_private_dns_name: private_dns_name
 	  ec2_private_ip_address: private_ip_address
 	  ec2_public_dns_name: public_dns_name
 	  ec2_ramdisk: ramdisk_id | default("")
 	  ec2_reason: state_transition_reason
 	  ec2_region: placement.region
 	  ec2_requester_id: requester_id | default("")
 	  ec2_root_device_name: root_device_name
 	  ec2_root_device_type: root_device_type
 	  ec2_security_group_ids: security_groups | map(attribute='group_id') | list |  join(',')
 	  ec2_security_group_names: security_groups | map(attribute='group_name') | list |  join(',')
 	  ec2_sourceDestCheck: source_dest_check | default(false) | lower | string
 	  ec2_spot_instance_request_id: spot_instance_request_id | default("")
 	  ec2_state: state.name
 	  ec2_state_code: state.code
 	  ec2_state_reason: state_reason.message if state_reason is defined else ""
 	  ec2_subnet_id: subnet_id | default("")
 	  ec2_tag_Name: tags.Name
 	  ec2_virtualization_type: virtualization_type
 	  ec2_vpc_id: vpc_id | default("")
	filters:
	  instance-state-name:
 	  - running
 	groups:
 	  ec2: true
	hostnames:
 	  - network-interface.addresses.association.public-ip
 	  - dns-name
 	  - private-dns-name
 	keyed_groups:
 	  - key: image_id | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: images
 	    prefix: ''
 	    separator: ''
 	  - key: placement.availability_zone
 	    parent_group: zones
 	    prefix: ''
 	    separator: ''
 	  - key: ec2_account_id | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: accounts
 	    prefix: ''
 	    separator: ''
 	  - key: ec2_state | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: instance_states
 	    prefix: instance_state
 	  - key: platform | default("undefined") | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: platforms
 	    prefix: platform
 	  - key: instance_type | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: types
 	    prefix: type
 	  - key: key_name | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: keys
 	    prefix: key
 	  - key: placement.region
 	    parent_group: regions
 	    prefix: ''
 	    separator: ''
 	  - key: security_groups | map(attribute="group_name") | map("regex_replace", "[^A-Za-z0-9\_]", "_") | list
 	    parent_group: security_groups
 	    prefix: security_group
 	  - key: dict(tags.keys() | map("regex_replace", "[^A-Za-z0-9\_]", "_") | list | zip(tags.values()
 	      | map("regex_replace", "[^A-Za-z0-9\_]", "_") | list))
 	    parent_group: tags
 	    prefix: tag
 	  - key: tags.keys() | map("regex_replace", "[^A-Za-z0-9\_]", "_") | list
 	    parent_group: tags
 	    prefix: tag
 	  - key: vpc_id | regex_replace("[^A-Za-z0-9\_]", "_")
 	    parent_group: vpcs
 	    prefix: vpc_id
 	  - key: placement.availability_zone
 	    parent_group: '{{ placement.region }}'
 	    prefix: ''
 	    separator: ''
 	plugin: amazon.aws.aws_ec2
 	use_contrib_script_compatible_sanitization: true


Google Compute Engine
----------------------

.. index:: 
   pair: inventories; Google Compute Engine
   pair: inventories; gce
   pair: inventory plugins; gce

:: 

	auth_kind: serviceaccount
	compose:
	  ansible_ssh_host: networkInterfaces[0].accessConfigs[0].natIP | default(networkInterfaces[0].networkIP)
 	  gce_description: description if description else None
 	  gce_id: id
 	  gce_image: image
 	  gce_machine_type: machineType
 	  gce_metadata: metadata.get("items", []) | items2dict(key_name="key", value_name="value")
 	  gce_name: name
 	  gce_network: networkInterfaces[0].network.name
 	  gce_private_ip: networkInterfaces[0].networkIP
 	  gce_public_ip: networkInterfaces[0].accessConfigs[0].natIP | default(None)
 	  gce_status: status
 	  gce_subnetwork: networkInterfaces[0].subnetwork.name
 	  gce_tags: tags.get("items", [])
 	  gce_zone: zone
	hostnames:
	- name
	- public_ip
	- private_ip
	keyed_groups:
	- key: gce_subnetwork
	  prefix: network
	- key: gce_private_ip
	  prefix: ''
	  separator: ''
	- key: gce_public_ip
	  prefix: ''
	  separator: ''
	- key: machineType
	  prefix: ''
	  separator: ''
	- key: zone
	  prefix: ''
	  separator: ''
	- key: gce_tags
	  prefix: tag
	- key: status | lower
	  prefix: status
	- key: image
	  prefix: ''
	  separator: ''
	plugin: google.cloud.gcp_compute
	retrieve_image_info: true
	use_contrib_script_compatible_sanitization: true


Microsoft Azure Resource Manager
---------------------------------

.. index:: 
   pair: inventories; Microsoft Azure Resource Manager
   pair: inventories; azure
   pair: inventory plugins; azure

::

	conditional_groups:
  	  azure: true
	default_host_filters: []
	fail_on_template_errors: false
	hostvar_expressions:
	  computer_name: name
	  private_ip: private_ipv4_addresses[0] if private_ipv4_addresses else None
	  provisioning_state: provisioning_state | title
	  public_ip: public_ipv4_addresses[0] if public_ipv4_addresses else None
	  public_ip_id: public_ip_id if public_ip_id is defined else None
	  public_ip_name: public_ip_name if public_ip_name is defined else None
	  tags: tags if tags else None
	  type: resource_type
	keyed_groups:
	- key: location
	  prefix: ''
	  separator: ''
	- key: tags.keys() | list if tags else []
	  prefix: ''
	  separator: ''
	- key: security_group
	  prefix: ''
	  separator: ''
	- key: resource_group
	  prefix: ''
	  separator: ''
	- key: os_disk.operating_system_type
	  prefix: ''
	  separator: ''
	- key: dict(tags.keys() | map("regex_replace", "^(.*)$", "\1_") | list | zip(tags.values() | list)) if tags else []
	  prefix: ''
	  separator: ''
	plain_host_names: true
	plugin: azure.azcollection.azure_rm
	use_contrib_script_compatible_sanitization: true

VMware vCenter
---------------

.. index:: 
   pair: inventories; VMware vCenter
   pair: inventories; vmware
   pair: inventory plugins; vmware

::

	compose:
  	  ansible_host: guest.ipAddress
  	  ansible_ssh_host: guest.ipAddress
  	  ansible_uuid: 99999999 | random | to_uuid
  	  availablefield: availableField
  	  configissue: configIssue
  	  configstatus: configStatus
  	  customvalue: customValue
  	  effectiverole: effectiveRole
  	  guestheartbeatstatus: guestHeartbeatStatus
  	  layoutex: layoutEx
  	  overallstatus: overallStatus
  	  parentvapp: parentVApp
  	  recenttask: recentTask
  	  resourcepool: resourcePool
  	  rootsnapshot: rootSnapshot
  	  triggeredalarmstate: triggeredAlarmState
	filters:
	- runtime.powerState == "poweredOn"
	keyed_groups:
	- key: config.guestId
  	  prefix: ''
  	  separator: ''
	- key: '"templates" if config.template else "guests"'
  	  prefix: ''
  	  separator: ''
	plugin: community.vmware.vmware_vm_inventory
	properties:
	- availableField
	- configIssue
	- configStatus
	- customValue
	- datastore
	- effectiveRole
	- guestHeartbeatStatus
	- layout
	- layoutEx
	- name
	- network
	- overallStatus
	- parentVApp
	- permission
	- recentTask
	- resourcePool
	- rootSnapshot
	- snapshot
	- triggeredAlarmState
	- value
	- capability
	- config
	- guest
	- runtime
	- storage
	- summary
	strict: false
	with_nested_properties: true   


.. _ir_plugin_satellite:

Red Hat Satellite 6
---------------------

.. index:: 
   pair: inventories; Red Hat Satellite 6 
   pair: inventories; satellite
   pair: inventory plugins; satellite

::

	group_prefix: foreman_
	keyed_groups:
	- key: foreman['environment_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9_]', '_') | regex_replace('none', '')
  	  prefix: foreman_environment_
  	  separator: ''
	- key: foreman['location_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9_]', '_')
  	  prefix: foreman_location_
  	  separator: ''
	- key: foreman['organization_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9_]', '_')
  	  prefix: foreman_organization_
  	  separator: ''
	- key: foreman['content_facet_attributes']['lifecycle_environment_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9_]', '_')
  	  prefix: foreman_lifecycle_environment_
  	  separator: ''
	- key: foreman['content_facet_attributes']['content_view_name'] | lower | regex_replace(' ', '') | regex_replace('[^A-Za-z0-9_]', '_')
  	  prefix: foreman_content_view_
  	  separator: ''
	legacy_hostvars: true
	plugin: theforeman.foreman.foreman
	validate_certs: false
	want_facts: true
	want_hostcollections: false
	want_params: true


OpenStack
----------

.. index:: 
   pair: inventories; OpenStack
   pair: inventories; OpenStack
   pair: inventory plugins; OpenStack

::

	expand_hostvars: true
	fail_on_errors: true
	inventory_hostname: uuid
	plugin: openstack.cloud.openstack


Red Hat Virtualization
-----------------------

.. index:: 
   pair: inventories; Red Hat Virtualization 
   pair: inventories; rhv
   pair: inventory plugins; rhv

::

	compose:
  	  ansible_host: (devices.values() | list)[0][0] if devices else None
	keyed_groups:
	- key: cluster
  	  prefix: cluster
  	  separator: _
	- key: status
  	  prefix: status
  	  separator: _
	- key: tags
  	  prefix: tag
  	  separator: _
	ovirt_hostname_preference:
	- name
	- fqdn
	ovirt_insecure: false
	plugin: ovirt.ovirt.ovirt


Red Hat Ansible Automation Platform
----------------------------------------

.. index:: 
   pair: inventories; Red Hat Ansible Automation Platform
   pair: inventory plugins; Red Hat Ansible Automation Platform

::

	include_metadata: true
	inventory_id: <inventory_id or url_quoted_named_url>
	plugin: awx.awx.tower
	validate_certs: <true or false>