Created
May 25, 2017 13:40
-
-
Save hryamzik/41b97d2f9c6a33c4fe1d179a4ecbf176 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- name: read serverid | |
shell: head -10 /etc/go/cruise-config.xml|sed -rn 's/.*serverId="([^"]+)".*/\1/p' | |
changed_when: no | |
register: serverid | |
- name: read xml | |
set_fact: xmlconf={{ lookup('file', 'files/cruise-config.xml')| | |
regex_replace('(serverId=)"[^"]+', '\\1"' + serverid.stdout)| | |
replace('\n','\\n')| | |
regex_replace('<security>.*</security>','')| | |
regex_replace('encryptedPassword="[^"]+"','')| | |
replace('\\n','\n') | |
}} | |
- name: initiate edit | |
uri: | |
url: http://127.0.0.1:8153/go/admin/config_xml/edit | |
return_content: yes | |
register: editrequest | |
- name: set auth variables | |
set_fact: auth_token={{ editrequest.content.replace('\n','')|regex_replace('.*name="authenticity_token".+?value="([^"]+).*','\\1') }} | |
# - debug: msg="{{ auth_token }}" | |
- name: define old conf md5 | |
set_fact: old_conf_md5={{ editrequest.content|replace('\n','')|regex_replace('.*id="go_config_md5".*?value="([^"]+)".*','\\1') }} | |
- name: show md5 | |
debug: var=old_conf_md5 | |
- name: post config | |
uri: | |
url: http://127.0.0.1:8153/go/admin/config_xml | |
return_content: yes | |
headers: | |
Cookie: "{{ editrequest.set_cookie }}" | |
method: POST | |
follow_redirects: all | |
body: "{{ 'utf8=' + '✓'|urlencode() + '&_method=put&authenticity_token=' + auth_token| urlencode() + | |
'&commit=SAVE&go_config' + '[content]'|urlencode() + '=' + xmlconf|urlencode() + '&go_config' + | |
'[md5]'|urlencode() + '=' + old_conf_md5 }}" | |
register: result | |
ignore_errors: yes | |
# - debug: var=result | |
- name: show p errors | |
debug: msg={{ result.content.replace('\n','\\n')|regex_replace('.*<p\s+class="error">([^<]+).*','\1')|regex_replace('<.*?>','')|regex_replace('\\\\n\s*\\\\n','\n')|regex_replace('(\n)\s+','\1') }} | |
when: "{{ 'class=\"error\"' in result.content }}" | |
- name: show div errors | |
debug: msg={{ (result.content.replace('\n','\\n')|regex_replace('.*<div\s+class="errors">(.*?)</div>.*','\1')|regex_replace('<.*?>','')|regex_replace('\s*\\\\n','\n')|regex_replace('(\n)\s+','\1')).split('\n') }} | |
when: "{{ 'class=\"errors\"' in result.content }}" | |
- name: show success div | |
debug: msg={{ result.content.replace('\n','\\n')|regex_replace('.*<p\s+class="success">([^<]+).*','\1')|regex_replace('<.*?>','')|regex_replace('\\\\n\s*\\\\n','\n')|regex_replace('(\n)\s+','\1') }} | |
when: "{{ 'class=\"success\"' in result.content }}" | |
- name: send one more edit request to get md5 | |
uri: | |
url: http://127.0.0.1:8153/go/admin/config_xml/edit | |
return_content: yes | |
register: editrequest | |
- name: define old conf md5 | |
set_fact: new_conf_md5={{ editrequest.content|replace('\n','')|regex_replace('.*id="go_config_md5".*?value="([^"]+)".*','\\1') }} | |
- name: check if config changed | |
debug: msg="Config {{ 'not ' if new_conf_md5 == old_conf_md5 else '' }}changed" | |
changed_when: "{{ new_conf_md5 != old_conf_md5 }}" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment