Based on this beauty:
https://coderwall.com/p/lxchtg

I worked around it with:

```
- name: Check the apache configuration
  command: apachectl -t
  register: apache_result
  ignore_errors: yes
  tags: httpd

- name: Ending playbook
  action: fail msg="Apache configuration is invalid. Please check before 
re-running the playbook."
  when: apache_result|failed
  tags: httpd
```

right after placing the vhosts config file.

Thanks!
Mark

On Tuesday, September 30, 2014 2:06:30 PM UTC+2, Mark Maas wrote:
>
> Hi List,
>
> I’m trying to securely place a vhost file for apache.
> Before I place a new chost from template, I want it to be checked for 
> correct behaviour before really deploying it:
>
> - name: Plaats de verschillende extra vhosts
>   template: src=vhost.j2 dest=/etc/httpd/conf.d/vhosts.conf backup=yes 
> validate="/usr/sbin/apachectl -tf /etc/httpd/conf/httpd.conf"
>   notify: reload httpd
>   tags: httpd
>
> Well, this will result in this error message:
>
> TASK: [httpd | Plaats de verschillende extra vhosts] 
> ************************** 
> <10.34.34.66> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 10.34.34.66
> <10.34.34.66> EXEC /bin/sh -c 'mkdir -p 
> $HOME/.ansible/tmp/ansible-tmp-1412077952.61-262594095082263 && echo 
> $HOME/.ansible/tmp/ansible-tmp-1412077952.61-262594095082263'
> <10.34.34.66> EXEC /bin/sh -c 'rc=0; [ -r "/etc/httpd/conf.d/vhosts.conf" ] 
> || rc=2; [ -f "/etc/httpd/conf.d/vhosts.conf" ] || rc=1; [ -d 
> "/etc/httpd/conf.d/vhosts.conf" ] && echo 3 && exit 0; (/usr/bin/md5sum 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/sbin/md5sum -q 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/usr/bin/digest -a md5 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/sbin/md5 -q 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/usr/bin/md5 -n 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/bin/md5 -q 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/usr/bin/csum -h MD5 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (/bin/csum -h MD5 
> /etc/httpd/conf.d/vhosts.conf 2>/dev/null) || (echo "${rc} 
> /etc/httpd/conf.d/vhosts.conf")'
> <10.34.34.66> PUT /tmp/tmpJob224 TO 
> /root/.ansible/tmp/ansible-tmp-1412077952.61-262594095082263/source
> <10.34.34.66> PUT /tmp/tmpAvdktD TO 
> /root/.ansible/tmp/ansible-tmp-1412077952.61-262594095082263/copy
> <10.34.34.66> EXEC /bin/sh -c 'LANG=C LC_CTYPE=C /usr/bin/python 
> /root/.ansible/tmp/ansible-tmp-1412077952.61-262594095082263/copy; rm -rf 
> /root/.ansible/tmp/ansible-tmp-1412077952.61-262594095082263/ >/dev/null 2>&1'
> failed: [ISUFD4ACCPRES03] => {"failed": true}
> msg: validate must contain %s: /usr/sbin/apachectl -tf 
> /etc/httpd/conf/httpd.conf
>
> FATAL: all hosts have already failed -- aborting
>
> Apparantly I need to add %s to the validate command. But validating in 
> apachectl does not work that way, it just needs the “top” config and then 
> works it’s way through that one and all “include” directories inside that 
> file and validate the complete setup for me.
>
> I tried altering the command to: “validate=”/usr/sbin/apachectl -tf 
> /etc/httpd/conf/httpd.conf #%s” but ansible then thinks I forgot the 
> closing quotes (Because it’s behind a comment sign ;-)
>
> Then I tried “validate=”/usr/sbin/apachectl -tf /etc/httpd/conf/httpd.conf 
> \#%s” you see? trying to escape the hash sign, which then gets translated 
> to the command as: “/usr/sbin/apachectl -tf /etc/httpd/conf/httpd.conf 
> \#/etc/httpd/confd./vhosts.conf” which then causes apachectl to fail again 
> ;-)
>
> A bit stuck here. Can we make %s optional?
>
> Thanks,
> Mark
> ​
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/e14e70d0-6563-4947-a5a4-4c918f01b3f4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to