--- plugin: reconstructed instructions: # Check whether that host is managed - action: set_fact name: inv__managed value: >- {{ inv__data is defined and inv__data.network is defined and inv__data.service is defined and inv__data.instance is defined }} - when: not inv__managed action: stop # Fail when the host name starts with "evil". - action: block block: - when: inventory_hostname.startswith( 'evil' ) action: fail msg: '{{ inventory_hostname }} is obviously evil, skipping.' rescue: # Do not crash on redeemably evil VMs, but still skip them. - when: inv__data.unredeemable is defined action: fail msg: '{{ reconstructed_error }}' - action: create_group group: reedmably_evil add_host: true - action: stop # Only create the managed groups if we *have* managed hosts - action: block run_once: true block: - action: create_group group: managed - loop: [ by_environment, by_network, by_failover_stack, by_service ] action: create_group group: '{{ item }}' parent: managed # Copy inv__data fields to separate inv__ variables - loop: - component - description - fostack - instance - network - service - subcomponent when: inv__data[item] is defined action: set_fact name: inv__{{ item }} value: '{{ inv__data[ item ] }}' # Environment variable and groups - action: set_fact name: inv__environment value: >- {{ inv__data.environment | default( ( inv__instance == "prod" ) | ternary( "prod", "dev" ) ) }} - action: create_group group: env_{{ inv__environment }} parent: by_environment add_host: true # Failover stack group - action: create_group group: >- {{ ( inv__fostack is defined ) | ternary( "fostack_" ~ inv__fostack | default("") , "no_failover" ) }} parent: by_failover_stack add_host: true # Network group - action: create_group group: net_{{ inv__network }} parent: by_network add_host: true # Service group - action: set_var name: service_group value: svc_{{ inv__service }} - action: create_group group: '{{ service_group }}' parent: by_service # Component group. We add the host directly if there is no subcomponent. - when: inv__component is defined action: block vars: comp_group: svcm_{{ inv__service }}_{{ inv__component }} block: - action: create_group group: '{{ comp_group }}' parent: '{{ service_group }}' # Subcomponent group, or lack thereof. - when: inv__subcomponent is not defined action: add_host group: '{{ comp_group }}' - when: inv__subcomponent is defined action: create_group group: svcm_{{ inv__service }}_{{ inv__subcomponent }} parent: '{{ comp_group }}' add_host: true