Hi,

As I understand etc_ip and postgresql_ip are variable specific for each host, and so they should be in hosts parts of your inventory file (Here you are doing a mix).

postgresql_existscan be setup in a your postgresql group, but I'm not sure if it is really necessary to have it

See there for example : https://docs.ansible.com/ansible/latest/plugins/inventory/yaml.html

If you want further help, please provide your playbooks used for your outputs.

And for the record, no needs to use a playbook to list variables, command "ansible-inventory" can be used successfully for this

Regards,

Le 14/04/2020 à 11:39, Baptiste Doublet a écrit :
Hi Everybody,

I have a problem that I can't resolve on my own.
I want to deploy an etcd cluster with postgresql on the same servers
I have three servers and this is my inventory file:

```
all:
children:
etcd_cluster: # recommendation: 3 or 5-7 nodes
hosts:
demo_postgres1:
vars:
etcd_ip: '***'
demo_postgres2:
vars:
etcd_ip: '***'
demo_postgres3:
vars:
etcd_ip: '***'
master:
hosts:
demo_postgres1:
vars:
postgres_ip: '***'
postgresql_exists: 'false'
replica:
hosts:
demo_postgres2:
vars:
postgres_ip: '***'
postgresql_exists: 'false'
demo_postgres3:
vars:
postgres_ip: '***'
postgresql_exists: 'false'
balancers:
hosts:
demo_haproxy1:
vars:
haproxy_ip: '***'
demo_haproxy2:
vars:
haproxy_ip: '***'
demo:
vars:
ansible_ssh_common_args: "-F ../../ssh_config/demo_config"
children:
balancers:
etcd_cluster:
postgres_cluster:
children:
master:
replica:
```
I have the demo_postgres[0-3] servers that run etcd and postgres. Just to prepare an external instance for etcd cluster, I have separated its in two distinct groups: etcd_cluster and postgres_cluster.
I have etcd_ip vars and postgres_ip varsrespectivelyon these groups.

My problem is when I run my playbook with hosts: etcd_cluster and I print hostvars, I get the hostvars of postgres_cluster:

```
PLAY [etcd_cluster] ***************************************************************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************************************************************
ok: [demo_postgres1]
ok: [demo_postgres3]
ok: [demo_postgres2]

TASK [Ansible | List all known variables and facts] *******************************************************************************************************************************************
ok: [demo_postgres1] => {
    "hostvars[inventory_hostname]['vars']": {
        "postgres_ip": "***",
        "postgresql_exists": "false"
    }
}
ok: [demo_postgres2] => {
    "hostvars[inventory_hostname]['vars']": {
        "postgres_ip": "***",
        "postgresql_exists": "false"
    }
}
ok: [demo_postgres3] => {
    "hostvars[inventory_hostname]['vars']": {
        "postgres_ip": "***",
        "postgresql_exists": "false"
    }
}

```
I didn't find any information about the merging of hostvars when the host is in multiple groups and when I have tested to remove the postgres_cluster group, I get the correct hostvars:

```
PLAY [etcd_cluster] ***************************************************************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************************************************************
ok: [demo_postgres1]
ok: [demo_postgres3]
ok: [demo_postgres2]

TASK [Ansible | List all known variables and facts] *******************************************************************************************************************************************
ok: [demo_postgres1] => {
    "hostvars[inventory_hostname]['vars']": {
        "etcd_ip": "***"
    }
}
ok: [demo_postgres2] => {
    "hostvars[inventory_hostname]['vars']": {
        "etcd_ip": "***"
    }
}
ok: [demo_postgres3] => {
    "hostvars[inventory_hostname]['vars']": {
        "etcd_ip": "***"
    }
}
```

I would expect that my etcd_ip was merged with postgres_ip ? I can resolve this by adding the etcd_ip in postgres_cluster hostvars but I want to understand why merge is not working.

If you need more information, feel free to ask.

Best regards,

BDO
--
You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/d674a6d6-6640-4abb-ba52-51a5f2369692%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/d674a6d6-6640-4abb-ba52-51a5f2369692%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "Ansible 
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/1badb29e-33f5-c6ed-bde4-3610c90cb571%40lenhof.eu.org.

Reply via email to