)]}'
{"playbooks/roles/haproxy_server/tasks/haproxy_pre_install.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"02032646fcf5414faec53b9a938df906696253d6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  tags:"},{"line_number":65,"context_line":"    - haproxy-apt-keys"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"- name: Drop haproxy repo pin"},{"line_number":68,"context_line":"  template:"},{"line_number":69,"context_line":"    src: \"haproxy_pin.pref.j2\""},{"line_number":70,"context_line":"    dest: \"/etc/apt/preferences.d/haproxy_pin.pref\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ba3cc151_19f20d9b","line":67,"updated":"2015-07-07 09:06:30.000000000","message":"Rather re-use the apt_package_pinning role for this.","commit_id":"57e33c000f803db1308ea5bff5dbe4b3ae098eae"},{"author":{"_account_id":12606,"name":"Miguel Grinberg","email":"miguel.grinberg@gmail.com","username":"miguelgrinberg"},"change_message_id":"683f558432b703b8c2fc7c71386a1edacd4a678c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  tags:"},{"line_number":65,"context_line":"    - haproxy-apt-keys"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"- name: Drop haproxy repo pin"},{"line_number":68,"context_line":"  template:"},{"line_number":69,"context_line":"    src: \"haproxy_pin.pref.j2\""},{"line_number":70,"context_line":"    dest: \"/etc/apt/preferences.d/haproxy_pin.pref\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ba3cc151_b2bf4fa9","line":67,"in_reply_to":"ba3cc151_19f20d9b","updated":"2015-07-07 23:07:36.000000000","message":"Maybe I don\u0027t understand this, but it seems apt_package_pinning is for the users to install their custom pins, as it is defined in user_variables.yml.\n\nI think thie haproxy pin needs to be issued regardless of what the user does, since going to the haproxy pkg in the official repo would cause problems.\n\nI based it on the galera pinning, which has similar requirements. Maybe we should look into extended the pinning role to support internal pins as well as those from the user?","commit_id":"57e33c000f803db1308ea5bff5dbe4b3ae098eae"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"2700423c9d72fff0df290edce322d19b0ae4ee80","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  tags:"},{"line_number":65,"context_line":"    - haproxy-apt-keys"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"- name: Drop haproxy repo pin"},{"line_number":68,"context_line":"  template:"},{"line_number":69,"context_line":"    src: \"haproxy_pin.pref.j2\""},{"line_number":70,"context_line":"    dest: \"/etc/apt/preferences.d/haproxy_pin.pref\""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ba3cc151_35ef86b2","line":67,"in_reply_to":"ba3cc151_b2bf4fa9","updated":"2015-07-08 14:58:47.000000000","message":"My apologies - I thought that the Galera pin was done using that role - I see now that it\u0027s not the case. Continuing the same pattern as the Galera model makes sense then.","commit_id":"57e33c000f803db1308ea5bff5dbe4b3ae098eae"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"68fd95badef80d847d9dbf2954c03b3393694cf9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"  tags:"},{"line_number":75,"context_line":"    - haproxy-repo-pin"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"- name: Add haproxy repo(s)"},{"line_number":78,"context_line":"  apt_repository:"},{"line_number":79,"context_line":"    repo: \"{{ haproxy_apt_repo.repo }}\""},{"line_number":80,"context_line":"    state: \"{{ haproxy_apt_repo.state }}\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_3a3c0a92","line":77,"updated":"2015-07-09 16:20:30.000000000","message":"I\u0027d prefer to only add this repo if it\u0027s needed - otherwise we\u0027ll end up with gating issues due to the unreliable ppa like we had with the rsyslog ppa.","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"}],"playbooks/roles/haproxy_server/tasks/haproxy_ssl_key_create.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"571e52e0bf8bb4a6e942498ec61c8528312eba95","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    dest: \"{{ haproxy_ssl_cert }}\""},{"line_number":19,"context_line":"    state: \"absent\""},{"line_number":20,"context_line":"  when: \u003e"},{"line_number":21,"context_line":"    haproxy_cert_regen \u003d\u003d true or"},{"line_number":22,"context_line":"    haproxy_cert_regen \u003d\u003d \"True\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- name: Create self-signed ssl cert"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_15f4c258","line":21,"updated":"2015-07-08 15:07:44.000000000","message":"you can shorten this to \u0027when: haproxy_cert_regen\u0027 (treat it like a boolean\u0027 if the value is \u0027yes\u0027 or \u0027no\u0027. I\u0027m not sure why true/false doesn\u0027t work as a boolean in ansible, but yes/no does make it work like a boolean.","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":12606,"name":"Miguel Grinberg","email":"miguel.grinberg@gmail.com","username":"miguelgrinberg"},"change_message_id":"a884f6f0b1cbbd37a6f55c68e4277bf9265ce0e6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    dest: \"{{ haproxy_ssl_cert }}\""},{"line_number":19,"context_line":"    state: \"absent\""},{"line_number":20,"context_line":"  when: \u003e"},{"line_number":21,"context_line":"    haproxy_cert_regen \u003d\u003d true or"},{"line_number":22,"context_line":"    haproxy_cert_regen \u003d\u003d \"True\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- name: Create self-signed ssl cert"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_f638faa1","line":21,"in_reply_to":"ba3cc151_15f4c258","updated":"2015-07-09 18:29:21.000000000","message":"Done","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"571e52e0bf8bb4a6e942498ec61c8528312eba95","unresolved":false,"context_lines":[{"line_number":24,"context_line":"- name: Create self-signed ssl cert"},{"line_number":25,"context_line":"  command: \u003e"},{"line_number":26,"context_line":"    openssl req -new -nodes -sha256 -x509 -subj"},{"line_number":27,"context_line":"    \"/C\u003dUS/ST\u003dTexas/L\u003dSan Antonio/O\u003dIT/CN\u003d{{ external_lb_vip_address }}\""},{"line_number":28,"context_line":"    -days 3650"},{"line_number":29,"context_line":"    -keyout {{ haproxy_ssl_key }}"},{"line_number":30,"context_line":"    -out {{ haproxy_ssl_cert }}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_80141244","line":27,"updated":"2015-07-08 15:07:44.000000000","message":"I\u0027d suggest allowing the subject to be overridden, as in https://review.openstack.org/194474","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":12606,"name":"Miguel Grinberg","email":"miguel.grinberg@gmail.com","username":"miguelgrinberg"},"change_message_id":"a884f6f0b1cbbd37a6f55c68e4277bf9265ce0e6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"- name: Create self-signed ssl cert"},{"line_number":25,"context_line":"  command: \u003e"},{"line_number":26,"context_line":"    openssl req -new -nodes -sha256 -x509 -subj"},{"line_number":27,"context_line":"    \"/C\u003dUS/ST\u003dTexas/L\u003dSan Antonio/O\u003dIT/CN\u003d{{ external_lb_vip_address }}\""},{"line_number":28,"context_line":"    -days 3650"},{"line_number":29,"context_line":"    -keyout {{ haproxy_ssl_key }}"},{"line_number":30,"context_line":"    -out {{ haproxy_ssl_cert }}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_56b76620","line":27,"in_reply_to":"ba3cc151_80141244","updated":"2015-07-09 18:29:21.000000000","message":"Done","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"}],"playbooks/vars/configs/haproxy_config.yml":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"5a7ab150ee377c9435a1fe6debebc98cd99329a8","unresolved":false,"context_lines":[{"line_number":74,"context_line":"      haproxy_service_name: keystone_admin"},{"line_number":75,"context_line":"      haproxy_backend_nodes: \"{{ groups[\u0027keystone_all\u0027] }}\""},{"line_number":76,"context_line":"      haproxy_port: 35357"},{"line_number":77,"context_line":"      haproxy_ssl: false"},{"line_number":78,"context_line":"      haproxy_balance_type: http"},{"line_number":79,"context_line":"      haproxy_backend_options:"},{"line_number":80,"context_line":"       - \"forwardfor\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_e1ff2064","line":77,"updated":"2015-07-08 15:52:13.000000000","message":"Why not use something like this to make it more dynamic?\n\n{% if keystone_service_adminuri_proto \u003d\u003d \u0027https\u0027 %}true{% else %}false{% endif %}","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":12606,"name":"Miguel Grinberg","email":"miguel.grinberg@gmail.com","username":"miguelgrinberg"},"change_message_id":"a884f6f0b1cbbd37a6f55c68e4277bf9265ce0e6","unresolved":false,"context_lines":[{"line_number":74,"context_line":"      haproxy_service_name: keystone_admin"},{"line_number":75,"context_line":"      haproxy_backend_nodes: \"{{ groups[\u0027keystone_all\u0027] }}\""},{"line_number":76,"context_line":"      haproxy_port: 35357"},{"line_number":77,"context_line":"      haproxy_ssl: false"},{"line_number":78,"context_line":"      haproxy_balance_type: http"},{"line_number":79,"context_line":"      haproxy_backend_options:"},{"line_number":80,"context_line":"       - \"forwardfor\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_16047e12","line":77,"in_reply_to":"ba3cc151_196fdbc4","updated":"2015-07-09 18:29:21.000000000","message":"Done","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"bf601d30fd319c59189382324e24aecf84574092","unresolved":false,"context_lines":[{"line_number":74,"context_line":"      haproxy_service_name: keystone_admin"},{"line_number":75,"context_line":"      haproxy_backend_nodes: \"{{ groups[\u0027keystone_all\u0027] }}\""},{"line_number":76,"context_line":"      haproxy_port: 35357"},{"line_number":77,"context_line":"      haproxy_ssl: false"},{"line_number":78,"context_line":"      haproxy_balance_type: http"},{"line_number":79,"context_line":"      haproxy_backend_options:"},{"line_number":80,"context_line":"       - \"forwardfor\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_196fdbc4","line":77,"in_reply_to":"ba3cc151_722c32ac","updated":"2015-07-09 14:52:10.000000000","message":"That value is set in the user_group_vars already, so it\u0027s visible to all roles - it\u0027s there because the keystone uri\u0027s are needed by everything. So yeah, I\u0027d say it\u0027s safe to use that var in this file.","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":12606,"name":"Miguel Grinberg","email":"miguel.grinberg@gmail.com","username":"miguelgrinberg"},"change_message_id":"303ed3489cadf867152620678c4fb820a16c0ebe","unresolved":false,"context_lines":[{"line_number":74,"context_line":"      haproxy_service_name: keystone_admin"},{"line_number":75,"context_line":"      haproxy_backend_nodes: \"{{ groups[\u0027keystone_all\u0027] }}\""},{"line_number":76,"context_line":"      haproxy_port: 35357"},{"line_number":77,"context_line":"      haproxy_ssl: false"},{"line_number":78,"context_line":"      haproxy_balance_type: http"},{"line_number":79,"context_line":"      haproxy_backend_options:"},{"line_number":80,"context_line":"       - \"forwardfor\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ba3cc151_722c32ac","line":77,"in_reply_to":"ba3cc151_e1ff2064","updated":"2015-07-08 20:35:33.000000000","message":"This requires the haproxy role to see the keystone vars. So basically it forces the user to put the keystone variables in a user_* variables file, if they set this in the keystone defaults file it won\u0027t work.\n\nAre we okay with that limitation?","commit_id":"47d19ded33e9beb630298939e48aae9e48ad8a3b"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"09d5bf6e623ddb5504da2c8a39582d2b251d1320","unresolved":false,"context_lines":[{"line_number":78,"context_line":"      haproxy_service_name: keystone_service"},{"line_number":79,"context_line":"      haproxy_backend_nodes: \"{{ groups[\u0027keystone_all\u0027] }}\""},{"line_number":80,"context_line":"      haproxy_port: 5000"},{"line_number":81,"context_line":"      haproxy_ssl: \"{% if keystone_service_publicuri_proto \u003d\u003d \u0027https\u0027 %}true{% else %}false{% endif %}\""},{"line_number":82,"context_line":"      haproxy_balance_type: http"},{"line_number":83,"context_line":"      haproxy_backend_options:"},{"line_number":84,"context_line":"       - \"forwardfor\""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ba3cc151_f0279ab3","line":81,"updated":"2015-07-09 19:17:21.000000000","message":"The internaluri and publicuri share ports, so you may as well key this off the internaluri and abandon the changes to the user_group_vars.","commit_id":"a5501cf0c8f97fe516fcaf925c157d4ad407a183"}]}
