On Sunday, November 4, 2018 at 10:03:49 AM UTC-5, Uwe Sauter wrote:
>
> OK, more comments: 
>
> > 
> > So I've modified the first main.yml as follows: 
> > 
> > | 
> > # cat main.yml 
> > --- 
> > 
> > 
> > -name:Gatherall facts prior to execution 
> >    hosts:mysql 
> >    gather_facts:false 
>
> Not gathering facts here will lead you to miss many of the ansible_* 
> variables. 
>
> >    tasks: 
> > -name:Dumpansible_default_ipv4 variable output 
> >        copy: 
>
> The result of the copy module can be found on the target host(s), not on 
> the host running the playbook. But in this case 
> it should already fail as you don't gather facts and thus miss 
> ansible_default_ipv4. 
>
> Try the following: 
>
>
>
> #### test.yaml #### 
> --- 
> - name: test templating 
>    hosts: mysql 
>    gather_facts: true 
>    tasks: 
>      - debug: msg='{{ inventory_hostname }} has default IP {{ 
> ansible_default_ipv4["address"] }} 
>      - template: 
>          src: test.j2 
>          dest: /tmp/test.out 
>
> #### end test.yaml #### 
>
> #### test.j2 #### 
> # {{ ansible_managed }} 
> My default IPv4 address is: {{ ansible_default_ipv4["address"] }} 
>
> My other hostvars are: 
> {{ hostvars[inventory_hostname] | to_nice_yaml }} 
> #### end test.j2 #### 
>
> You should get a debug output for each of your hosts and there should be a 
> /tmp/test.out on each of your hosts from the 
> mysql group. 
>
>

[root@awx02 mysql]# pwd
/ansible/roles/mysql
[root@awx02 mysql]#  cat templates/test.j2
# {{ ansible_managed }}
My default IPv4 address is: {{ ansible_default_ipv4["address"] }}


My other hostvars are:
{{ hostvars[inventory_hostname] | to_nice_yaml }}
[root@awx02 mysql]#


[root@awx01 ansible]# pwd
/ansible
[root@awx01 ansible]# cat main.yml
---
- name: Gather all facts prior to execution
  hosts: mysql
  gather_facts: true
  tasks:
    - debug: msg='{{ inventory_hostname }} has default IP {{ 
ansible_default_ipv4["address"] }}'
    - template:
        src: test.j2
        dest: /tmp/test.out


- name: Install and configure MySQL
  hosts: mysql
  sudo: yes
  roles:
    - mysql
  tags: mysql


[root@awx01 ansible]#


[root@mysql04 tmp]# ls -altri /tmp/test*
ls: cannot access /tmp/test*: No such file or directory
[root@mysql04 tmp]#


[root@awx01 ansible]# ls -altri /tmp/test*
ls: cannot access /tmp/test*: No such file or directory
[root@awx01 ansible]#



Don't think I got it right on though because it printed nothing:

PLAY [Gather all facts prior to execution] 
****************************************************************************************************************


TASK [Gathering Facts] 
************************************************************************************************************************************
task path: /ansible/main.yml:2


 

