Le mardi 21 janvier 2014 01:47:20 UTC+1, Michael DeHaan a écrit :
>
> So is vars/Debian loaded by include_vars?
>
vars/Debian is included in my playbook:
vars_files:
- "vars/{{ ansible_os_family }}.yml"
>
> If so, that's the problem, as the name of the facts are a bit more global
> than something at inventory scope. The same handlers have to be assigned
> unformally to the task definition, so it can't notify some on some OS and
> some others elsewhere.
>
> This can be handled a bit roughly like so:
>
> - module: foo ...
> notify:
> - debian_handler
> - redhat_handler
>
> And in the handler
>
> - name: debian_handler
> service: name=bar state=restarted
> when: ansible_os_family == 'Debian'
>
> etc
>
> A usually better way is just
>
> - name: restart the thing
> service: name={{ service_name }} state=restarted
>
>
> And just put the variable in the definition of the task, rather than name.
>
>
> OK I tried the better way and it's working now :). I have a common
configuration and handler for my 2 OS.
*roles/common/tasks/main.yml:*- name: IPv4 firewall configuration
template: src=/etc/ansible/roles/common/templates/iptables.j2 dest={{
iptables_config_file }} owner=root group=root mode=0644
notify:
- restart iptables
tags:
- test
- name: IPv6 firewall configuration
template: src=/etc/ansible/roles/common/templates/ip6tables.j2 dest={{
ip6tables_config_file }} owner=root group=root mode=0644
notify:
- restart ip6tables
tags:
- test
*roles/common/handlers/main.yml *
- name: restart iptables
service: name={{ iptables_service_name }} state=restarted
- name: restart ip6tables
service: name={{ ip6tables_service_name }} state=restarted
Thanks for your help.
>
> On Mon, Jan 20, 2014 at 3:33 AM, <[email protected] <javascript:>> wrote:
>
>> Hello,
>>
>> I'm trying to use OS based variables for a handler but it doesn't work.
>> Here's my configuration:
>>
>> *vars/Debian.yml*
>>
>> iptables_service_name: iptables-persistent
>> iptables_config_file: /etc/iptables/rules.v4
>>
>> *roles/common/tasks/main.yml*
>>
>> - name: test value
>> debug: msg="{{ iptables_service_name }} is the name of the service"
>> tags:
>> - test
>>
>> - name: IPv4 firewall configuration
>> template: src=/etc/ansible/roles/common/
>> templates/iptables.j2 dest={{ iptables_config_file }} owner=root
>> group=root mode=0644
>> notify:
>> - restart {{ iptables_service_name }}
>> tags:
>> - test
>>
>>
>> *roles/common/handlers/main.yml *
>> - name: restart iptables-persistent
>> service: name={{ iptables_service_name }} state=restarted
>>
>>
>> The output when I launch the playbook:
>>
>>
>> GATHERING FACTS ******************************
>> *********************************
>> ok: [172.16.100.211]
>> 172.16.100.211: importing /etc/ansible/vars/Debian.yml
>>
>> TASK: [common | test value]
>> ***************************************************
>>
>> ok: [172.16.100.211] => {
>> "item": "",
>> "msg": "iptables-persistent is the name of the service"
>> }
>>
>> TASK: [common | IPv4 firewall configuration]
>> **********************************
>> changed: [172.16.100.211] => {"changed": true, "dest":
>> "/etc/iptables/rules.v4", "gid": 0, "group": "root", "item": "", "md5sum": "
>> db47b56591cd1636563d51eeccb4c9e2", "mode": "0644", "owner": "root",
>> "size": 700, "src": "/root/.ansible/tmp/ansible-
>> 1390201288.3-106768121935641/source", "state": "file", "uid": 0}
>> ERROR: change handler (restart {{iptables_service_name}}) is not defined
>>
>> In the task test value, the iptables_service_name is OK. But when I try
>> to use it with my handler it doesn't work.
>> Can somebody tell me what I'm doing wrong?
>>
>>
>> Regards,
>>
>>
>> --
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> --
> Michael DeHaan <[email protected] <javascript:>>
> CTO, AnsibleWorks, Inc.
> http://www.ansibleworks.com/
>
>
--
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 post to this group, send email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.