---
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

- hosts: localhost
  vars:
    kubespray_remote_ssh_user: "cord"

  tasks:

    # Edit all.yml variable file
    - name: Add lines to the all.yaml variable file
      lineinfile:
        path: inventories/{{ deployment_name }}/group_vars/all/all.yml
        line: "{{ item }}"
      with_items:
         - 'ansible_python_interpreter: /usr/bin/python2.7'
         - 'ansible_user: {{ kubespray_remote_ssh_user }}'
         - 'ansible_become: true'
         - 'kube_feature_gates: []'
         - 'kube_network_plugin: calico'
         - 'kube_network_plugin_multus: true'

    # Edit k8s-cluster.yml variable file
    - name: Set Docker DNS servers strict to false
      lineinfile:
        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster/k8s-cluster.yml
        regexp: '^#\s*docker_dns_servers_strict.*$'
        line: 'docker_dns_servers_strict: false'

    - name: Set Helm enabled to true
      lineinfile:
        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster/k8s-cluster.yml
        regexp: '^helm_enabled.*$'
        line: 'helm_enabled: true'

    - name: Set kubeconfig localhost to true
      lineinfile:
        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster/k8s-cluster.yml
        regexp: '^#\s*kubeconfig_localhost.*$'
        line: 'kubeconfig_localhost: true'

    - name: Allow insecure registry access
      lineinfile:
        path: inventories/{{ deployment_name }}/group_vars/k8s-cluster/k8s-cluster.yml
        regexp: 'docker_options'
        line: "docker_options: \"{{ item }} --insecure-registry={{ '{{' }} kube_service_addresses {{ '}}' }} --graph={{ '{{' }} docker_daemon_graph {{ '}}' }}  {{ '{{' }} docker_log_opts {{ '}}' }}\""
      with_items: "{{ k8s_nodes.split(' ') | map('regex_replace', '(.*)', '--insecure-registry=\\1/32') | join(' ') }}"