>
>
> >          dest:/tmp/ansible_default_ipv4.yaml 
> >          content:'{{ ansible_default_ipv4 | to_nice_yaml }}' 
> > -fail: 
> > 
> > 
> > -name:Installandconfigure MySQL 
> >    hosts:mysql 
> >    sudo:yes 
> >    roles: 
> > -mysql 
> >    tags:mysql 
> > 
> > | 
> > 
> > But couldn't find anything printed into /tmp/ansible_default_ipv4.yaml 
> anywhere.  ( Now I could have mocked it up given 
> > how green I am with this. ) 
> > 
> > However, I've also done this: 
> > 
> > | 
> > # cat tasks/variables.yml 
> > --- 
> > 
> > 
> > -name:IncludeOS-specific variables (RedHat). 
> >    include_vars:"{{ ansible_os_family }}-{{ 
> ansible_distribution_major_version }}.yml" 
> > when:ansible_os_family =="RedHat" 
> > 
> > 
> > -name:Definemysql_config_file variable . 
> >    set_fact: 
> >      mysql_config_file:"{{ __mysql_config_file }}" 
> > when:mysql_config_file isnotdefined 
> > 
> > 
> > -debug: 
> >      msg:"var = {{ ansible_default_ipv4.address }}" 
> > when:ansible_default_ipv4.address isdefined 
> > 
> > 
> > -name:Definethe mysql_ipv4 variable 
> >    set_fact: 
> >      mysql_ipv4:"{{ ansible_default_ipv4.address }}" 
> > when:mysql_ipv4 isnotdefined 
> > 
> > 
> > -name:Printall variables foreach remote device 
> >    debug: 
> > var:hostvars[inventory_hostname] 
> > 
> > | 
> > 
> > which printed this output (snippet only): 
> > 
> > | 
> > TASK [mysql :Printall variables foreach remote 
> > 
> device]*************************************************************************************************
>  
>
> > task path:/ansible/roles/mysql/tasks/variables.yml:21 
> > ok:[mysql04]=>{ 
> > "hostvars[inventory_hostname]":{ 
> > "__mysql_config_file":"/etc/my.cnf", 
> > "ansible_all_ipv4_addresses":[ 
> > "192.168.0.109" 
> > ], 
> > "ansible_all_ipv6_addresses":[ 
> > "fe80::250:56ff:fe86:e11b" 
> > ], 
> > "ansible_apparmor":{ 
> > "status":"disabled" 
> > }, 
> > "ansible_architecture":"x86_64", 
> > "ansible_bios_date":"04/14/2014", 
> > "ansible_bios_version":"6.00", 
> > "ansible_check_mode":true, 
> > "ansible_cmdline":{ 
> > "BOOT_IMAGE":"/vmlinuz-3.10.0-693.21.1.el7.x86_64", 
> > "LANG":"en_US.UTF-8", 
> > "biosdevname":"0", 
> > "crashkernel":"auto", 
> > "net.ifnames":"0", 
> > "quiet":true, 
> > "rd.lvm.lv":"centos/swap", 
> > "rhgb":true, 
> > "ro":true, 
> > "root":"/dev/mapper/centos-root" 
> > }, 
> > "ansible_date_time":{ 
> > "date":"2018-11-04", 
> > "day":"04", 
> > "epoch":"1541340261", 
> > "hour":"09", 
> > "iso8601":"2018-11-04T14:04:21Z", 
> > "iso8601_basic":"20181104T090421500144", 
> > "iso8601_basic_short":"20181104T090421", 
> > "iso8601_micro":"2018-11-04T14:04:21.500460Z", 
> > "minute":"04", 
> > "month":"11", 
> > "second":"21", 
> > "time":"09:04:21", 
> > "tz":"EST", 
> > "tz_offset":"-0500", 
> > "weekday":"Sunday", 
> > "weekday_number":"0", 
> > "weeknumber":"44", 
> > "year":"2018" 
> > }, 
> > "ansible_default_ipv4":{ 
> > "address":"192.168.0.109", 
> > "alias":"eth0", 
> > "broadcast":"192.168.0.255", 
> > "gateway":"192.168.0.1", 
> > "interface":"eth0", 
> > "macaddress":"00:50:56:86:e1:1b", 
> > "mtu":1500, 
> > "netmask":"255.255.255.0", 
> > "network":"192.168.0.0", 
> > "type":"ether" 
> > }, 
> > 
> > 
> > 
> > | 
> > 
> > 
> > 
> >     With this you'll be able to analyze the structure and see if the 
> attribute / key is actually set for which your 
> >     playbook 
> >     or template is looking. 
> > 
> > 
> >     Regards, 
> > 
> >              Uwe 
> > 
> > 
> >      > 
> >      > 
> >      > There's a variables.yml file as well but that just defines 
> mysql_config_file .  Let me know if you need to see it. 
> >      > 
> >      > Cheers, 
> >      > TK 
> >      > 
> >      > -- 
> > 
> > -- 
> > 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 
> > ansible-proje...@googlegroups.com <javascript:> <mailto:
> ansible-project+unsubscr...@googlegroups.com <javascript:>>. 
> > To post to this group, send email to ansible...@googlegroups.com 
> <javascript:> <mailto:ansible...@googlegroups.com <javascript:>>. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/ansible-project/7d79d7d6-ed2f-4693-8182-94ef9bd62c7b%40googlegroups.com
>  
> > <
> https://groups.google.com/d/msgid/ansible-project/7d79d7d6-ed2f-4693-8182-94ef9bd62c7b%40googlegroups.com?utm_medium=email&utm_source=footer>.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/c2f987b7-d1af-4739-9fc4-5c573f436ab8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to