)]}'
{"tripleo_ansible/roles/tripleo-ceph-run-ansible/tasks/main.yml":[{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"e0d6fd8b354659f3f1c320f11440c7345fa9f30b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        {% for ceph in ceph_multi_backends_hash %}"},{"line_number":67,"context_line":"          {% for name, hash in ceph.items() %}"},{"line_number":68,"context_line":"            {% for playbook in ceph_ansible_playbooks %}"},{"line_number":69,"context_line":"              {% set lim \u003d \"--limit \u0027clients\u0027\" %}"},{"line_number":70,"context_line":"              {% set extra \u003d \"@\"+ playbook_dir +\"/ceph-ansible/extra_vars_\"+ name +\".yml\" %}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"      echo \"Running ceph-ansible playbook {{ playbook }} for extra cluster {{ name }}\""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_68ef74fa","line":69,"range":{"start_line":69,"start_character":13,"end_line":69,"end_character":14},"updated":"2020-01-14 21:59:59.000000000","message":"No longer using --limit. I think I need a diff inventory so that nodes like the controller end up being considered in the client role for the subsequent ceph-ansible runs.","commit_id":"6b81b74858481015aa5d397eed93951d6dcb8ca1"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"aacc8ab11fa72556e2c4d7ca061d4e32df53c48e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"              {% set lim \u003d \"--limit \u0027clients\u0027\" %}"},{"line_number":70,"context_line":"              {% set extra \u003d \"@\"+ playbook_dir +\"/ceph-ansible/extra_vars_\"+ name +\".yml\" %}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"      echo \"Running ceph-ansible playbook {{ playbook }} for extra cluster {{ name }}\""},{"line_number":73,"context_line":"      {{ ceph_ansible_command_list|join(\u0027 \u0027) }} -e {{ extra }} {{ lim }} {{ playbook }} 2\u003e\u00261"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            {% endfor %}"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_62a3169d","line":72,"updated":"2020-01-14 18:49:05.000000000","message":"The echo won\u0027t be seen because the next task runs it with no_log\u003dtrue. We reply on the ANSIBLE_LOG_PATH to see our log people debugging bad deployments may find it tricky to diff the first run with each run for ceph_multibackends_hash.","commit_id":"6b81b74858481015aa5d397eed93951d6dcb8ca1"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"e0d6fd8b354659f3f1c320f11440c7345fa9f30b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"              {% set lim \u003d \"--limit \u0027clients\u0027\" %}"},{"line_number":70,"context_line":"              {% set extra \u003d \"@\"+ playbook_dir +\"/ceph-ansible/extra_vars_\"+ name +\".yml\" %}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"      echo \"Running ceph-ansible playbook {{ playbook }} for extra cluster {{ name }}\""},{"line_number":73,"context_line":"      {{ ceph_ansible_command_list|join(\u0027 \u0027) }} -e {{ extra }} {{ lim }} {{ playbook }} 2\u003e\u00261"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"            {% endfor %}"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_a80d6ce8","line":72,"in_reply_to":"3fa7e38b_62a3169d","updated":"2020-01-14 21:59:59.000000000","message":"I addressed this via PS7 by finding the appropriate log file.","commit_id":"6b81b74858481015aa5d397eed93951d6dcb8ca1"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"e0d6fd8b354659f3f1c320f11440c7345fa9f30b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"      - \u0027{% if ansible_python_interpreter is defined %}-e ansible_python_interpreter\u003d{{ ansible_python_interpreter }}{% endif %}\u0027"},{"line_number":44,"context_line":"      - \u0027-{%- for number in range(0, ceph_ansible_playbook_verbosity) -%}v{% endfor %}\u0027"},{"line_number":45,"context_line":"      - \u0027{% if ceph_ansible_skip_tags is defined and ceph_ansible_skip_tags|length \u003e 0%}--skip-tags {{ ceph_ansible_skip_tags }}{% endif %}\u0027"},{"line_number":46,"context_line":"      - \u0027-i\u0027"},{"line_number":47,"context_line":"      - \u0027{{ playbook_dir }}/ceph-ansible/inventory.yml\u0027"},{"line_number":48,"context_line":"      - \u0027--extra-vars\u0027"},{"line_number":49,"context_line":"      - \u0027@{{ playbook_dir }}/ceph-ansible/extra_vars.yml\u0027"},{"line_number":50,"context_line":"      - \u0027{% if ceph_ansible_limit is defined and ceph_ansible_limit|length \u003e 0 %}--limit {{ ceph_ansible_limit }}{% endif %}\u0027"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_481b981c","line":47,"range":{"start_line":46,"start_character":0,"end_line":47,"end_character":55},"updated":"2020-01-14 21:59:59.000000000","message":"I might remove putting inventory here and use it as something I can override for the subsequent runs in addition to preparing a different inventory for those subsequent runs.","commit_id":"a21c8ec7d3678de7d9d259631d4993382c475795"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"3354811cf56e95f8dd00ba8992c83c2a19328fdb","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: Do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_1d8d8ed3","line":54,"updated":"2020-01-20 21:42:25.000000000","message":"Molecule is failing this task with:\n\n http://paste.openstack.org/show/788618/\n\nYou can see it in context with this:\n\nhttps://2c1464b5b351d9aa5e93-14387ee33f74a27c93fba699ca02403e.ssl.cf1.rackcdn.com/702143/10/check/tripleo-ansible-centos-7-molecule-tripleo-ceph-run-ansible/d9d3963/reports.html","commit_id":"38d7268527636bcbedf98819c8614d65fdda9a13"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"f55f4f6fdde5e826461f7e34333e02dd48e5321b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: Do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_b86d68cc","line":54,"in_reply_to":"3fa7e38b_1d8d8ed3","updated":"2020-01-20 22:00:34.000000000","message":"We should expect that users set this and pass it as a map:\n\nhttps://github.com/fultonj/ussuri/blob/master/multiceph/overrides.yaml#L33-L37\n\nI think it\u0027s also getting used as a multiline string:\n\nhttps://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/roles/tripleo-ceph-common/tasks/main.yml#L34\n\nI think either case may work for thins like this but:\n\nhttps://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/roles/tripleo-ceph-uuid/tasks/gather.yml#L24-L25\n\n1. I need to be sure\n2. I need to update this loop accordingly as it\u0027s not a list","commit_id":"38d7268527636bcbedf98819c8614d65fdda9a13"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5134145284b7ff74a2b9ebd0798d9c23b58594e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: Do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_71ccdf61","line":54,"in_reply_to":"3fa7e38b_b86d68cc","updated":"2020-01-21 16:03:59.000000000","message":"- calling_ansible_environment_variables is a list of strings\n- ceph_ansible_environment_variables is a dictionary\n- |join(\u0027 \u0027) turns them both into single line strings for #1 above\n- The following produces the desired results for #2 above\n\nhttps://review.opendev.org/#/c/702143/11..12/tripleo_ansible/roles/tripleo-ceph-run-ansible/tasks/main.yml","commit_id":"38d7268527636bcbedf98819c8614d65fdda9a13"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"98231fbc22a2f52c4b26d10d4a9e0167d892081b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item.value | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item.key is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables | dict2items }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: Do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_0a10d4aa","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":63},"updated":"2020-01-21 18:57:28.000000000","message":"ceph_ansible_environment_variables (which is what molecule uses) is defaulted to a dict [1] but when I run it in a real environment I end up with a list. I think I need to update the default in tripleo-common/defaults so that molecule more accurately reflects reality.\n\n\n[0] https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/roles/tripleo-ceph-common/defaults/main.yml#L135","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"06348751fcae684ce7cc946ee2728280f625a5b1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item.value | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item.key is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables | dict2items }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: Do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_e0e6b7af","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":63},"in_reply_to":"3fa7e38b_0a10d4aa","updated":"2020-01-21 20:32:21.000000000","message":"Done","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"35c12c824a1859f49e84df521b78d553c0939a75","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- name: save ceph-ansible playbook command(s) to shell script"},{"line_number":70,"context_line":"  copy:"},{"line_number":71,"context_line":"    dest: \"{{ playbook_dir }}/ceph-ansible/ceph_ansible_command.sh\""},{"line_number":72,"context_line":"    mode: \u00270755\u0027"},{"line_number":73,"context_line":"    content: |"},{"line_number":74,"context_line":"      #!/usr/bin/env bash"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_1496b9f0","line":71,"updated":"2020-01-21 17:06:57.000000000","message":"maybe we can loop .sh call (and log) directly the ansible ansible instead of using a jinja for?","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"98231fbc22a2f52c4b26d10d4a9e0167d892081b","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- name: save ceph-ansible playbook command(s) to shell script"},{"line_number":70,"context_line":"  copy:"},{"line_number":71,"context_line":"    dest: \"{{ playbook_dir }}/ceph-ansible/ceph_ansible_command.sh\""},{"line_number":72,"context_line":"    mode: \u00270755\u0027"},{"line_number":73,"context_line":"    content: |"},{"line_number":74,"context_line":"      #!/usr/bin/env bash"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_0a48d487","line":71,"in_reply_to":"3fa7e38b_1496b9f0","updated":"2020-01-21 18:57:28.000000000","message":"I\u0027ll experiment with that next.","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"}],"tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/prepare.yml":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"6d1255fa237fb5cd1394ed7814e5006c39f1f155","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    with_dict: \"{{ ceph_multi_backends_hash }}\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  - name: get hosts of ceph_mon group and ceph_client group from inventory"},{"line_number":64,"context_line":"    # Any host in the internal ceph cluster clients group and mon group"},{"line_number":65,"context_line":"    # should also be a client of the additional external ceph cluster(s)."},{"line_number":66,"context_line":"    # The clients group is sufficient if all cases are external, but if"},{"line_number":67,"context_line":"    # default ceph-ansible run is internal, then roles with Ceph may not"},{"line_number":68,"context_line":"    # include the CephClient service like the CephMon service found in the"},{"line_number":69,"context_line":"    # Controller role. If the CephMon service is present, CephClient is"},{"line_number":70,"context_line":"    # not necessary to get a key and conf file, but the additional runs"},{"line_number":71,"context_line":"    # for the external Ceph cluster(s) do need the key and conf file on"},{"line_number":72,"context_line":"    # the hosts in that role."},{"line_number":73,"context_line":"    set_fact:"},{"line_number":74,"context_line":"      mon_client_hosts: \"{{ mon_client_hosts|default([]) + [ item ] }}\""},{"line_number":75,"context_line":"    with_inventory_hostnames:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_ec3da329","line":72,"range":{"start_line":64,"start_character":0,"end_line":72,"end_character":29},"updated":"2020-01-15 22:41:06.000000000","message":"So ceph_mon hosts are also clients, though they may not be list of ceph_client nodes. This task ensures you pick up _all_ possible clients.","commit_id":"38d7268527636bcbedf98819c8614d65fdda9a13"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"3354811cf56e95f8dd00ba8992c83c2a19328fdb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    with_dict: \"{{ ceph_multi_backends_hash }}\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  - name: get hosts of ceph_mon group and ceph_client group from inventory"},{"line_number":64,"context_line":"    # Any host in the internal ceph cluster clients group and mon group"},{"line_number":65,"context_line":"    # should also be a client of the additional external ceph cluster(s)."},{"line_number":66,"context_line":"    # The clients group is sufficient if all cases are external, but if"},{"line_number":67,"context_line":"    # default ceph-ansible run is internal, then roles with Ceph may not"},{"line_number":68,"context_line":"    # include the CephClient service like the CephMon service found in the"},{"line_number":69,"context_line":"    # Controller role. If the CephMon service is present, CephClient is"},{"line_number":70,"context_line":"    # not necessary to get a key and conf file, but the additional runs"},{"line_number":71,"context_line":"    # for the external Ceph cluster(s) do need the key and conf file on"},{"line_number":72,"context_line":"    # the hosts in that role."},{"line_number":73,"context_line":"    set_fact:"},{"line_number":74,"context_line":"      mon_client_hosts: \"{{ mon_client_hosts|default([]) + [ item ] }}\""},{"line_number":75,"context_line":"    with_inventory_hostnames:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_817386b3","line":72,"range":{"start_line":64,"start_character":0,"end_line":72,"end_character":29},"in_reply_to":"3fa7e38b_ec3da329","updated":"2020-01-20 21:42:25.000000000","message":"yes.","commit_id":"38d7268527636bcbedf98819c8614d65fdda9a13"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"35c12c824a1859f49e84df521b78d553c0939a75","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/extra_vars_{{ item.key }}.yml\""},{"line_number":60,"context_line":"        content: \"{{ item.value | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config | dict2items }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_d4cd812f","line":59,"updated":"2020-01-21 17:06:57.000000000","message":"maybe use external in the name here to match the inventory naming convention","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"06348751fcae684ce7cc946ee2728280f625a5b1","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/extra_vars_{{ item.key }}.yml\""},{"line_number":60,"context_line":"        content: \"{{ item.value | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config | dict2items }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_e0cd572f","line":59,"in_reply_to":"3fa7e38b_2a96f0f0","updated":"2020-01-21 20:32:21.000000000","message":"Done","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"98231fbc22a2f52c4b26d10d4a9e0167d892081b","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/extra_vars_{{ item.key }}.yml\""},{"line_number":60,"context_line":"        content: \"{{ item.value | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config | dict2items }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_2a96f0f0","line":59,"in_reply_to":"3fa7e38b_d4cd812f","updated":"2020-01-21 18:57:28.000000000","message":"Sure, I can do that","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"98231fbc22a2f52c4b26d10d4a9e0167d892081b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/extra_vars_{{ item.key }}.yml\""},{"line_number":60,"context_line":"        content: \"{{ item.value | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config | dict2items }}\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    - name: get hosts of ceph_mon group and ceph_client group from inventory"},{"line_number":64,"context_line":"      # Any host in the internal ceph cluster clients group and mon group"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_4a8a4cbd","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"updated":"2020-01-21 18:57:28.000000000","message":"molecule didn\u0027t like my change of this which makes sense since it\u0027s a list. with_dict did a nice thing with the list of dictionaries however so I\u0027m going back to that.\n\n[1] \nhttps://6df986b3770eb84e63fb-7bc7b92e78ec9846ffad73c4c2170bad.ssl.cf2.rackcdn.com/702143/13/check/tripleo-ansible-centos-7-molecule-tripleo-ceph-run-ansible/0e7f3d7/reports.html\n\n\n    TASK [tripleo-ceph-work-dir : generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config] ***\n    fatal: [centos7]: FAILED! \u003d\u003e\n      msg: dict2items requires a dictionary, got \u003cclass \u0027ansible.template.AnsibleUndefined\u0027\u003e instead.\n    fatal: [centos8]: FAILED! \u003d\u003e\n      msg: dict2items requires a dictionary, got \u003cclass \u0027ansible.template.AnsibleUndefined\u0027\u003e instead.\n    \n    PLAY RECAP *********************************************************************\n    centos7                    : ok\u003d7    changed\u003d4    unreachable\u003d0    failed\u003d1    skipped\u003d2    rescued\u003d0    ignored\u003d0\n    centos8                    : ok\u003d5    changed\u003d3    unreachable\u003d0    failed\u003d1    skipped\u003d2    rescued\u003d0    ignored\u003d0","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"06348751fcae684ce7cc946ee2728280f625a5b1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/extra_vars_{{ item.key }}.yml\""},{"line_number":60,"context_line":"        content: \"{{ item.value | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config | dict2items }}\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    - name: get hosts of ceph_mon group and ceph_client group from inventory"},{"line_number":64,"context_line":"      # Any host in the internal ceph cluster clients group and mon group"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_80d6e3c3","line":61,"range":{"start_line":61,"start_character":16,"end_line":61,"end_character":43},"in_reply_to":"3fa7e38b_4a8a4cbd","updated":"2020-01-21 20:32:21.000000000","message":"Done","commit_id":"68d7f1d1396caaace0d6727701ca1394afa27475"}],"tripleo_ansible/roles/tripleo_ceph_common/defaults/main.yml":[{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"0965b35a3ee8b0949e899d029faae5388ce2715a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"swift_get_url: \u0027\u0027"},{"line_number":133,"context_line":"swift_put_url: \u0027\u0027"},{"line_number":134,"context_line":"ceph_ansible_skip_tags: \u0027package-install,with_pkg\u0027"},{"line_number":135,"context_line":"ceph_ansible_environment_variables: []"},{"line_number":136,"context_line":"ceph_ansible_inherits_calling_ansible_environment: true"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_454d286f","line":135,"range":{"start_line":135,"start_character":36,"end_line":135,"end_character":38},"updated":"2020-01-24 19:36:15.000000000","message":"This is actually used as a list so default it to an empty list. It\u0027s used when molecule runs. It was never a problem for the molecule runs or runs in production environments in the past because it was always called this way:\n\n  ceph_ansible_environment_variables|join(\u0027 \u0027)\n\nHowever, because this patch iterates through this structure when molecule executed we didn\u0027t notice that it should have been declared this way until now.","commit_id":"d4b99b5e9fdf54ab32cbe3d05922a2ecdfe30323"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"2ad5887c27015c476795399b876762a90854999e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"swift_get_url: \u0027\u0027"},{"line_number":133,"context_line":"swift_put_url: \u0027\u0027"},{"line_number":134,"context_line":"ceph_ansible_skip_tags: \u0027package-install,with_pkg\u0027"},{"line_number":135,"context_line":"ceph_ansible_environment_variables: []"},{"line_number":136,"context_line":"ceph_ansible_inherits_calling_ansible_environment: true"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_524ac15a","line":135,"updated":"2020-01-27 08:15:37.000000000","message":"so then do we need depends-on and change in https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/ceph-ansible/ceph-base.yaml#L592 \u0026 https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/ceph-ansible/ceph-base.yaml#L189","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"aeea67d96943a5065781879ea8355f73522ec586","unresolved":false,"context_lines":[{"line_number":132,"context_line":"swift_get_url: \u0027\u0027"},{"line_number":133,"context_line":"swift_put_url: \u0027\u0027"},{"line_number":134,"context_line":"ceph_ansible_skip_tags: \u0027package-install,with_pkg\u0027"},{"line_number":135,"context_line":"ceph_ansible_environment_variables: []"},{"line_number":136,"context_line":"ceph_ansible_inherits_calling_ansible_environment: true"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_e202f871","line":135,"in_reply_to":"3fa7e38b_524ac15a","updated":"2020-01-27 17:06:13.000000000","message":"good catch. There\u0027s already a THT change with a depends-on to this patch. I\u0027ll make this change there.\n\nhttps://review.opendev.org/#/c/702141/10/deployment/ceph-ansible/ceph-base.yaml","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"}],"tripleo_ansible/roles/tripleo_ceph_run_ansible/tasks/main.yml":[{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"2ad5887c27015c476795399b876762a90854999e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables[0].split(\u0027 \u0027) }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"},{"line_number":58,"context_line":"  block:"},{"line_number":59,"context_line":"    - name: try to find ANSIBLE_LOG_PATH in calling_ansible_environment_variables"},{"line_number":60,"context_line":"      set_fact:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_52fc010b","line":57,"updated":"2020-01-27 08:15:37.000000000","message":"hmm not sure if you can/should rework that with |product https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#with-nested-with-cartesian to check all both of them in one task using a loop? i mean ceph_ansible_environment_variables and calling_ansible_environment_variables","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"31e06406ddeae4885ce2a1703be15a42455c7f79","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables[0].split(\u0027 \u0027) }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"},{"line_number":58,"context_line":"  block:"},{"line_number":59,"context_line":"    - name: try to find ANSIBLE_LOG_PATH in calling_ansible_environment_variables"},{"line_number":60,"context_line":"      set_fact:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_e91df860","line":57,"in_reply_to":"3fa7e38b_2266d0bd","updated":"2020-01-28 02:39:44.000000000","message":"I think I get the goal, but the log file name was hardcoded previously so if we don\u0027t need to deal with that in this change, I\u0027d keep it for a follow up and remove the \"complications\" from this submission which ultimately looks good\n\nWe could just use the cluster name to build up the log file, like you do for the .sh scripts; more about that in another comment","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"aeea67d96943a5065781879ea8355f73522ec586","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables[0].split(\u0027 \u0027) }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"},{"line_number":58,"context_line":"  block:"},{"line_number":59,"context_line":"    - name: try to find ANSIBLE_LOG_PATH in calling_ansible_environment_variables"},{"line_number":60,"context_line":"      set_fact:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_2266d0bd","line":57,"in_reply_to":"3fa7e38b_52fc010b","updated":"2020-01-27 17:06:13.000000000","message":"I don\u0027t just want to get ANSIBLE_LOG_PATH. I need to know where it came from. So I specifically want to know if ANSIBLE_LOG_PATH is in ceph_ansible_environment_variables first since that\u0027s what\u0027s going to take precedence. Only if it\u0027s not there do I want to know if it is in calling_ansible_log_path.\n\nI think if I combine the two into one loop, then I won\u0027t achieve my goal of knowing where it came from.\n\nIf it\u0027s in both ceph_ansible_environment_variables and calling_ansible_log_path, then I want to ensure I ignore the one in calling_ansible_environment_variables and only use the one in calling_ansible_log_path.\n\nWhy do I want to do this?\n\nIf someone overrides the log path for the config-download ansible run, then all ansible runs (including ceph-ansible) will log there. However, if they do that and also override the log path for the ceph-ansible run, then this method let\u0027s us obey their request; log all config-download ansible runs to one log but log the ceph-ansible runs to another log they specify.","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5a77a4e7af2f96da0caa4f3d073c5d92de4fb98","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables[0].split(\u0027 \u0027) }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"},{"line_number":58,"context_line":"  block:"},{"line_number":59,"context_line":"    - name: try to find ANSIBLE_LOG_PATH in calling_ansible_environment_variables"},{"line_number":60,"context_line":"      set_fact:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_67e2859e","line":57,"in_reply_to":"3fa7e38b_e91df860","updated":"2020-01-28 18:37:04.000000000","message":"As per our conversation on IRC I\u0027ve left this as is. My reasoning is the following. If you didn\u0027t see it this way though or have more questions then just let me know.\n\n- Because we\u0027re running multiple playbooks the logs could be confusing so we can include the logging in this change\n- It\u0027s very useful to have line 112 tell the user where the log is\n- It\u0027s already possible that the user will override the log path for the config-download and ceph-ansible log path so we need to find the log path anyway if we\u0027re going to log in a different location.","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"31e06406ddeae4885ce2a1703be15a42455c7f79","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    content: |"},{"line_number":74,"context_line":"      #!/usr/bin/env bash"},{"line_number":75,"context_line":"      set -e"},{"line_number":76,"context_line":"      echo \"Running $0\" \u003e\u003e {{ calling_ansible_log_path }}"},{"line_number":77,"context_line":"      {% set inv \u003d \"-i \"+ playbook_dir +\"/ceph-ansible/inventory.yml\" %}"},{"line_number":78,"context_line":"      {% for playbook in ceph_ansible_playbooks %}"},{"line_number":79,"context_line":"      {{ ceph_ansible_command_list|join(\u0027 \u0027) }} {{ inv }} {{ playbook }} 2\u003e\u00261"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_c907dcc7","line":76,"updated":"2020-01-28 02:39:44.000000000","message":"wouldn\u0027t this always be logging the script name? previous line was showing the actual playbook being started because the line was within a for loop","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5a77a4e7af2f96da0caa4f3d073c5d92de4fb98","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    content: |"},{"line_number":74,"context_line":"      #!/usr/bin/env bash"},{"line_number":75,"context_line":"      set -e"},{"line_number":76,"context_line":"      echo \"Running $0\" \u003e\u003e {{ calling_ansible_log_path }}"},{"line_number":77,"context_line":"      {% set inv \u003d \"-i \"+ playbook_dir +\"/ceph-ansible/inventory.yml\" %}"},{"line_number":78,"context_line":"      {% for playbook in ceph_ansible_playbooks %}"},{"line_number":79,"context_line":"      {{ ceph_ansible_command_list|join(\u0027 \u0027) }} {{ inv }} {{ playbook }} 2\u003e\u00261"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_5d6878ba","line":76,"in_reply_to":"3fa7e38b_c907dcc7","updated":"2020-01-28 18:37:04.000000000","message":"It\u0027s not clear in the log, without the above, which deployment the ceph-ansible run was for (1st internal, 2nd external, Nth external) so having that line in the log let\u0027s the user search for the context point.","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"31e06406ddeae4885ce2a1703be15a42455c7f79","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    - name: set default facts for ceph_scripts list"},{"line_number":87,"context_line":"      set_fact:"},{"line_number":88,"context_line":"        ceph_prefix: \"{{ playbook_dir + \u0027/ceph-ansible/\u0027 }}\""},{"line_number":89,"context_line":"        ceph_suffix: \u0027_external_ceph_ansible_command.sh\u0027"},{"line_number":90,"context_line":"        ceph_default: \"{{ [playbook_dir + \u0027/ceph-ansible/ceph_ansible_command.sh\u0027] }}\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    - name: save external ceph-ansible playbook command(s) to shell script(s)"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_49fbecbd","line":89,"updated":"2020-01-28 02:39:44.000000000","message":"I\u0027d move external_ as part of the prefix","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5a77a4e7af2f96da0caa4f3d073c5d92de4fb98","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    - name: set default facts for ceph_scripts list"},{"line_number":87,"context_line":"      set_fact:"},{"line_number":88,"context_line":"        ceph_prefix: \"{{ playbook_dir + \u0027/ceph-ansible/\u0027 }}\""},{"line_number":89,"context_line":"        ceph_suffix: \u0027_external_ceph_ansible_command.sh\u0027"},{"line_number":90,"context_line":"        ceph_default: \"{{ [playbook_dir + \u0027/ceph-ansible/ceph_ansible_command.sh\u0027] }}\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    - name: save external ceph-ansible playbook command(s) to shell script(s)"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_552132b4","line":89,"in_reply_to":"3fa7e38b_49fbecbd","updated":"2020-01-28 18:37:04.000000000","message":"Done","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"f5bb91cc303b7934598a1c43fe81ca926fde49f2","unresolved":false,"context_lines":[{"line_number":119,"context_line":"  failed_when: false"},{"line_number":120,"context_line":"  register: outputs"},{"line_number":121,"context_line":"  tags: run_ceph_ansible"},{"line_number":122,"context_line":"  when: outputs.rc is undefined or outputs.rc \u003d\u003d 0"},{"line_number":123,"context_line":"  loop: \"{{ ceph_scripts | default([playbook_dir + \u0027/ceph-ansible/ceph_ansible_command.sh\u0027]) }}\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"- name: search output of ceph-ansible run(s) non-zero return codes"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_b969a026","line":122,"updated":"2020-01-26 16:39:24.000000000","message":"If a ceph-ansible shell script execution fails it does not run the next script. Instead it drops to the next task which extracts debug information from stdout and stderr and then the following task displays it. An example of how this looks (with ansible colors) is in the image below. In the example the internal ceph install works but the first external ceph fails.\n\nhttps://www.dropbox.com/s/0j8xgf84t1ft2ep/multiceph_error_eg.png?dl\u003d0","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"5947e21120e2f9fc42472fa621120816061ede76","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables[0].split(\u0027 \u0027) }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_d6c41710","line":54,"updated":"2020-01-31 14:39:48.000000000","message":"I think we can fix this ... more on IRC","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"f74a5c8c4168d2b4d22c5ad119f1938db2ddbeb9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  set_fact:"},{"line_number":52,"context_line":"    calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":53,"context_line":"  when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":54,"context_line":"  loop: \"{{ ceph_ansible_environment_variables[0].split(\u0027 \u0027) }}\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"- name: do we need to keep looking for the ANSIBLE_LOG_PATH?"},{"line_number":57,"context_line":"  when: calling_ansible_log_path is undefined"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_54eec68a","line":54,"in_reply_to":"3fa7e38b_d6c41710","updated":"2020-02-03 18:57:30.000000000","message":"Done","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"4974c62dd6bb4e397ee4ba1a76a578a365fb55f9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"      set_fact:"},{"line_number":61,"context_line":"        calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":62,"context_line":"      when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":63,"context_line":"      loop: \"{{ calling_ansible_environment_variables }}\""},{"line_number":64,"context_line":"    - name: Set ANSIBLE_LOG_PATH to default"},{"line_number":65,"context_line":"      when: calling_ansible_log_path is undefined"},{"line_number":66,"context_line":"      set_fact:"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_56c4b294","line":63,"updated":"2020-01-30 19:35:04.000000000","message":"if calling_ansible_environment and ceph_ansible_environment are in the same format maybe we can loop through both of them in a single task and set the path once?","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"a4a29befe018440e7977b3c8ffb56046206bed23","unresolved":false,"context_lines":[{"line_number":60,"context_line":"      set_fact:"},{"line_number":61,"context_line":"        calling_ansible_log_path: \"{{ item | regex_replace(\u0027ANSIBLE_LOG_PATH\u003d\u0027, \u0027\u0027) }}\""},{"line_number":62,"context_line":"      when: item is match(\"ANSIBLE_LOG_PATH.*\")"},{"line_number":63,"context_line":"      loop: \"{{ calling_ansible_environment_variables }}\""},{"line_number":64,"context_line":"    - name: Set ANSIBLE_LOG_PATH to default"},{"line_number":65,"context_line":"      when: calling_ansible_log_path is undefined"},{"line_number":66,"context_line":"      set_fact:"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_30f9f64e","line":63,"in_reply_to":"3fa7e38b_56c4b294","updated":"2020-01-31 07:50:48.000000000","message":"made a similar comment see discussion there fyi https://review.opendev.org/#/c/702143/18/tripleo_ansible/roles/tripleo_ceph_run_ansible/tasks/main.yml@57","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a9be1951bc94ff235253e8d9810c6fd7026e9073","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        ceph_scripts: \"{{ ceph_scripts|default(ceph_default) + [ceph_prefix + item + ceph_suffix] }}\""},{"line_number":110,"context_line":"      loop: \"{{ ceph_external_multi_config | map(attribute\u003d\u0027cluster\u0027) | list }}\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- name: run {{ ceph_scripts|length|default(1) }} ceph-ansible playbook(s) (immediate log at {{ calling_ansible_log_path }})"},{"line_number":113,"context_line":"  # Needs become to be able to read the ssh private key"},{"line_number":114,"context_line":"  become: true"},{"line_number":115,"context_line":"  shell: \"{{ item }}\""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_8e98c367","line":112,"updated":"2020-01-31 21:59:13.000000000","message":"ends up fixing https://bugs.launchpad.net/tripleo/+bug/1861488","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"f74a5c8c4168d2b4d22c5ad119f1938db2ddbeb9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        ceph_scripts: \"{{ ceph_scripts|default(ceph_default) + [ceph_prefix + item + ceph_suffix] }}\""},{"line_number":110,"context_line":"      loop: \"{{ ceph_external_multi_config | map(attribute\u003d\u0027cluster\u0027) | list }}\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- name: run {{ ceph_scripts|length|default(1) }} ceph-ansible playbook(s) (immediate log at {{ calling_ansible_log_path }})"},{"line_number":113,"context_line":"  # Needs become to be able to read the ssh private key"},{"line_number":114,"context_line":"  become: true"},{"line_number":115,"context_line":"  shell: \"{{ item }}\""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_54932600","line":112,"in_reply_to":"3fa7e38b_8e98c367","updated":"2020-02-03 18:57:30.000000000","message":"updated commit message to reference the above","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"}],"tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/prepare.yml":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"31e06406ddeae4885ce2a1703be15a42455c7f79","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/{{ item.cluster }}_external_extra_vars.yml\""},{"line_number":60,"context_line":"        content: \"{{ item | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_69b34836","line":59,"updated":"2020-01-28 02:39:44.000000000","message":"can we use external_{{item.cluster}}_extra_vars so that it\u0027s easier to browse on filesystem?","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5a77a4e7af2f96da0caa4f3d073c5d92de4fb98","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/{{ item.cluster }}_external_extra_vars.yml\""},{"line_number":60,"context_line":"        content: \"{{ item | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_356b5654","line":59,"in_reply_to":"3fa7e38b_69b34836","updated":"2020-01-28 18:37:04.000000000","message":"Done","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"31e06406ddeae4885ce2a1703be15a42455c7f79","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        mon_client_hosts: \"{{ mon_client_hosts | default([]) + [ item ] }}\""},{"line_number":75,"context_line":"      with_inventory_hostnames:"},{"line_number":76,"context_line":"        - ceph_client"},{"line_number":77,"context_line":"        - ceph_mon"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    - name: generate ceph-ansible/inventory-external.ini for ceph_external_multi_config"},{"line_number":80,"context_line":"      # Build a new inventory where the collected hosts are only clients"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_494d2c3a","line":77,"updated":"2020-01-28 02:39:44.000000000","message":"I guess we could just sum up all roles initially in the [clients] section, not only client and mon, to make sure we\u0027re not missing \"clients\" regardless of how the services are distributed","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5a77a4e7af2f96da0caa4f3d073c5d92de4fb98","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        mon_client_hosts: \"{{ mon_client_hosts | default([]) + [ item ] }}\""},{"line_number":75,"context_line":"      with_inventory_hostnames:"},{"line_number":76,"context_line":"        - ceph_client"},{"line_number":77,"context_line":"        - ceph_mon"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    - name: generate ceph-ansible/inventory-external.ini for ceph_external_multi_config"},{"line_number":80,"context_line":"      # Build a new inventory where the collected hosts are only clients"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_bae2d5d1","line":77,"in_reply_to":"3fa7e38b_494d2c3a","updated":"2020-01-28 18:37:04.000000000","message":"Being an OSD alone isn\u0027t sufficient to get a client key. If we\u0027re dealing with an HCI node we\u0027re covered already since all HCI nodes include CephClient service.\n\nWe know external RGW deployments doesn\u0027t need the client key as they\u0027re acting like Swift clients.\n\nHowever, I\u0027m not sure about the MDSs group. However this feature is only for RBD.\n\nAlso, I\u0027m not sure how ansible\u0027s with_inventory_hostnames works if the group isn\u0027t there. In an RBD only deployment the inventory produced by tripleo-ansible-inventory does not include the ceph_rgw group.","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"31e06406ddeae4885ce2a1703be15a42455c7f79","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    - name: generate ceph-ansible/inventory-external.ini for ceph_external_multi_config"},{"line_number":80,"context_line":"      # Build a new inventory where the collected hosts are only clients"},{"line_number":81,"context_line":"      copy:"},{"line_number":82,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/inventory-external.ini\""},{"line_number":83,"context_line":"        content: |"},{"line_number":84,"context_line":"          [clients]"},{"line_number":85,"context_line":"          {% for host in mon_client_hosts|unique %}"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_c9391ca2","line":82,"updated":"2020-01-28 02:39:44.000000000","message":"this would be external-inventory.yaml","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a5a77a4e7af2f96da0caa4f3d073c5d92de4fb98","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    - name: generate ceph-ansible/inventory-external.ini for ceph_external_multi_config"},{"line_number":80,"context_line":"      # Build a new inventory where the collected hosts are only clients"},{"line_number":81,"context_line":"      copy:"},{"line_number":82,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/inventory-external.ini\""},{"line_number":83,"context_line":"        content: |"},{"line_number":84,"context_line":"          [clients]"},{"line_number":85,"context_line":"          {% for host in mon_client_hosts|unique %}"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_2ff1c964","line":82,"in_reply_to":"3fa7e38b_c9391ca2","updated":"2020-01-28 18:37:04.000000000","message":"Done","commit_id":"5653fe0cbcfffb07cf7fd251f936f51017f9600d"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"a4a29befe018440e7977b3c8ffb56046206bed23","unresolved":false,"context_lines":[{"line_number":80,"context_line":"      # Build a new inventory where the collected hosts are only clients"},{"line_number":81,"context_line":"      copy:"},{"line_number":82,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/external_inventory.ini\""},{"line_number":83,"context_line":"        content: |"},{"line_number":84,"context_line":"          [clients]"},{"line_number":85,"context_line":"          {% for host in mon_client_hosts|unique %}"},{"line_number":86,"context_line":"          {% if hostvars[host][\u0027ansible_ssh_user\u0027] is defined and hostvars[host][\u0027ansible_ssh_user\u0027]|length \u003e 0 %}"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_908d4adc","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":15},"updated":"2020-01-31 07:50:48.000000000","message":"is it worth moving that to a new j2 template that you render here instead of inline?","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"f74a5c8c4168d2b4d22c5ad119f1938db2ddbeb9","unresolved":false,"context_lines":[{"line_number":80,"context_line":"      # Build a new inventory where the collected hosts are only clients"},{"line_number":81,"context_line":"      copy:"},{"line_number":82,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/external_inventory.ini\""},{"line_number":83,"context_line":"        content: |"},{"line_number":84,"context_line":"          [clients]"},{"line_number":85,"context_line":"          {% for host in mon_client_hosts|unique %}"},{"line_number":86,"context_line":"          {% if hostvars[host][\u0027ansible_ssh_user\u0027] is defined and hostvars[host][\u0027ansible_ssh_user\u0027]|length \u003e 0 %}"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_94dafee3","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":15},"in_reply_to":"3fa7e38b_908d4adc","updated":"2020-02-03 18:57:30.000000000","message":"Done","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"4974c62dd6bb4e397ee4ba1a76a578a365fb55f9","unresolved":false,"context_lines":[{"line_number":89,"context_line":"          {{ hostvars[host][\u0027ansible_host\u0027] }}"},{"line_number":90,"context_line":"          {% endif %}"},{"line_number":91,"context_line":"          {% endfor %}"},{"line_number":92,"context_line":"          [mons]"},{"line_number":93,"context_line":"          [osds]"},{"line_number":94,"context_line":"          [rgws]"},{"line_number":95,"context_line":"          [mdss]"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_966eaac9","line":92,"updated":"2020-01-30 19:35:04.000000000","message":"not sure why we need to generate them all?","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":25402,"name":"Francesco Pantano","email":"fpantano@redhat.com","username":"fmount"},"change_message_id":"af14898fa9cbb0867fb50e3fbf191fef1fb63467","unresolved":false,"context_lines":[{"line_number":89,"context_line":"          {{ hostvars[host][\u0027ansible_host\u0027] }}"},{"line_number":90,"context_line":"          {% endif %}"},{"line_number":91,"context_line":"          {% endfor %}"},{"line_number":92,"context_line":"          [mons]"},{"line_number":93,"context_line":"          [osds]"},{"line_number":94,"context_line":"          [rgws]"},{"line_number":95,"context_line":"          [mdss]"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"3fa7e38b_c05bf15e","line":92,"in_reply_to":"3fa7e38b_966eaac9","updated":"2020-01-31 12:21:30.000000000","message":"It really depends on the ceph-ansible version; in some ceph-ansible versions (iirc rc \u003c\u003d 16), if no [grafana-server] is defined it fails. \nIn ceph-ansible it\u0027s solved by a \"|default(omit)\" which let the playbook being skipped, but this change is not included in the rdo ceph-ansible version [1].\nMaybe as a follow-up review that group could be removed if it\u0027s not necessary anymore.\n\n[1] http://logs.rdoproject.org/43/702143/20/openstack-check/tripleo-ci-rhel-8-scenario001-standalone-rdo/0963641/logs/undercloud/var/log/dnf.log","commit_id":"64f32e4c2e122001e2edf30a7eab68a68f971452"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"6132099ba07b10764b9d1eaf00652a696f60b59e","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/external_{{ item.cluster }}_extra_vars.yml\""},{"line_number":60,"context_line":"        content: \"{{ item | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":23,"id":"3fa7e38b_accb20a5","line":59,"updated":"2020-02-04 20:10:46.000000000","message":"This will fail if the user neglected to specify the cluster in their external multi-config, and boo on them. Is this the sort of thing that\u0027s worth validating?","commit_id":"23dbb5fedc2fb550d02d20589bf0f23f0a44063e"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"df24d59919c6b62c0d86281723100cb6f18dda38","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    - name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config"},{"line_number":58,"context_line":"      copy:"},{"line_number":59,"context_line":"        dest: \"{{ playbook_dir }}/ceph-ansible/external_{{ item.cluster }}_extra_vars.yml\""},{"line_number":60,"context_line":"        content: \"{{ item | default(\u0027\u0027) | to_nice_yaml }}\""},{"line_number":61,"context_line":"      loop: \"{{ ceph_external_multi_config }}\""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":23,"id":"1fa4df85_7c8f0623","line":59,"in_reply_to":"3fa7e38b_accb20a5","updated":"2020-02-28 13:53:49.000000000","message":"Yes, let\u0027s plan to validate that in the future.\n\n https://bugzilla.redhat.com/show_bug.cgi?id\u003d1808424","commit_id":"23dbb5fedc2fb550d02d20589bf0f23f0a44063e"}]}
