Ansible случайно изменяет мне - PullRequest
0 голосов
/ 16 марта 2020

У меня есть asible playbook, который, как предполагается, исправляет испорченные XML в моих экземплярах SOLR:

- hosts: host-solr-master, host-solr-repeater
  become: true
  become_user: user

  tasks:
  - name: Fixing corrupted wc-search.xml
    lineinfile:
      path: '{{ solr_catalog_config_dir }}/wc-search.xml'
      regexp: '{{ item.regexp }}'
      line: '{{ item.line }}'
      state: '{{ item.state }}'
    with_items:
      - { regexp: '<\!DOCTYPE.*', line: '', state: 'absent' }
      - { regexp: '\]>', line: '', state: 'absent' }
      - { regexp: '<_config:cores.*', line: '<_config:cores>', state: 'present' }

  - name: Preview the changed wc-search.xml
    shell: cat '{{ solr_catalog_config_dir }}/wc-search.xml'

Я выполняю эту пьесу на Jenkins с Ansible плагином 0.8 (работает с Python 2.7. 5). Проблема, с которой я столкнулся, заключается в том, что хотя вакансии утверждают, что заменяют нужные строки.

TASK [Fixing corrupted wc-search.xml] ******************************************
ok: [hostname.master] => (item={u'regexp': u'<\\!DOCTYPE.*', u'line': u'', u'state': u'absent'}) => {
    "backup": "", 
    "changed": false, 
    "found": 0, 
    "item": {
        "line": "", 
        "regexp": "<\\!DOCTYPE.*", 
        "state": "absent"
    }
}
changed: [hostname.repeater] => (item={u'regexp': u'<\\!DOCTYPE.*', u'line': u'', u'state': u'absent'}) => {
    "backup": "", 
    "changed": true, 
    "found": 1, 
    "item": {
        "line": "", 
        "regexp": "<\\!DOCTYPE.*", 
        "state": "absent"
    }
}

MSG:

1 line(s) removed

ok: [hostname.master] => (item={u'regexp': u'\\]>', u'line': u'', u'state': u'absent'}) => {
    "backup": "", 
    "changed": false, 
    "found": 0, 
    "item": {
        "line": "", 
        "regexp": "\\]>", 
        "state": "absent"
    }
}
changed: [hostname.repeater] => (item={u'regexp': u'\\]>', u'line': u'', u'state': u'absent'}) => {
    "backup": "", 
    "changed": true, 
    "found": 1, 
    "item": {
        "line": "", 
        "regexp": "\\]>", 
        "state": "absent"
    }
}

MSG:

1 line(s) removed

changed: [hostname.repeater] => (item={u'regexp': u'<_config:cores.*', u'line': u'<_config:cores>', u'state': u'present'}) => {
    "backup": "", 
    "changed": true, 
    "item": {
        "line": "<_config:cores>", 
        "regexp": "<_config:cores.*", 
        "state": "present"
    }
}

MSG:

line replaced

ok: [hostname.master] => (item={u'regexp': u'<_config:cores.*', u'line': u'<_config:cores>', u'state': u'present'}) => {
    "backup": "", 
    "changed": false, 
    "item": {
        "line": "<_config:cores>", 
        "regexp": "<_config:cores.*", 
        "state": "present"
    }
}

Проверено, что в задаче «Предварительный просмотр измененного w c -поиск. xml».

TASK [Preview the changed wc-search.xml] ***************************************
changed: [hostname.repeater] => {
    "changed": true, 
    "cmd": "cat 'PATH_TO/wc-search.xml'", 
    "delta": "0:00:00.023935", 
    "end": "2020-03-16 10:37:23.424572", 
    "rc": 0, 
    "start": "2020-03-16 10:37:23.400637"
}

STDOUT:

<?xml version="1.0" encoding="UTF-8"?>
<_config:search-config
    xmlns:_config="http://www.ibm.com/xmlns/prod/commerce/foundation/config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/config ../xsd/wc-search.xsd ">
    <_config:server name="BasicConfiguration">
        <_config:embedded/>
    </_config:server>
<_config:cores>
        ...
    </_config:cores>
</_config:search-config>

changed: [hostname.master] => {
    "changed": true, 
    "cmd": "cat 'PATH_TO/wc-search.xml'", 
    "delta": "0:00:00.036818", 
    "end": "2020-03-16 10:37:23.560608", 
    "rc": 0, 
    "start": "2020-03-16 10:37:23.523790"
}

STDOUT:

<?xml version="1.0" encoding="UTF-8"?>
<_config:search-config
    xmlns:_config="http://www.ibm.com/xmlns/prod/commerce/foundation/config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/config ../xsd/wc-search.xsd ">
    <_config:server name="BasicConfiguration">
        <_config:embedded/>
    </_config:server>
    <_config:cores>
        ...
    </_config:cores>
    ...
</_config:search-config>

Когда я предварительно просматриваю файлы на серверах, обновляется только файл в host-solr-repeater.

Есть идеи, в чем может быть причина? Я попытался воспроизвести книгу с флагом --flush-cache и установить keep_remote_files = False в /etc/ansible/ansible.cfg. Также не помогло.

Примечание: Еще одна важная вещь: один раз в нескольких сборках файл обновляется на обоих серверах, а иногда даже на одном из них, поэтому поведение здесь совершенно случайно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...