)]}'
{"ansible-role-requirements.yml":[{"author":{"_account_id":19805,"name":"Tom Cameron","email":"tomc603@gmail.com","username":"tomc603"},"change_message_id":"7219497084acce250d5a082f995077b969adcd08","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  version: master"},{"line_number":121,"context_line":"- name: unbound"},{"line_number":122,"context_line":"  scm: git"},{"line_number":123,"context_line":"  src: https://github.com/logan2211/ansible-unbound"},{"line_number":124,"context_line":"  version: master"},{"line_number":125,"context_line":"- name: resolvconf"},{"line_number":126,"context_line":"  scm: git"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1aa78d24_f356885a","line":123,"updated":"2016-07-12 20:21:20.000000000","message":"I don\u0027t have a particular problem with the git repo, since others also come from repos OSA doesn\u0027t control. I would like to see some tests added though, so we can have assurances that a particular SHA works as the maintainer expects.","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"99618bba605571c06ad274a73e96a006919efed8","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  version: master"},{"line_number":121,"context_line":"- name: unbound"},{"line_number":122,"context_line":"  scm: git"},{"line_number":123,"context_line":"  src: https://github.com/logan2211/ansible-unbound"},{"line_number":124,"context_line":"  version: master"},{"line_number":125,"context_line":"- name: resolvconf"},{"line_number":126,"context_line":"  scm: git"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bacf61ea_f7d32ed3","line":123,"in_reply_to":"1aa78d24_f356885a","updated":"2016-07-30 19:43:45.000000000","message":"Done","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"12c9ed6ea7902919552510cd719c8627c39c0773","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  scm: git"},{"line_number":123,"context_line":"  src: https://github.com/willshersystems/ansible-sshd"},{"line_number":124,"context_line":"  version: master"},{"line_number":125,"context_line":"- name: unbound"},{"line_number":126,"context_line":"  scm: git"},{"line_number":127,"context_line":"  src: https://github.com/logan2211/ansible-unbound"},{"line_number":128,"context_line":"  version: master"},{"line_number":129,"context_line":"- name: resolvconf"},{"line_number":130,"context_line":"  scm: git"},{"line_number":131,"context_line":"  src: https://github.com/logan2211/ansible-resolvconf"},{"line_number":132,"context_line":"  version: master"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_bed102fe","line":132,"range":{"start_line":125,"start_character":0,"end_line":132,"end_character":17},"updated":"2016-08-15 15:37:01.000000000","message":"There are no tags for these roles - please ensure that by Newton\u0027s release there are tags for the purpose of fixing the release to a tag.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"d07ad40759d0519b5600d2a2d8526cbb1f08d2e3","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  scm: git"},{"line_number":123,"context_line":"  src: https://github.com/willshersystems/ansible-sshd"},{"line_number":124,"context_line":"  version: master"},{"line_number":125,"context_line":"- name: unbound"},{"line_number":126,"context_line":"  scm: git"},{"line_number":127,"context_line":"  src: https://github.com/logan2211/ansible-unbound"},{"line_number":128,"context_line":"  version: master"},{"line_number":129,"context_line":"- name: resolvconf"},{"line_number":130,"context_line":"  scm: git"},{"line_number":131,"context_line":"  src: https://github.com/logan2211/ansible-resolvconf"},{"line_number":132,"context_line":"  version: master"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_42e04acd","line":132,"range":{"start_line":125,"start_character":0,"end_line":132,"end_character":17},"in_reply_to":"3ac371cc_bed102fe","updated":"2016-08-23 20:14:23.000000000","message":"Will do.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"}],"playbooks/inventory/env.d/unbound.yml":[{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"acab8180e06a330a709c863156bbe5cebed05894","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"component_skel:"},{"line_number":3,"context_line":"  unbound:"},{"line_number":4,"context_line":"    belongs_to:"},{"line_number":5,"context_line":"      - unbound_all"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"container_skel:"},{"line_number":8,"context_line":"  unbound_container:"},{"line_number":9,"context_line":"    belongs_to:"},{"line_number":10,"context_line":"      - shared-infra_containers"},{"line_number":11,"context_line":"    contains:"},{"line_number":12,"context_line":"      - unbound"},{"line_number":13,"context_line":"    properties:"},{"line_number":14,"context_line":"      service_name: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_74d5e241","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":27},"updated":"2016-08-15 18:10:18.000000000","message":"I would prefer the group be called unbound_dns or unbound-dns.\n\nJust \"unbound\" is pretty confusing, and I have never heard of it before this patch set.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"d07ad40759d0519b5600d2a2d8526cbb1f08d2e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"component_skel:"},{"line_number":3,"context_line":"  unbound:"},{"line_number":4,"context_line":"    belongs_to:"},{"line_number":5,"context_line":"      - unbound_all"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"container_skel:"},{"line_number":8,"context_line":"  unbound_container:"},{"line_number":9,"context_line":"    belongs_to:"},{"line_number":10,"context_line":"      - shared-infra_containers"},{"line_number":11,"context_line":"    contains:"},{"line_number":12,"context_line":"      - unbound"},{"line_number":13,"context_line":"    properties:"},{"line_number":14,"context_line":"      service_name: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_47bdfcd6","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":27},"in_reply_to":"1ac06dbe_00a95b90","updated":"2016-08-23 20:14:23.000000000","message":"Yes the physical skel is needed if we\u0027re moving this from a default service (shared-infra_containers) to an optional service (unbound_containers). I agree with that change and will push a new PS.\n\nThe unbound_dns group name I\u0027m not clear on. \"unbound\" is used here as the service name, the same way \"haproxy\", \"galera\", and \"memcached\" are used in other environment definitions.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"650252a88d7a61254397ae535731bf19e4e20e72","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"component_skel:"},{"line_number":3,"context_line":"  unbound:"},{"line_number":4,"context_line":"    belongs_to:"},{"line_number":5,"context_line":"      - unbound_all"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"container_skel:"},{"line_number":8,"context_line":"  unbound_container:"},{"line_number":9,"context_line":"    belongs_to:"},{"line_number":10,"context_line":"      - shared-infra_containers"},{"line_number":11,"context_line":"    contains:"},{"line_number":12,"context_line":"      - unbound"},{"line_number":13,"context_line":"    properties:"},{"line_number":14,"context_line":"      service_name: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_3c3a0e35","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":27},"in_reply_to":"1ac06dbe_2999326f","updated":"2016-08-25 13:47:41.000000000","message":"In this context it is a noun","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"6a0e83d1bc852fefa53e18f59e8ebd2772d492fb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"component_skel:"},{"line_number":3,"context_line":"  unbound:"},{"line_number":4,"context_line":"    belongs_to:"},{"line_number":5,"context_line":"      - unbound_all"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"container_skel:"},{"line_number":8,"context_line":"  unbound_container:"},{"line_number":9,"context_line":"    belongs_to:"},{"line_number":10,"context_line":"      - shared-infra_containers"},{"line_number":11,"context_line":"    contains:"},{"line_number":12,"context_line":"      - unbound"},{"line_number":13,"context_line":"    properties:"},{"line_number":14,"context_line":"      service_name: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_2999326f","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":27},"in_reply_to":"1ac06dbe_47bdfcd6","updated":"2016-08-25 13:36:14.000000000","message":"Unbound is an adjective.  Haproxy, galera, and memcached are not words.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f46a4a974727bd21550fca70d9f97eddea171885","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"component_skel:"},{"line_number":3,"context_line":"  unbound:"},{"line_number":4,"context_line":"    belongs_to:"},{"line_number":5,"context_line":"      - unbound_all"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"container_skel:"},{"line_number":8,"context_line":"  unbound_container:"},{"line_number":9,"context_line":"    belongs_to:"},{"line_number":10,"context_line":"      - shared-infra_containers"},{"line_number":11,"context_line":"    contains:"},{"line_number":12,"context_line":"      - unbound"},{"line_number":13,"context_line":"    properties:"},{"line_number":14,"context_line":"      service_name: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_00a95b90","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":27},"in_reply_to":"3ac371cc_74d5e241","updated":"2016-08-23 10:24:42.000000000","message":"Yeah, I think unbound_dns would be better. While unbound is quite well known, it does make an odd group name.\n\nThis should also have the physical skel bits:\n\nphysical_skel:\n  unbound_containers:\n    belongs_to:\n      - all_containers\n  unbound_hosts:\n    belongs_to:\n      - hosts","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"5ad843ba5b452d6156d15fd5dcd3b51b4332858c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa7ab95a_186d9998","updated":"2016-08-26 11:26:43.000000000","message":"Please add an example conf.d file and an aio conf.d file too. This makes it easy to test and easy to see how it\u0027s used. See https://github.com/openstack/openstack-ansible/tree/master/etc/openstack_deploy/conf.d for examples.","commit_id":"349adeddf31e62733ef6073354d46fe9b6a50ab7"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"a90863efa8ffc0708242c2d41ef60aa36e3a4636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa7ab95a_f9b9d42f","in_reply_to":"fa7ab95a_186d9998","updated":"2016-08-26 13:04:01.000000000","message":"Done","commit_id":"349adeddf31e62733ef6073354d46fe9b6a50ab7"}],"playbooks/inventory/group_vars/all.yml":[{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"acab8180e06a330a709c863156bbe5cebed05894","unresolved":false,"context_lines":[{"line_number":46,"context_line":"openstack_host_specific_kernel_modules:"},{"line_number":47,"context_line":"  - { name: \"ebtables\", pattern: \"CONFIG_BRIDGE_NF_EBTABLES\", group: \"network_hosts\" }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"## DNS resolution (resolvconf, unbound) options"},{"line_number":50,"context_line":"resolvconf_resolver_group: unbound"},{"line_number":51,"context_line":"openstack_host_manage_hosts_file: false"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"## Memcached options"},{"line_number":54,"context_line":"memcached_port: 11211"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_34188a1d","line":51,"range":{"start_line":49,"start_character":0,"end_line":51,"end_character":39},"updated":"2016-08-15 18:10:18.000000000","message":"I really think these should be opt-in, and not placed here.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"d07ad40759d0519b5600d2a2d8526cbb1f08d2e3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"openstack_host_specific_kernel_modules:"},{"line_number":47,"context_line":"  - { name: \"ebtables\", pattern: \"CONFIG_BRIDGE_NF_EBTABLES\", group: \"network_hosts\" }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"## DNS resolution (resolvconf, unbound) options"},{"line_number":50,"context_line":"resolvconf_resolver_group: unbound"},{"line_number":51,"context_line":"openstack_host_manage_hosts_file: false"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"## Memcached options"},{"line_number":54,"context_line":"memcached_port: 11211"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_a26bfe1c","line":51,"range":{"start_line":49,"start_character":0,"end_line":51,"end_character":39},"in_reply_to":"1ac06dbe_60492fb7","updated":"2016-08-23 20:14:23.000000000","message":"I think having it as an opt-in service as was mentioned in the environment file makes sense for a cycle, especially given how late this will merge. Then I can make this variable a conditional check against whether any unbound container hosts are defined.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f46a4a974727bd21550fca70d9f97eddea171885","unresolved":false,"context_lines":[{"line_number":46,"context_line":"openstack_host_specific_kernel_modules:"},{"line_number":47,"context_line":"  - { name: \"ebtables\", pattern: \"CONFIG_BRIDGE_NF_EBTABLES\", group: \"network_hosts\" }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"## DNS resolution (resolvconf, unbound) options"},{"line_number":50,"context_line":"resolvconf_resolver_group: unbound"},{"line_number":51,"context_line":"openstack_host_manage_hosts_file: false"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"## Memcached options"},{"line_number":54,"context_line":"memcached_port: 11211"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_60492fb7","line":51,"range":{"start_line":49,"start_character":0,"end_line":51,"end_character":39},"in_reply_to":"3ac371cc_34188a1d","updated":"2016-08-23 10:24:42.000000000","message":"As this should only be affected by hosts, perhaps this would be more appropriate in the hosts folder?\n\nAlso, openstack_host_manage_hosts_file can be set true or false by checking for the presence of the unbound host group being defined, and whether there are any hosts in it. This is similar to how we\u0027ve done a lot of other dynamic enablement/disablement here: https://github.com/openstack/openstack-ansible/blob/master/playbooks/inventory/group_vars/utility_all.yml#L27-L37\n\nThis will mean that unbound is only enabled if someone had added a host group to their environment. Considering the host group is part of the shared-infra containers group this will be enabled by default, but deployers can disable it if they want to use the old cludgy method.\n\nMichael - this is being enabled by default because this works better at scale and is far less cludgy than the current method of placing hosts files entries in /etc/hosts on all hosts. By changing the affinity of the unbound_containers in the shared infra host groups it will be possible to disable it though.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"}],"playbooks/inventory/group_vars/hosts.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"5ad843ba5b452d6156d15fd5dcd3b51b4332858c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"openstack_hosts_package_state: \"{{ package_state }}\""},{"line_number":19,"context_line":"security_package_state: \"{{ package_state }}\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"#Disable /etc/hosts management if unbound DNS resolution containers exist"},{"line_number":22,"context_line":"openstack_host_manage_hosts_file: \u003e"},{"line_number":23,"context_line":"  \"{{ groups[\u0027unbound_all\u0027] is defined and groups[\u0027unbound_all\u0027] | length \u003e 0 }}\""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa7ab95a_b8810d4d","line":23,"range":{"start_line":21,"start_character":0,"end_line":23,"end_character":81},"updated":"2016-08-26 11:26:43.000000000","message":"If I read this correctly, this will result in true if unbound containers exist. I don\u0027t think that\u0027s what you meant to do?","commit_id":"349adeddf31e62733ef6073354d46fe9b6a50ab7"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"a90863efa8ffc0708242c2d41ef60aa36e3a4636","unresolved":false,"context_lines":[{"line_number":18,"context_line":"openstack_hosts_package_state: \"{{ package_state }}\""},{"line_number":19,"context_line":"security_package_state: \"{{ package_state }}\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"#Disable /etc/hosts management if unbound DNS resolution containers exist"},{"line_number":22,"context_line":"openstack_host_manage_hosts_file: \u003e"},{"line_number":23,"context_line":"  \"{{ groups[\u0027unbound_all\u0027] is defined and groups[\u0027unbound_all\u0027] | length \u003e 0 }}\""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa7ab95a_99460822","line":23,"range":{"start_line":21,"start_character":0,"end_line":23,"end_character":81},"in_reply_to":"fa7ab95a_b8810d4d","updated":"2016-08-26 13:04:01.000000000","message":"Done","commit_id":"349adeddf31e62733ef6073354d46fe9b6a50ab7"}],"playbooks/setup-infrastructure.yml":[{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"acab8180e06a330a709c863156bbe5cebed05894","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- include: unbound-install.yml"},{"line_number":17,"context_line":"- include: haproxy-install.yml"},{"line_number":18,"context_line":"- include: memcached-install.yml"},{"line_number":19,"context_line":"- include: repo-install.yml"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_09261bce","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":30},"updated":"2016-08-15 18:10:18.000000000","message":"I\u0027d prefer this not be added by default","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f46a4a974727bd21550fca70d9f97eddea171885","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- include: unbound-install.yml"},{"line_number":17,"context_line":"- include: haproxy-install.yml"},{"line_number":18,"context_line":"- include: memcached-install.yml"},{"line_number":19,"context_line":"- include: repo-install.yml"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_60a5af45","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":30},"in_reply_to":"3ac371cc_09261bce","updated":"2016-08-23 10:24:42.000000000","message":"Adding it here makes no difference if there are no hosts in the host group. This is the same as adding the magnum/ironic/etc playbooks into setup-openstack.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"5ad843ba5b452d6156d15fd5dcd3b51b4332858c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa7ab95a_5804817d","updated":"2016-08-26 11:26:43.000000000","message":"Please add a releasenote announcing the new feature and how to use it. on a broad level. For example:\n\nfeatures:\n  - Support has been added to allow the deployment of the unbound\n    DNS service in containers as an optional replacement for the\n    previously implemented /etc/hosts management of host names.\n    To make use of this service, add the host group\n    ``unbound_hosts`` to the environment.","commit_id":"349adeddf31e62733ef6073354d46fe9b6a50ab7"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"a90863efa8ffc0708242c2d41ef60aa36e3a4636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa7ab95a_5487e560","in_reply_to":"fa7ab95a_5804817d","updated":"2016-08-26 13:04:01.000000000","message":"Done","commit_id":"349adeddf31e62733ef6073354d46fe9b6a50ab7"}],"playbooks/unbound-install.yml":[{"author":{"_account_id":19805,"name":"Tom Cameron","email":"tomc603@gmail.com","username":"tomc603"},"change_message_id":"7219497084acce250d5a082f995077b969adcd08","unresolved":false,"context_lines":[{"line_number":58,"context_line":"          {% endif -%}"},{"line_number":59,"context_line":"          {% endfor -%}"},{"line_number":60,"context_line":"          {{ _var }}"},{"line_number":61,"context_line":"    - name: Apply resolver sorting"},{"line_number":62,"context_line":"      set_fact:"},{"line_number":63,"context_line":"        resolver_list: \u003e"},{"line_number":64,"context_line":"          {% set _var \u003d [] -%}"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1aa78d24_7cbb80c4","line":61,"updated":"2016-07-12 20:21:20.000000000","message":"This section should really have some description around it so future maintainers will understand the intent. It appears to create a list of dicts containing a resolver address and a priority value, which is then used to populate /etc/resolv.conf in a later task, assigning physical host(s) a higher priority.","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"99618bba605571c06ad274a73e96a006919efed8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"          {% endif -%}"},{"line_number":59,"context_line":"          {% endfor -%}"},{"line_number":60,"context_line":"          {{ _var }}"},{"line_number":61,"context_line":"    - name: Apply resolver sorting"},{"line_number":62,"context_line":"      set_fact:"},{"line_number":63,"context_line":"        resolver_list: \u003e"},{"line_number":64,"context_line":"          {% set _var \u003d [] -%}"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bacf61ea_57dddade","line":61,"in_reply_to":"1aa78d24_7cbb80c4","updated":"2016-07-30 19:43:45.000000000","message":"Done","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"8511290914b3c99866911737d03e2bed967df4b6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"          {% endif -%}"},{"line_number":59,"context_line":"          {% endfor -%}"},{"line_number":60,"context_line":"          {{ _var }}"},{"line_number":61,"context_line":"    - name: Apply resolver sorting"},{"line_number":62,"context_line":"      set_fact:"},{"line_number":63,"context_line":"        resolver_list: \u003e"},{"line_number":64,"context_line":"          {% set _var \u003d [] -%}"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"fad55976_8555f11e","line":61,"in_reply_to":"1aa78d24_7cbb80c4","updated":"2016-07-15 18:22:55.000000000","message":"I will clarify with comments in the next commit, but you are mostly correct about what this does. A detailed description:\n\nWhen deploying resolvconf to hosts that do not contain an unbound container (ie compute_hosts), we don\u0027t care about the order of the resolv.conf entries and we use rotate to distribute the queries.\n\nThis task comes into play when we are dealing with controllers that have unbound containers collocated with other control infrastructure. We don\u0027t want to rotate there, because the second you lose one unbound container it causes all sorts of mayhem on the control infrastructure. What this does is set an affinity based on the physical_host of the container we\u0027re deploying to. If the container receiving resolv.conf shares a physical_host with one of our unbound containers, we don\u0027t want to rotate, and we want that same-host unbound container at the top of the resolv.conf. That way if an unbound container goes off, we get predictably slow DNS resolution on one host worth of containers vs. unpredictably slow DNS across the entire control infrastructure.\n\nI built this task based on the unfortunate operational experience of losing an unbound container with rotate enabled on all containers and no particular resolv.conf ordering.","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":19805,"name":"Tom Cameron","email":"tomc603@gmail.com","username":"tomc603"},"change_message_id":"7219497084acce250d5a082f995077b969adcd08","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      when:"},{"line_number":76,"context_line":"        - physical_host is defined"},{"line_number":77,"context_line":"        - physical_host in unbound_physical_hosts"},{"line_number":78,"context_line":"    - name: Set resolver IP list fact"},{"line_number":79,"context_line":"      set_fact:"},{"line_number":80,"context_line":"        resolvconf_resolver_ips: \"{{ resolver_list | sort(reverse\u003dtrue, attribute\u003d\u0027priority\u0027) | map(attribute\u003d\u0027host\u0027) | list }}\""},{"line_number":81,"context_line":"        resolvconf_options:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1aa78d24_9cc90c29","line":78,"updated":"2016-07-12 20:21:20.000000000","message":"We could condense these two tasks. Possibly register a value if we add  a physical host resolver, then make \"rotate\" conditional on that register.\n\nWe should also explain why rotate isn\u0027t used when physical_host isn\u0027t a resolver, though there are some corner cases where this might bite us (upgrading resolver on physical_host would cause resolution delays/timeouts).","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"8511290914b3c99866911737d03e2bed967df4b6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      when:"},{"line_number":76,"context_line":"        - physical_host is defined"},{"line_number":77,"context_line":"        - physical_host in unbound_physical_hosts"},{"line_number":78,"context_line":"    - name: Set resolver IP list fact"},{"line_number":79,"context_line":"      set_fact:"},{"line_number":80,"context_line":"        resolvconf_resolver_ips: \"{{ resolver_list | sort(reverse\u003dtrue, attribute\u003d\u0027priority\u0027) | map(attribute\u003d\u0027host\u0027) | list }}\""},{"line_number":81,"context_line":"        resolvconf_options:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"fad55976_000e0f34","line":78,"in_reply_to":"1aa78d24_9cc90c29","updated":"2016-07-15 18:22:55.000000000","message":"I will look at combining these tasks.","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"99618bba605571c06ad274a73e96a006919efed8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      when:"},{"line_number":76,"context_line":"        - physical_host is defined"},{"line_number":77,"context_line":"        - physical_host in unbound_physical_hosts"},{"line_number":78,"context_line":"    - name: Set resolver IP list fact"},{"line_number":79,"context_line":"      set_fact:"},{"line_number":80,"context_line":"        resolvconf_resolver_ips: \"{{ resolver_list | sort(reverse\u003dtrue, attribute\u003d\u0027priority\u0027) | map(attribute\u003d\u0027host\u0027) | list }}\""},{"line_number":81,"context_line":"        resolvconf_options:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bacf61ea_979112f4","line":78,"in_reply_to":"1aa78d24_9cc90c29","updated":"2016-07-30 19:43:45.000000000","message":"Still looking into this but at first glance I do not see an easy way to combine these tasks. The resolvconf_resolver_ips should not be set at all if no affinity is being used, so there are several things in motion depending on whether affinity or rotate is being used. When affinity is not defined using a static sorted list of resolvers that is generated here, the \u0027unbound\u0027 group is used instead (via resolvconf_resolver_group).","commit_id":"892676573eeca01339584af82c05dc83c7fea77c"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"12c9ed6ea7902919552510cd719c8627c39c0773","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3ac371cc_1ea016f4","updated":"2016-08-15 15:37:01.000000000","message":"Please add the license boilderplate to the top of this file.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"12c9ed6ea7902919552510cd719c8627c39c0773","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  max_fail_percentage: 20"},{"line_number":8,"context_line":"  user: root"},{"line_number":9,"context_line":"  pre_tasks:"},{"line_number":10,"context_line":"    - name: Use the lxc-openstack aa profile"},{"line_number":11,"context_line":"      lxc_container:"},{"line_number":12,"context_line":"        name: \"{{ container_name }}\""},{"line_number":13,"context_line":"        container_config:"},{"line_number":14,"context_line":"          - \"lxc.aa_profile\u003dlxc-openstack\""},{"line_number":15,"context_line":"      delegate_to: \"{{ physical_host }}\""},{"line_number":16,"context_line":"      when: not is_metal | bool"},{"line_number":17,"context_line":"      register: container_config"},{"line_number":18,"context_line":"      tags:"},{"line_number":19,"context_line":"        - lxc-aa-profile"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    - name: Wait for container ssh"},{"line_number":22,"context_line":"      wait_for:"},{"line_number":23,"context_line":"        port: \"22\""},{"line_number":24,"context_line":"        delay: \"{{ ssh_delay }}\""},{"line_number":25,"context_line":"        search_regex: \"OpenSSH\""},{"line_number":26,"context_line":"        host: \"{{ ansible_ssh_host }}\""},{"line_number":27,"context_line":"      delegate_to: \"{{ physical_host }}\""},{"line_number":28,"context_line":"      when: container_config is defined and container_config | changed"},{"line_number":29,"context_line":"      register: ssh_wait_check"},{"line_number":30,"context_line":"      until: ssh_wait_check | success"},{"line_number":31,"context_line":"      retries: 3"},{"line_number":32,"context_line":"      tags:"},{"line_number":33,"context_line":"        - ssh-wait"},{"line_number":34,"context_line":"  roles:"},{"line_number":35,"context_line":"    - role: \"unbound\""},{"line_number":36,"context_line":"      tags:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_de9cbe6b","line":33,"range":{"start_line":10,"start_character":0,"end_line":33,"end_character":18},"updated":"2016-08-15 15:37:01.000000000","message":"This piece shouldn\u0027t be necessary any more as it is inherited from https://github.com/openstack/openstack-ansible/blob/master/playbooks/inventory/group_vars/all_containers.yml#L16-L19 and executed in the lxc-container-create.yml role.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"acab8180e06a330a709c863156bbe5cebed05894","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  vars:"},{"line_number":42,"context_line":"    is_metal: \"{{ properties.is_metal|default(false) }}\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"- name: Install unbound DNS resolver client configurations"},{"line_number":45,"context_line":"  hosts:"},{"line_number":46,"context_line":"    - \"!unbound\""},{"line_number":47,"context_line":"    - \"{{ unbound_host_group|default(\u0027hosts\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_f4f6f2d5","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":58},"updated":"2016-08-15 18:10:18.000000000","message":"This section is really confusing; too much fact setting.  I would like to see this condensed in some way.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f46a4a974727bd21550fca70d9f97eddea171885","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  vars:"},{"line_number":42,"context_line":"    is_metal: \"{{ properties.is_metal|default(false) }}\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"- name: Install unbound DNS resolver client configurations"},{"line_number":45,"context_line":"  hosts:"},{"line_number":46,"context_line":"    - \"!unbound\""},{"line_number":47,"context_line":"    - \"{{ unbound_host_group|default(\u0027hosts\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_c032a30f","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":58},"in_reply_to":"3ac371cc_f4f6f2d5","updated":"2016-08-23 10:24:42.000000000","message":"Ah, I see what\u0027s going on here. The fact setting can\u0027t really be done in another way because it\u0027s traversing the inventory.\n\nThe purpose of these is to ensure that the name server for the container is first set to the unbound container on the same host, then the other unbound containers. This is most efficient.\n\nIf there\u0027s any simplifying to do here, it can be done in a subsequent patch.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"acab8180e06a330a709c863156bbe5cebed05894","unresolved":false,"context_lines":[{"line_number":94,"context_line":"          - \u0027timeout:1\u0027"},{"line_number":95,"context_line":"          - \u0027rotate\u0027"},{"line_number":96,"context_line":"      when: resolver_list is not defined"},{"line_number":97,"context_line":"  roles:"},{"line_number":98,"context_line":"    - role: \"resolvconf\""},{"line_number":99,"context_line":"      tags:"},{"line_number":100,"context_line":"        - unbound_client"},{"line_number":101,"context_line":"  vars:"},{"line_number":102,"context_line":"    resolvconf_resolver_group: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_14b0ee42","line":100,"range":{"start_line":97,"start_character":0,"end_line":100,"end_character":24},"updated":"2016-08-15 18:10:18.000000000","message":"Does this really need it\u0027s own role?\n\nI would rather see this be part of the unbound role.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"d07ad40759d0519b5600d2a2d8526cbb1f08d2e3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"          - \u0027timeout:1\u0027"},{"line_number":95,"context_line":"          - \u0027rotate\u0027"},{"line_number":96,"context_line":"      when: resolver_list is not defined"},{"line_number":97,"context_line":"  roles:"},{"line_number":98,"context_line":"    - role: \"resolvconf\""},{"line_number":99,"context_line":"      tags:"},{"line_number":100,"context_line":"        - unbound_client"},{"line_number":101,"context_line":"  vars:"},{"line_number":102,"context_line":"    resolvconf_resolver_group: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_767707a0","line":100,"range":{"start_line":97,"start_character":0,"end_line":100,"end_character":24},"in_reply_to":"1ac06dbe_63ec99f3","updated":"2016-08-23 20:14:23.000000000","message":"As Tom mentioned earlier in the review, this role can be expanded to cover more resolver client configurations such as systemd resolved, etc. resolvconf is a starting point, but this is really meant to be a \"DNS client\" role. Think of it as the \"galera_client\" to the \"galera_server\" (unbound) role.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f46a4a974727bd21550fca70d9f97eddea171885","unresolved":false,"context_lines":[{"line_number":94,"context_line":"          - \u0027timeout:1\u0027"},{"line_number":95,"context_line":"          - \u0027rotate\u0027"},{"line_number":96,"context_line":"      when: resolver_list is not defined"},{"line_number":97,"context_line":"  roles:"},{"line_number":98,"context_line":"    - role: \"resolvconf\""},{"line_number":99,"context_line":"      tags:"},{"line_number":100,"context_line":"        - unbound_client"},{"line_number":101,"context_line":"  vars:"},{"line_number":102,"context_line":"    resolvconf_resolver_group: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_63ec99f3","line":100,"range":{"start_line":97,"start_character":0,"end_line":100,"end_character":24},"in_reply_to":"3ac371cc_14b0ee42","updated":"2016-08-23 10:24:42.000000000","message":"Having this as a role on its own doesn\u0027t really add much overhead - also in the spirit of Ansible each role does one thing. The unbound role installs and configures the unbound service, whereas the resolvconf role installs and configures resolvconf. I think this is perfectly appropriate.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f46a4a974727bd21550fca70d9f97eddea171885","unresolved":false,"context_lines":[{"line_number":99,"context_line":"      tags:"},{"line_number":100,"context_line":"        - unbound_client"},{"line_number":101,"context_line":"  vars:"},{"line_number":102,"context_line":"    resolvconf_resolver_group: unbound"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1ac06dbe_200bb72b","line":102,"range":{"start_line":102,"start_character":4,"end_line":102,"end_character":38},"updated":"2016-08-23 10:24:42.000000000","message":"This is already set in the group_vars so it shouldn\u0027t need to be set here too.","commit_id":"8e611805aa0cfded4195312d320a9c5768a4b1e1"},{"author":{"_account_id":19814,"name":"Travis Truman (automagically)","email":"travis_truman@cable.comcast.com","username":"trumant"},"change_message_id":"133a414eff96710ccab6ec49c9cbcd04e7fe5714","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  hosts:"},{"line_number":18,"context_line":"    - unbound_all"},{"line_number":19,"context_line":"  gather_facts: \"{{ gather_facts | default(True) }}\""},{"line_number":20,"context_line":"  max_fail_percentage: 20"},{"line_number":21,"context_line":"  user: root"},{"line_number":22,"context_line":"  roles:"},{"line_number":23,"context_line":"    - role: \"unbound\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_345ee1e9","line":20,"updated":"2016-08-26 13:11:08.000000000","message":"Do you really want to allow failure here?","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"6478447438be06d42b59e9c98928d7f8c7b5391a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  hosts:"},{"line_number":18,"context_line":"    - unbound_all"},{"line_number":19,"context_line":"  gather_facts: \"{{ gather_facts | default(True) }}\""},{"line_number":20,"context_line":"  max_fail_percentage: 20"},{"line_number":21,"context_line":"  user: root"},{"line_number":22,"context_line":"  roles:"},{"line_number":23,"context_line":"    - role: \"unbound\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_20c85455","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":21},"updated":"2016-08-26 14:33:12.000000000","message":"I agree w/ travis here, I think this line should be removed or set to 0.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"cf9e0f4a69d7213b9b852a29c8decee41a23eb16","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  hosts:"},{"line_number":18,"context_line":"    - unbound_all"},{"line_number":19,"context_line":"  gather_facts: \"{{ gather_facts | default(True) }}\""},{"line_number":20,"context_line":"  max_fail_percentage: 20"},{"line_number":21,"context_line":"  user: root"},{"line_number":22,"context_line":"  roles:"},{"line_number":23,"context_line":"    - role: \"unbound\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_bb0f39e0","line":20,"in_reply_to":"fa7ab95a_345ee1e9","updated":"2016-08-26 14:40:07.000000000","message":"See my comment regarding max_fail_percentage below but I think this controls whether the play execution will abort mid-run if the failure threshold is reached. So the play should still fail (rc !\u003d 0) if a host fails, regardless of this setting, but will at least complete the playbook run across the non-failed hosts if the threshold has not been reached.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"631c7fba98bff1c8997ea5f225bfcd7ddcf5dd83","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  hosts:"},{"line_number":18,"context_line":"    - unbound_all"},{"line_number":19,"context_line":"  gather_facts: \"{{ gather_facts | default(True) }}\""},{"line_number":20,"context_line":"  max_fail_percentage: 20"},{"line_number":21,"context_line":"  user: root"},{"line_number":22,"context_line":"  roles:"},{"line_number":23,"context_line":"    - role: \"unbound\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_7444e973","line":20,"in_reply_to":"fa7ab95a_345ee1e9","updated":"2016-08-26 13:15:03.000000000","message":"This is fairly standard for the infra stuff. It means for 3 infra hosts any failure will stop the play - but if you have more than 3 then one can fail and it will continue.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":19814,"name":"Travis Truman (automagically)","email":"travis_truman@cable.comcast.com","username":"trumant"},"change_message_id":"af890bc745a3912b2584fd6879fd5554c310e149","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  hosts:"},{"line_number":18,"context_line":"    - unbound_all"},{"line_number":19,"context_line":"  gather_facts: \"{{ gather_facts | default(True) }}\""},{"line_number":20,"context_line":"  max_fail_percentage: 20"},{"line_number":21,"context_line":"  user: root"},{"line_number":22,"context_line":"  roles:"},{"line_number":23,"context_line":"    - role: \"unbound\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_8f031673","line":20,"in_reply_to":"fa7ab95a_7444e973","updated":"2016-08-26 13:24:01.000000000","message":"Sure, but given the way the resolution weighting is done, it looks like if one of the hosts fails, we\u0027ll end up with some very bizarre/undesired configuration.\n\nIn general, if tasks fail, I see no reason why the error shouldn\u0027t stop the execution of the play immediately.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"ea333fef40ab53483c6d02b8b12327c439a4620c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  hosts:"},{"line_number":18,"context_line":"    - unbound_all"},{"line_number":19,"context_line":"  gather_facts: \"{{ gather_facts | default(True) }}\""},{"line_number":20,"context_line":"  max_fail_percentage: 20"},{"line_number":21,"context_line":"  user: root"},{"line_number":22,"context_line":"  roles:"},{"line_number":23,"context_line":"    - role: \"unbound\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_2f792afd","line":20,"in_reply_to":"fa7ab95a_8f031673","updated":"2016-08-26 13:25:16.000000000","message":"I\u0027m happy with that. :)","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":19814,"name":"Travis Truman (automagically)","email":"travis_truman@cable.comcast.com","username":"trumant"},"change_message_id":"133a414eff96710ccab6ec49c9cbcd04e7fe5714","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    - role: \"unbound\""},{"line_number":24,"context_line":"      tags:"},{"line_number":25,"context_line":"        - unbound_server"},{"line_number":26,"context_line":"    - role: \"system_crontab_coordination\""},{"line_number":27,"context_line":"      tags:"},{"line_number":28,"context_line":"        - \"system-crontab-coordination\""},{"line_number":29,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_f40399b6","line":26,"updated":"2016-08-26 13:11:08.000000000","message":"How is this role interacting with/required for the unbound install?","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"cf9e0f4a69d7213b9b852a29c8decee41a23eb16","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    - role: \"unbound\""},{"line_number":24,"context_line":"      tags:"},{"line_number":25,"context_line":"        - unbound_server"},{"line_number":26,"context_line":"    - role: \"system_crontab_coordination\""},{"line_number":27,"context_line":"      tags:"},{"line_number":28,"context_line":"        - \"system-crontab-coordination\""},{"line_number":29,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_20d934f4","line":26,"in_reply_to":"fa7ab95a_1491ddf0","updated":"2016-08-26 14:40:07.000000000","message":"Yeah I have seen it used across all of the container setup playbooks. I don\u0027t see any unbound specific crons that are deployed by the apt package or role but the crontab coordination role would at least randomize the default system crons as it does in the other containers.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"631c7fba98bff1c8997ea5f225bfcd7ddcf5dd83","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    - role: \"unbound\""},{"line_number":24,"context_line":"      tags:"},{"line_number":25,"context_line":"        - unbound_server"},{"line_number":26,"context_line":"    - role: \"system_crontab_coordination\""},{"line_number":27,"context_line":"      tags:"},{"line_number":28,"context_line":"        - \"system-crontab-coordination\""},{"line_number":29,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_1491ddf0","line":26,"in_reply_to":"fa7ab95a_f40399b6","updated":"2016-08-26 13:15:03.000000000","message":"IIRC the role randomises the timing of standard cron jobs so that the host isn\u0027t hit with all of them at the same time. At least that was the intent I think. I have no idea how it works or what it really does.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":19814,"name":"Travis Truman (automagically)","email":"travis_truman@cable.comcast.com","username":"trumant"},"change_message_id":"133a414eff96710ccab6ec49c9cbcd04e7fe5714","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  hosts:"},{"line_number":34,"context_line":"    - \"!unbound_all\""},{"line_number":35,"context_line":"    - all"},{"line_number":36,"context_line":"  max_fail_percentage: 20"},{"line_number":37,"context_line":"  user: root"},{"line_number":38,"context_line":"  pre_tasks:"},{"line_number":39,"context_line":"    #gather a list of physical_hosts containing unbound containers"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_1418fd1c","line":36,"updated":"2016-08-26 13:11:08.000000000","message":"Again, do we really want to allow failure here? Seems like we\u0027d want all the hosts to be configured and know if they aren\u0027t","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"6478447438be06d42b59e9c98928d7f8c7b5391a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  hosts:"},{"line_number":34,"context_line":"    - \"!unbound_all\""},{"line_number":35,"context_line":"    - all"},{"line_number":36,"context_line":"  max_fail_percentage: 20"},{"line_number":37,"context_line":"  user: root"},{"line_number":38,"context_line":"  pre_tasks:"},{"line_number":39,"context_line":"    #gather a list of physical_hosts containing unbound containers"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_60f09c91","line":36,"range":{"start_line":36,"start_character":2,"end_line":36,"end_character":21},"updated":"2016-08-26 14:33:12.000000000","message":"being that this is setting up DNS for the stack I think this should be removed. A percentage of failure in the other roles / playbooks doesn\u0027t have the impact that this could.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f4d5fc629bfb38bd550af1d2e0c2207874dd7354","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  hosts:"},{"line_number":34,"context_line":"    - \"!unbound_all\""},{"line_number":35,"context_line":"    - all"},{"line_number":36,"context_line":"  max_fail_percentage: 20"},{"line_number":37,"context_line":"  user: root"},{"line_number":38,"context_line":"  pre_tasks:"},{"line_number":39,"context_line":"    #gather a list of physical_hosts containing unbound containers"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_8f5cf626","line":36,"in_reply_to":"fa7ab95a_1418fd1c","updated":"2016-08-26 13:17:26.000000000","message":"Not sure if we want to change this - this value is set for the openstack_hosts playbook too: https://github.com/openstack/openstack-ansible/blob/master/playbooks/openstack-hosts-setup.yml#L19","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"cf9e0f4a69d7213b9b852a29c8decee41a23eb16","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  hosts:"},{"line_number":34,"context_line":"    - \"!unbound_all\""},{"line_number":35,"context_line":"    - all"},{"line_number":36,"context_line":"  max_fail_percentage: 20"},{"line_number":37,"context_line":"  user: root"},{"line_number":38,"context_line":"  pre_tasks:"},{"line_number":39,"context_line":"    #gather a list of physical_hosts containing unbound containers"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_bb573901","line":36,"in_reply_to":"fa7ab95a_8f5cf626","updated":"2016-08-26 14:40:07.000000000","message":"Since the client configuration is something host specific this should almost be a 100% max fail percentage. I believe in that case failed hosts will still fail the play (exit code !\u003d 0) at the end but will still allow the play to complete. If I am understanding max_fail_percentage correctly it is for aborting the play mid-run, which I can\u0027t think of a good reason to do on the client config side.","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":19814,"name":"Travis Truman (automagically)","email":"travis_truman@cable.comcast.com","username":"trumant"},"change_message_id":"133a414eff96710ccab6ec49c9cbcd04e7fe5714","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        - unbound_client"},{"line_number":94,"context_line":"  vars:"},{"line_number":95,"context_line":"    #Only run the resolvconf role when DNS containers are deployed to the env."},{"line_number":96,"context_line":"    resolvconf_enabled: \"{{ True if groups[\u0027unbound_all\u0027] is defined and groups[\u0027unbound_all\u0027] | length \u003e 0 else False }}\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_94b5edce","line":96,"updated":"2016-08-26 13:11:08.000000000","message":"Can\u0027t this just be: {{ groups[\u0027unbound_all\u0027] is defined and groups[\u0027unbound_all\u0027] | length \u003e 0 }}","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"cf9e0f4a69d7213b9b852a29c8decee41a23eb16","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        - unbound_client"},{"line_number":94,"context_line":"  vars:"},{"line_number":95,"context_line":"    #Only run the resolvconf role when DNS containers are deployed to the env."},{"line_number":96,"context_line":"    resolvconf_enabled: \"{{ True if groups[\u0027unbound_all\u0027] is defined and groups[\u0027unbound_all\u0027] | length \u003e 0 else False }}\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_fb41c13a","line":96,"in_reply_to":"fa7ab95a_94b5edce","updated":"2016-08-26 14:40:07.000000000","message":"Done","commit_id":"6ddc2ab8c5ab15bfe880056e16d74f23e5c9d16c"}]}
