diff options
Diffstat (limited to 'roles')
44 files changed, 444 insertions, 290 deletions
| diff --git a/roles/contiv/defaults/main.yml b/roles/contiv/defaults/main.yml index 8c4d19537..b5d2f7c6e 100644 --- a/roles/contiv/defaults/main.yml +++ b/roles/contiv/defaults/main.yml @@ -1,6 +1,6 @@  ---  # The version of Contiv binaries to use -contiv_version: 1.0.1 +contiv_version: 1.1.1  # The version of cni binaries  cni_version: v0.4.0 diff --git a/roles/contiv/meta/main.yml b/roles/contiv/meta/main.yml index da6409f1e..a2c2f98a7 100644 --- a/roles/contiv/meta/main.yml +++ b/roles/contiv/meta/main.yml @@ -27,4 +27,4 @@ dependencies:    etcd_peer_url_scheme: http    when: contiv_role == "netmaster"  - role: contiv_auth_proxy -  when: (contiv_role == "netmaster") and (contiv_enable_auth_proxy == true) +  when: contiv_role == "netmaster" diff --git a/roles/contiv/tasks/netmaster.yml b/roles/contiv/tasks/netmaster.yml index acaf7386e..cc52d3a43 100644 --- a/roles/contiv/tasks/netmaster.yml +++ b/roles/contiv/tasks/netmaster.yml @@ -41,6 +41,18 @@      mode: 0644    notify: restart netmaster +- name: Netmaster | Ensure contiv_config_dir exists +  file: +    path: "{{ contiv_config_dir }}" +    recurse: yes +    state: directory + +- name: Netmaster | Setup contiv.json config for the cni plugin +  template: +    src: contiv.cfg.master.j2 +    dest: "{{ contiv_config_dir }}/contiv.json" +  notify: restart netmaster +  - name: Netmaster | Copy systemd units for netmaster    template:      src: netmaster.service diff --git a/roles/contiv/templates/contiv.cfg.j2 b/roles/contiv/templates/contiv.cfg.j2 index 2c9a666a9..f0e99c556 100644 --- a/roles/contiv/templates/contiv.cfg.j2 +++ b/roles/contiv/templates/contiv.cfg.j2 @@ -2,5 +2,6 @@    "K8S_API_SERVER": "https://{{ hostvars[groups['masters'][0]]['ansible_' + netmaster_interface].ipv4.address }}:{{ kube_master_api_port }}",    "K8S_CA": "{{ openshift.common.config_base }}/node/ca.crt",    "K8S_KEY": "{{ openshift.common.config_base }}/node/system:node:{{ openshift.common.hostname }}.key", -  "K8S_CERT": "{{ openshift.common.config_base }}/node/system:node:{{ openshift.common.hostname }}.crt" +  "K8S_CERT": "{{ openshift.common.config_base }}/node/system:node:{{ openshift.common.hostname }}.crt", +  "SVC_SUBNET": "172.30.0.0/16"  } diff --git a/roles/contiv/templates/contiv.cfg.master.j2 b/roles/contiv/templates/contiv.cfg.master.j2 new file mode 100644 index 000000000..fac8e3c4c --- /dev/null +++ b/roles/contiv/templates/contiv.cfg.master.j2 @@ -0,0 +1,7 @@ +{ +  "K8S_API_SERVER": "https://{{ hostvars[groups['masters'][0]]['ansible_' + netmaster_interface].ipv4.address }}:{{ kube_master_api_port }}", +  "K8S_CA": "{{ openshift.common.config_base }}/master/ca.crt", +  "K8S_KEY": "{{ openshift.common.config_base }}/master/system:node:{{ openshift.common.hostname }}.key", +  "K8S_CERT": "{{ openshift.common.config_base }}/master/system:node:{{ openshift.common.hostname }}.crt", +  "SVC_SUBNET": "172.30.0.0/16" +} diff --git a/roles/contiv/templates/netmaster.service b/roles/contiv/templates/netmaster.service index 21c0380be..a602c955e 100644 --- a/roles/contiv/templates/netmaster.service +++ b/roles/contiv/templates/netmaster.service @@ -6,3 +6,5 @@ After=auditd.service systemd-user-sessions.service contiv-etcd.service  EnvironmentFile=/etc/default/netmaster  ExecStart={{ bin_dir }}/netmaster $NETMASTER_ARGS  KillMode=control-group +Restart=on-failure +RestartSec=10 diff --git a/roles/contiv_auth_proxy/defaults/main.yml b/roles/contiv_auth_proxy/defaults/main.yml index 4e637a947..e1d904c6a 100644 --- a/roles/contiv_auth_proxy/defaults/main.yml +++ b/roles/contiv_auth_proxy/defaults/main.yml @@ -1,11 +1,12 @@  --- -auth_proxy_image: "contiv/auth_proxy:1.0.0-beta.2" +auth_proxy_image: "contiv/auth_proxy:1.1.1"  auth_proxy_port: 10000  contiv_certs: "/var/contiv/certs" -cluster_store: "{{ hostvars[groups['masters'][0]]['ansible_' + netmaster_interface].ipv4.address }}:22379" +cluster_store: "etcd://{{ hostvars[groups['masters'][0]]['ansible_' + netmaster_interface].ipv4.address }}:22379"  auth_proxy_cert: "{{ contiv_certs }}/auth_proxy_cert.pem"  auth_proxy_key: "{{ contiv_certs }}/auth_proxy_key.pem"  auth_proxy_datastore: "{{ cluster_store }}"  auth_proxy_binaries: "/var/contiv_cache"  auth_proxy_local_install: False  auth_proxy_rule_comment: "Contiv auth proxy service" +service_vip: "{{ hostvars[groups['masters'][0]]['ansible_' + netmaster_interface].ipv4.address }}" diff --git a/roles/contiv_auth_proxy/files/cert.pem b/roles/contiv_auth_proxy/files/cert.pem new file mode 100644 index 000000000..63df4603f --- /dev/null +++ b/roles/contiv_auth_proxy/files/cert.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFuTCCA6GgAwIBAgIJAOFyylO2zW2EMA0GCSqGSIb3DQEBCwUAMHMxCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJDQTERMA8GA1UEBwwIU2FuIEpvc2UxDTALBgNVBAoM +BENQU0cxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxHTAbBgNVBAMMFGF1dGgtbG9j +YWwuY2lzY28uY29tMB4XDTE3MDcxMzE5NDYwMVoXDTI3MDcxMTE5NDYwMVowczEL +MAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMREwDwYDVQQHDAhTYW4gSm9zZTENMAsG +A1UECgwEQ1BTRzEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEdMBsGA1UEAwwUYXV0 +aC1sb2NhbC5jaXNjby5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDKCg26dvsD1u3f1lCaLlVptyTyGyanaJ73mlHiUnAMcu0A/p3kzluTeQLZJxtl +MToM7rT/lun6fbhQC+7TQep9mufBzLhssyzRnT9rnGSeGwN66mO/rlYPZc5C1D7p +7QZh1uLznzgOA2zMkgnI+n6LB2TZWg+XLhZZIr5SVYE18lj0tnwq3R1uznVv9t06 +grUYK2K7x0Y3Pt2e6yV0e1w2FOGH+7v3mm0c8r1+7U+4EZ2SM3fdG7nyTL/187gl +yE8X4HOnAyYGbAnULJC02LR/DTQpv/RpLN/YJEpHZWApHZCKh+fbFdIhRRwEnT4L +DLy3GJVFDEsmFaC91wf24+HAeUl9/hRIbxo9x/7kXmrhMlK38x2oo3cPh0XZxHje +XmJUGG1OByAuIZaGFwS9lUuGTNvpN8P/v3HN/nORc0RE3fvoXIv4nuhaEfuo32q4 +dvO4aNjmxjz1JcUEx6DiMQe4ECaReYdvI+j9ZkUJj/e89iLsQ8gz5t3FTM+tmBi1 +hrRBAgWyRY5DKECVv2SNFiX55JQGA5vQDGw51qTTuhntfBhkHvhKL7V1FRZazx6N +wqFyynig/jplb1ZNdKZ9ZxngZr6qHIx4RcGaJ9HdVhik7NyUCiHjWeGagzun2Omq +FFXAD9Hmfctac5bGxx0FBi95kO8bd8b0GSIh2CWanETjawIDAQABo1AwTjAdBgNV +HQ4EFgQU5P1g5gFZot//iwEV98MwW2YXzEMwHwYDVR0jBBgwFoAU5P1g5gFZot// +iwEV98MwW2YXzEMwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAbWgN +BkFzzG5sbG7vUb23Ggv/0TCCuMtuKBGOBR0EW5Ssw6Aml7j3AGiy/1+2sdrQMsx2 +nVpexyQW5XS/X+8JjH7H7ifvwl3bVJ8xiR/9ioIJovrQojxQO0cUB2Lljj3bPd/R +/tddAhPj0uN9N7UAejA12kXGa0Rrzb2U1rIpO9jnTbQYJiTOSzFiiGRMZWx3hfsW +SDTpPmsV2Mh+jcmuxvPITl0s+vtqsm7SYoUZHwJ80LvrPbmk/5hTZGRsI3W5jipB +PpOxvBnAWnQH3miMhty2TDaQ9JjYUwnxjFFZvNIYtp8+eH4nlbSldbgZoUeAe8It +X6SsP8gT/uQh3TPvzNIfYROA7qTwoOQ8ZW8ssai/EttHAztFxketgNEfjwUTz8EJ +yKeyAJ7qk3zD5k7p33ZNLWjmN0Awx3fCE9OQmNUyNX7PpYb4i+tHWu3h6Clw0RUf +0gb1I+iyB3PXmpiYtxdMxGSi9CQIyWHzC4bsTQZkrzzIHWFSwewhUWOQ2Wko0hrv +DnkS5k0cMPn5aNxw56H6OI+6hb+y/GGkTxNY9Gbxypx6lgZson0EY80EPZOJAORM +XggJtTjiMpzvKh18DZY/Phmdh0C2tt8KYFdG83qLEhya9WZujbLAm38vIziFHbdX +jOitXBSPyVrV3JvsCVksp+YC8Lnv3FsM494R4kA= +-----END CERTIFICATE----- diff --git a/roles/contiv_auth_proxy/files/key.pem b/roles/contiv_auth_proxy/files/key.pem new file mode 100644 index 000000000..7224e569c --- /dev/null +++ b/roles/contiv_auth_proxy/files/key.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/roles/contiv_auth_proxy/templates/auth_proxy.j2 b/roles/contiv_auth_proxy/templates/auth_proxy.j2 index e82e5b4ab..0ab8c831b 100644 --- a/roles/contiv_auth_proxy/templates/auth_proxy.j2 +++ b/roles/contiv_auth_proxy/templates/auth_proxy.j2 @@ -14,7 +14,7 @@ start)        -p 10000:{{ auth_proxy_port }} \        --net=host --name=auth-proxy \        -e NO_NETMASTER_STARTUP_CHECK=1 \ -      -v /var/contiv:/var/contiv \ +      -v /var/contiv:/var/contiv:z \        {{ auth_proxy_image }} \        --tls-key-file={{ auth_proxy_key }} \        --tls-certificate={{ auth_proxy_cert }} \ diff --git a/roles/lib_openshift/library/oc_adm_policy_group.py b/roles/lib_openshift/library/oc_adm_policy_group.py index 221ef5094..7154fd839 100644 --- a/roles/lib_openshift/library/oc_adm_policy_group.py +++ b/roles/lib_openshift/library/oc_adm_policy_group.py @@ -1959,28 +1959,28 @@ class PolicyGroup(OpenShiftCLI):          self.verbose = verbose          self._rolebinding = None          self._scc = None -        self._cluster_policy_bindings = None -        self._policy_bindings = None +        self._cluster_role_bindings = None +        self._role_bindings = None      @property -    def policybindings(self): -        if self._policy_bindings is None: -            results = self._get('clusterpolicybindings', None) +    def rolebindings(self): +        if self._role_bindings is None: +            results = self._get('rolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve policybindings') -            self._policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve rolebindings') +            self._role_bindings = results['results'][0]['items'] -        return self._policy_bindings +        return self._role_bindings      @property -    def clusterpolicybindings(self): -        if self._cluster_policy_bindings is None: -            results = self._get('clusterpolicybindings', None) +    def clusterrolebindings(self): +        if self._cluster_role_bindings is None: +            results = self._get('clusterrolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve clusterpolicybindings') -            self._cluster_policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve clusterrolebindings') +            self._cluster_role_bindings = results['results'][0]['items'] -        return self._cluster_policy_bindings +        return self._cluster_role_bindings      @property      def role_binding(self): @@ -2023,18 +2023,17 @@ class PolicyGroup(OpenShiftCLI):          ''' return whether role_binding exists '''          bindings = None          if self.config.config_options['resource_kind']['value'] == 'cluster-role': -            bindings = self.clusterpolicybindings +            bindings = self.clusterrolebindings          else: -            bindings = self.policybindings +            bindings = self.rolebindings          if bindings is None:              return False -        for binding in bindings['roleBindings']: -            _rb = binding['roleBinding'] -            if _rb['roleRef']['name'] == self.config.config_options['name']['value'] and \ -                    _rb['groupNames'] is not None and \ -                    self.config.config_options['group']['value'] in _rb['groupNames']: +        for binding in bindings: +            if binding['roleRef']['name'] == self.config.config_options['name']['value'] and \ +                    binding['groupNames'] is not None and \ +                    self.config.config_options['group']['value'] in binding['groupNames']:                  self.role_binding = binding                  return True diff --git a/roles/lib_openshift/library/oc_adm_policy_user.py b/roles/lib_openshift/library/oc_adm_policy_user.py index 071562875..3fcf49799 100644 --- a/roles/lib_openshift/library/oc_adm_policy_user.py +++ b/roles/lib_openshift/library/oc_adm_policy_user.py @@ -1950,36 +1950,36 @@ class PolicyUser(OpenShiftCLI):      ''' Class to handle attaching policies to users '''      def __init__(self, -                 policy_config, +                 config,                   verbose=False):          ''' Constructor for PolicyUser ''' -        super(PolicyUser, self).__init__(policy_config.namespace, policy_config.kubeconfig, verbose) -        self.config = policy_config +        super(PolicyUser, self).__init__(config.namespace, config.kubeconfig, verbose) +        self.config = config          self.verbose = verbose          self._rolebinding = None          self._scc = None -        self._cluster_policy_bindings = None -        self._policy_bindings = None +        self._cluster_role_bindings = None +        self._role_bindings = None      @property -    def policybindings(self): -        if self._policy_bindings is None: -            results = self._get('policybindings', None) +    def rolebindings(self): +        if self._role_bindings is None: +            results = self._get('rolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve policybindings') -            self._policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve rolebindings') +            self._role_bindings = results['results'][0]['items'] -        return self._policy_bindings +        return self._role_bindings      @property -    def clusterpolicybindings(self): -        if self._cluster_policy_bindings is None: -            results = self._get('clusterpolicybindings', None) +    def clusterrolebindings(self): +        if self._cluster_role_bindings is None: +            results = self._get('clusterrolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve clusterpolicybindings') -            self._cluster_policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve clusterrolebindings') +            self._cluster_role_bindings = results['results'][0]['items'] -        return self._cluster_policy_bindings +        return self._cluster_role_bindings      @property      def role_binding(self): @@ -2017,18 +2017,17 @@ class PolicyUser(OpenShiftCLI):          ''' return whether role_binding exists '''          bindings = None          if self.config.config_options['resource_kind']['value'] == 'cluster-role': -            bindings = self.clusterpolicybindings +            bindings = self.clusterrolebindings          else: -            bindings = self.policybindings +            bindings = self.rolebindings          if bindings is None:              return False -        for binding in bindings['roleBindings']: -            _rb = binding['roleBinding'] -            if _rb['roleRef']['name'] == self.config.config_options['name']['value'] and \ -                    _rb['userNames'] is not None and \ -                    self.config.config_options['user']['value'] in _rb['userNames']: +        for binding in bindings: +            if binding['roleRef']['name'] == self.config.config_options['name']['value'] and \ +                    binding['userNames'] is not None and \ +                    self.config.config_options['user']['value'] in binding['userNames']:                  self.role_binding = binding                  return True diff --git a/roles/lib_openshift/library/oc_clusterrole.py b/roles/lib_openshift/library/oc_clusterrole.py index 289f08b83..d101eac1c 100644 --- a/roles/lib_openshift/library/oc_clusterrole.py +++ b/roles/lib_openshift/library/oc_clusterrole.py @@ -1671,7 +1671,7 @@ class OCClusterRole(OpenShiftCLI):              self.clusterrole = ClusterRole(content=result['results'][0])              result['results'] = self.clusterrole.yaml_dict -        elif 'clusterrole "{}" not found'.format(self.name) in result['stderr']: +        elif '"{}" not found'.format(self.name) in result['stderr']:              result['returncode'] = 0              self.clusterrole = None diff --git a/roles/lib_openshift/src/class/oc_adm_policy_group.py b/roles/lib_openshift/src/class/oc_adm_policy_group.py index 1e51913e0..6ad57bdce 100644 --- a/roles/lib_openshift/src/class/oc_adm_policy_group.py +++ b/roles/lib_openshift/src/class/oc_adm_policy_group.py @@ -41,28 +41,28 @@ class PolicyGroup(OpenShiftCLI):          self.verbose = verbose          self._rolebinding = None          self._scc = None -        self._cluster_policy_bindings = None -        self._policy_bindings = None +        self._cluster_role_bindings = None +        self._role_bindings = None      @property -    def policybindings(self): -        if self._policy_bindings is None: -            results = self._get('clusterpolicybindings', None) +    def rolebindings(self): +        if self._role_bindings is None: +            results = self._get('rolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve policybindings') -            self._policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve rolebindings') +            self._role_bindings = results['results'][0]['items'] -        return self._policy_bindings +        return self._role_bindings      @property -    def clusterpolicybindings(self): -        if self._cluster_policy_bindings is None: -            results = self._get('clusterpolicybindings', None) +    def clusterrolebindings(self): +        if self._cluster_role_bindings is None: +            results = self._get('clusterrolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve clusterpolicybindings') -            self._cluster_policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve clusterrolebindings') +            self._cluster_role_bindings = results['results'][0]['items'] -        return self._cluster_policy_bindings +        return self._cluster_role_bindings      @property      def role_binding(self): @@ -105,18 +105,17 @@ class PolicyGroup(OpenShiftCLI):          ''' return whether role_binding exists '''          bindings = None          if self.config.config_options['resource_kind']['value'] == 'cluster-role': -            bindings = self.clusterpolicybindings +            bindings = self.clusterrolebindings          else: -            bindings = self.policybindings +            bindings = self.rolebindings          if bindings is None:              return False -        for binding in bindings['roleBindings']: -            _rb = binding['roleBinding'] -            if _rb['roleRef']['name'] == self.config.config_options['name']['value'] and \ -                    _rb['groupNames'] is not None and \ -                    self.config.config_options['group']['value'] in _rb['groupNames']: +        for binding in bindings: +            if binding['roleRef']['name'] == self.config.config_options['name']['value'] and \ +                    binding['groupNames'] is not None and \ +                    self.config.config_options['group']['value'] in binding['groupNames']:                  self.role_binding = binding                  return True diff --git a/roles/lib_openshift/src/class/oc_adm_policy_user.py b/roles/lib_openshift/src/class/oc_adm_policy_user.py index 37a685ebb..6fc8145c8 100644 --- a/roles/lib_openshift/src/class/oc_adm_policy_user.py +++ b/roles/lib_openshift/src/class/oc_adm_policy_user.py @@ -32,36 +32,36 @@ class PolicyUser(OpenShiftCLI):      ''' Class to handle attaching policies to users '''      def __init__(self, -                 policy_config, +                 config,                   verbose=False):          ''' Constructor for PolicyUser ''' -        super(PolicyUser, self).__init__(policy_config.namespace, policy_config.kubeconfig, verbose) -        self.config = policy_config +        super(PolicyUser, self).__init__(config.namespace, config.kubeconfig, verbose) +        self.config = config          self.verbose = verbose          self._rolebinding = None          self._scc = None -        self._cluster_policy_bindings = None -        self._policy_bindings = None +        self._cluster_role_bindings = None +        self._role_bindings = None      @property -    def policybindings(self): -        if self._policy_bindings is None: -            results = self._get('policybindings', None) +    def rolebindings(self): +        if self._role_bindings is None: +            results = self._get('rolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve policybindings') -            self._policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve rolebindings') +            self._role_bindings = results['results'][0]['items'] -        return self._policy_bindings +        return self._role_bindings      @property -    def clusterpolicybindings(self): -        if self._cluster_policy_bindings is None: -            results = self._get('clusterpolicybindings', None) +    def clusterrolebindings(self): +        if self._cluster_role_bindings is None: +            results = self._get('clusterrolebindings', None)              if results['returncode'] != 0: -                raise OpenShiftCLIError('Could not retrieve clusterpolicybindings') -            self._cluster_policy_bindings = results['results'][0]['items'][0] +                raise OpenShiftCLIError('Could not retrieve clusterrolebindings') +            self._cluster_role_bindings = results['results'][0]['items'] -        return self._cluster_policy_bindings +        return self._cluster_role_bindings      @property      def role_binding(self): @@ -99,18 +99,17 @@ class PolicyUser(OpenShiftCLI):          ''' return whether role_binding exists '''          bindings = None          if self.config.config_options['resource_kind']['value'] == 'cluster-role': -            bindings = self.clusterpolicybindings +            bindings = self.clusterrolebindings          else: -            bindings = self.policybindings +            bindings = self.rolebindings          if bindings is None:              return False -        for binding in bindings['roleBindings']: -            _rb = binding['roleBinding'] -            if _rb['roleRef']['name'] == self.config.config_options['name']['value'] and \ -                    _rb['userNames'] is not None and \ -                    self.config.config_options['user']['value'] in _rb['userNames']: +        for binding in bindings: +            if binding['roleRef']['name'] == self.config.config_options['name']['value'] and \ +                    binding['userNames'] is not None and \ +                    self.config.config_options['user']['value'] in binding['userNames']:                  self.role_binding = binding                  return True diff --git a/roles/lib_openshift/src/class/oc_clusterrole.py b/roles/lib_openshift/src/class/oc_clusterrole.py index ae6795446..328e5cb67 100644 --- a/roles/lib_openshift/src/class/oc_clusterrole.py +++ b/roles/lib_openshift/src/class/oc_clusterrole.py @@ -56,7 +56,7 @@ class OCClusterRole(OpenShiftCLI):              self.clusterrole = ClusterRole(content=result['results'][0])              result['results'] = self.clusterrole.yaml_dict -        elif 'clusterrole "{}" not found'.format(self.name) in result['stderr']: +        elif '"{}" not found'.format(self.name) in result['stderr']:              result['returncode'] = 0              self.clusterrole = None diff --git a/roles/openshift_master/tasks/systemd_units.yml b/roles/openshift_master/tasks/systemd_units.yml index dfc255b3d..d71ad3459 100644 --- a/roles/openshift_master/tasks/systemd_units.yml +++ b/roles/openshift_master/tasks/systemd_units.yml @@ -23,7 +23,7 @@    when: openshift.common.is_containerized | bool and not openshift.common.is_master_system_container | bool  # workaround for missing systemd unit files -- name: Create the systemd unit files +- name: "Create the {{ openshift.common.service_type }} systemd unit file"    template:      src: "master_docker/master.docker.service.j2"      dest: "{{ containerized_svc_dir }}/{{ openshift.common.service_type }}-master.service" @@ -32,7 +32,7 @@    - not openshift.common.is_master_system_container | bool    register: create_master_unit_file -- name: Install Master service file +- name: "Install {{ openshift.common.service_type }} systemd unit file"    copy:      dest: "/etc/systemd/system/{{ openshift.common.service_type }}-master.service"      src: "{{ openshift.common.service_type }}-master.service" @@ -44,7 +44,7 @@  - command: systemctl daemon-reload    when: create_master_unit_file | changed -- name: Create the ha systemd unit files +- name: Create the ha systemd unit files for api and controller services    template:      src: "{{ ha_svc_template_path }}/atomic-openshift-master-{{ item }}.service.j2"      dest: "{{ containerized_svc_dir }}/{{ openshift.common.service_type }}-master-{{ item }}.service" diff --git a/roles/openshift_master/templates/atomic-openshift-master.j2 b/roles/openshift_master/templates/atomic-openshift-master.j2 index 850fae0e4..b931f1414 100644 --- a/roles/openshift_master/templates/atomic-openshift-master.j2 +++ b/roles/openshift_master/templates/atomic-openshift-master.j2 @@ -1,6 +1,9 @@  OPTIONS=--loglevel={{ openshift.master.debug_level | default(2) }}  CONFIG_FILE={{ openshift_master_config_file }} -{% if openshift_push_via_dns | default(false) %} +{# Preserve existing OPENSHIFT_DEFAULT_REGISTRY settings in scale up runs #} +{% if openshift_master_is_scaleup_host %} +{{ openshift_master_default_registry_value }} +{% elif openshift_push_via_dns | default(false) %}  OPENSHIFT_DEFAULT_REGISTRY=docker-registry.default.svc:5000  {% endif %}  {% if openshift.common.is_containerized | bool %} diff --git a/roles/openshift_master/templates/master.yaml.v1.j2 b/roles/openshift_master/templates/master.yaml.v1.j2 index af3ebc6d2..7964bbb48 100644 --- a/roles/openshift_master/templates/master.yaml.v1.j2 +++ b/roles/openshift_master/templates/master.yaml.v1.j2 @@ -164,16 +164,16 @@ masterClients:    externalKubernetesClientConnectionOverrides:      acceptContentTypes: application/vnd.kubernetes.protobuf,application/json      contentType: application/vnd.kubernetes.protobuf -    burst: 400 -    qps: 200 +    burst: {{ openshift_master_external_ratelimit_burst | default(400) }} +    qps: {{ openshift_master_external_ratelimit_qps | default(200) }}  {% endif %}    externalKubernetesKubeConfig: ""  {% if openshift.common.version_gte_3_3_or_1_3 | bool %}    openshiftLoopbackClientConnectionOverrides:      acceptContentTypes: application/vnd.kubernetes.protobuf,application/json      contentType: application/vnd.kubernetes.protobuf -    burst: 600 -    qps: 300 +    burst: {{ openshift_master_loopback_ratelimit_burst | default(600) }} +    qps: {{ openshift_master_loopback_ratelimit_qps | default(300) }}  {% endif %}    openshiftLoopbackKubeConfig: openshift-master.kubeconfig  masterPublicURL: {{ openshift.master.public_api_url }} diff --git a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 index c05a27559..63eb3ea1b 100644 --- a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 +++ b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.j2 @@ -1,6 +1,9 @@  OPTIONS=--loglevel={{ openshift.master.debug_level }} --listen={{ 'https' if openshift.master.api_use_ssl else 'http' }}://{{ openshift.master.bind_addr }}:{{ openshift.master.api_port }} --master={{ openshift.master.loopback_api_url }}  CONFIG_FILE={{ openshift_master_config_file }} -{% if openshift_push_via_dns | default(false) %} +{# Preserve existing OPENSHIFT_DEFAULT_REGISTRY settings in scale up runs #} +{% if openshift_master_is_scaleup_host %} +{{ openshift_master_default_registry_value_api }} +{% elif openshift_push_via_dns | default(false) %}  OPENSHIFT_DEFAULT_REGISTRY=docker-registry.default.svc:5000  {% endif %}  {% if openshift.common.is_containerized | bool %} diff --git a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 index a153fb33d..0adfd05b6 100644 --- a/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 +++ b/roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.j2 @@ -1,13 +1,16 @@  OPTIONS=--loglevel={{ openshift.master.debug_level }} --listen={{ 'https' if openshift.master.api_use_ssl else 'http' }}://{{ openshift.master.bind_addr }}:{{ openshift.master.controllers_port }}  CONFIG_FILE={{ openshift_master_config_file }} -{% if openshift_push_via_dns | default(false) %} +{# Preserve existing OPENSHIFT_DEFAULT_REGISTRY settings in scale up runs #} +{% if openshift_master_is_scaleup_host %} +{{ openshift_master_default_registry_value_controllers }} +{% elif openshift_push_via_dns | default(false) %}  OPENSHIFT_DEFAULT_REGISTRY=docker-registry.default.svc:5000  {% endif %}  {% if openshift.common.is_containerized | bool %}  IMAGE_VERSION={{ openshift_image_tag }}  {% endif %} -{% if openshift_cloudprovider_kind | default('') == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_access_key is defined %} +{% if openshift_cloudprovider_kind | default('') == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_secret_key is defined %}  AWS_ACCESS_KEY_ID={{ openshift_cloudprovider_aws_access_key }}  AWS_SECRET_ACCESS_KEY={{ openshift_cloudprovider_aws_secret_key }}  {% endif %} diff --git a/roles/openshift_master/vars/main.yml b/roles/openshift_master/vars/main.yml index c5ba20409..7745d014f 100644 --- a/roles/openshift_master/vars/main.yml +++ b/roles/openshift_master/vars/main.yml @@ -20,3 +20,4 @@ openshift_master_valid_grant_methods:  - deny  l_is_ha: "{{ openshift.master.ha is defined and openshift.master.ha | bool }}" +openshift_master_is_scaleup_host: False diff --git a/roles/openshift_node/meta/main.yml b/roles/openshift_node/meta/main.yml index e19d82ddc..4fb841add 100644 --- a/roles/openshift_node/meta/main.yml +++ b/roles/openshift_node/meta/main.yml @@ -12,6 +12,7 @@ galaxy_info:    categories:    - cloud  dependencies: +- role: openshift_node_facts  - role: lib_openshift  - role: openshift_common  - role: openshift_clock diff --git a/roles/openshift_node/tasks/config/configure-node-settings.yml b/roles/openshift_node/tasks/config/configure-node-settings.yml new file mode 100644 index 000000000..1186062eb --- /dev/null +++ b/roles/openshift_node/tasks/config/configure-node-settings.yml @@ -0,0 +1,16 @@ +--- +- name: Configure Node settings +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node +    regexp: "{{ item.regex }}" +    line: "{{ item.line }}" +    create: true +  with_items: +  - regex: '^OPTIONS=' +    line: "OPTIONS=--loglevel={{ openshift.node.debug_level | default(2) }}" +  - regex: '^CONFIG_FILE=' +    line: "CONFIG_FILE={{ openshift.common.config_base }}/node/node-config.yaml" +  - regex: '^IMAGE_VERSION=' +    line: "IMAGE_VERSION={{ openshift_image_tag }}" +  notify: +  - restart node diff --git a/roles/openshift_node/tasks/config/configure-proxy-settings.yml b/roles/openshift_node/tasks/config/configure-proxy-settings.yml new file mode 100644 index 000000000..d60794305 --- /dev/null +++ b/roles/openshift_node/tasks/config/configure-proxy-settings.yml @@ -0,0 +1,17 @@ +--- +- name: Configure Proxy Settings +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node +    regexp: "{{ item.regex }}" +    line: "{{ item.line }}" +    create: true +  with_items: +  - regex: '^HTTP_PROXY=' +    line: "HTTP_PROXY={{ openshift.common.http_proxy | default('') }}" +  - regex: '^HTTPS_PROXY=' +    line: "HTTPS_PROXY={{ openshift.common.https_proxy | default('') }}" +  - regex: '^NO_PROXY=' +    line: "NO_PROXY={{ openshift.common.no_proxy | default([]) }},{{ openshift.common.portal_net }},{{ hostvars[groups.oo_first_master.0].openshift.master.sdn_cluster_network_cidr }}" +  when: ('http_proxy' in openshift.common and openshift.common.http_proxy != '') +  notify: +  - restart node diff --git a/roles/openshift_node/tasks/config/install-node-deps-docker-service-file.yml b/roles/openshift_node/tasks/config/install-node-deps-docker-service-file.yml new file mode 100644 index 000000000..ee91a88ab --- /dev/null +++ b/roles/openshift_node/tasks/config/install-node-deps-docker-service-file.yml @@ -0,0 +1,8 @@ +--- +- name: Install Node dependencies docker service file +  template: +    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node-dep.service" +    src: openshift.docker.node.dep.service +  notify: +  - reload systemd units +  - restart node diff --git a/roles/openshift_node/tasks/config/install-node-docker-service-file.yml b/roles/openshift_node/tasks/config/install-node-docker-service-file.yml new file mode 100644 index 000000000..f92ff79b5 --- /dev/null +++ b/roles/openshift_node/tasks/config/install-node-docker-service-file.yml @@ -0,0 +1,8 @@ +--- +- name: Install Node docker service file +  template: +    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node.service" +    src: openshift.docker.node.service +  notify: +  - reload systemd units +  - restart node diff --git a/roles/openshift_node/tasks/config/install-ovs-docker-service-file.yml b/roles/openshift_node/tasks/config/install-ovs-docker-service-file.yml new file mode 100644 index 000000000..c2c5ea1d4 --- /dev/null +++ b/roles/openshift_node/tasks/config/install-ovs-docker-service-file.yml @@ -0,0 +1,8 @@ +--- +- name: Install OpenvSwitch docker service file +  template: +    dest: "/etc/systemd/system/openvswitch.service" +    src: openvswitch.docker.service +  notify: +  - reload systemd units +  - restart openvswitch diff --git a/roles/openshift_node/tasks/config/install-ovs-service-env-file.yml b/roles/openshift_node/tasks/config/install-ovs-service-env-file.yml new file mode 100644 index 000000000..1d75a3355 --- /dev/null +++ b/roles/openshift_node/tasks/config/install-ovs-service-env-file.yml @@ -0,0 +1,8 @@ +--- +- name: Create the openvswitch service env file +  template: +    src: openvswitch.sysconfig.j2 +    dest: /etc/sysconfig/openvswitch +  notify: +  - reload systemd units +  - restart openvswitch diff --git a/roles/openshift_node/tasks/config/workaround-bz1331590-ovs-oom-fix.yml b/roles/openshift_node/tasks/config/workaround-bz1331590-ovs-oom-fix.yml new file mode 100644 index 000000000..5df1abc79 --- /dev/null +++ b/roles/openshift_node/tasks/config/workaround-bz1331590-ovs-oom-fix.yml @@ -0,0 +1,13 @@ +--- +# May be a temporary workaround. +# https://bugzilla.redhat.com/show_bug.cgi?id=1331590 +- name: Create OpenvSwitch service.d directory +  file: path=/etc/systemd/system/openvswitch.service.d/ state=directory + +- name: Install OpenvSwitch service OOM fix +  template: +    dest: "/etc/systemd/system/openvswitch.service.d/01-avoid-oom.conf" +    src: openvswitch-avoid-oom.conf +  notify: +  - reload systemd units +  - restart openvswitch diff --git a/roles/openshift_node/tasks/main.yml b/roles/openshift_node/tasks/main.yml index 8b4931e7c..87b1f6537 100644 --- a/roles/openshift_node/tasks/main.yml +++ b/roles/openshift_node/tasks/main.yml @@ -6,34 +6,6 @@      (not ansible_selinux or ansible_selinux.status != 'enabled') and      deployment_type in ['enterprise', 'online', 'atomic-enterprise', 'openshift-enterprise'] -- name: Set node facts -  openshift_facts: -    role: "{{ item.role }}" -    local_facts: "{{ item.local_facts }}" -  with_items: -    # Reset node labels to an empty dictionary. -    - role: node -      local_facts: -        labels: {} -    - role: node -      local_facts: -        annotations: "{{ openshift_node_annotations | default(none) }}" -        debug_level: "{{ openshift_node_debug_level | default(openshift.common.debug_level) }}" -        iptables_sync_period: "{{ openshift_node_iptables_sync_period | default(None) }}" -        kubelet_args: "{{ openshift_node_kubelet_args | default(None) }}" -        labels: "{{ lookup('oo_option', 'openshift_node_labels') | default( openshift_node_labels | default(none), true) }}" -        registry_url: "{{ oreg_url_node | default(oreg_url) | default(None) }}" -        schedulable: "{{ openshift_schedulable | default(openshift_scheduleable) | default(None) }}" -        sdn_mtu: "{{ openshift_node_sdn_mtu | default(None) }}" -        storage_plugin_deps: "{{ osn_storage_plugin_deps | default(None) }}" -        set_node_ip: "{{ openshift_set_node_ip | default(None) }}" -        node_image: "{{ osn_image | default(None) }}" -        ovs_image: "{{ osn_ovs_image | default(None) }}" -        proxy_mode: "{{ openshift_node_proxy_mode | default('iptables') }}" -        local_quota_per_fsgroup: "{{ openshift_node_local_quota_per_fsgroup | default(None) }}" -        dns_ip: "{{ openshift_dns_ip | default(none) | get_dns_ip(hostvars[inventory_hostname])}}" -        env_vars: "{{ openshift_node_env_vars | default(None) }}" -  # https://docs.openshift.com/container-platform/3.4/admin_guide/overcommit.html#disabling-swap-memory  - name: Check for swap usage    command: grep "^[^#].*swap" /etc/fstab diff --git a/roles/openshift_node/tasks/systemd_units.yml b/roles/openshift_node/tasks/systemd_units.yml index 2ccc28461..b86bb1549 100644 --- a/roles/openshift_node/tasks/systemd_units.yml +++ b/roles/openshift_node/tasks/systemd_units.yml @@ -2,15 +2,8 @@  # This file is included both in the openshift_master role and in the upgrade  # playbooks. -- name: Install Node dependencies docker service file -  template: -    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node-dep.service" -    src: openshift.docker.node.dep.service -  register: install_node_dep_result +- include: config/install-node-deps-docker-service-file.yml    when: openshift.common.is_containerized | bool -  notify: -  - reload systemd units -  - restart node  - block:    - name: Pre-pull node image @@ -19,14 +12,7 @@      register: pull_result      changed_when: "'Downloaded newer image' in pull_result.stdout" -  - name: Install Node docker service file -    template: -      dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node.service" -      src: openshift.docker.node.service -    register: install_node_result -    notify: -    - reload systemd units -    - restart node +  - include: config/install-node-docker-service-file.yml    when:    - openshift.common.is_containerized | bool    - not openshift.common.is_node_system_container | bool @@ -35,21 +21,13 @@    template:      dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node.service"      src: "node.service.j2" -  register: install_node_result    when: not openshift.common.is_containerized | bool    notify:    - reload systemd units    - restart node -- name: Create the openvswitch service env file -  template: -    src: openvswitch.sysconfig.j2 -    dest: /etc/sysconfig/openvswitch +- include: config/install-ovs-service-env-file.yml    when: openshift.common.is_containerized | bool -  register: install_ovs_sysconfig -  notify: -  - reload systemd units -  - restart openvswitch  - name: Install Node system container    include: node_system_container.yml @@ -64,22 +42,9 @@    - openshift.common.is_containerized | bool    - openshift.common.is_openvswitch_system_container | bool -# May be a temporary workaround. -# https://bugzilla.redhat.com/show_bug.cgi?id=1331590 -- name: Create OpenvSwitch service.d directory -  file: path=/etc/systemd/system/openvswitch.service.d/ state=directory +- include: config/workaround-bz1331590-ovs-oom-fix.yml    when: openshift.common.use_openshift_sdn | default(true) | bool -- name: Install OpenvSwitch service OOM fix -  template: -    dest: "/etc/systemd/system/openvswitch.service.d/01-avoid-oom.conf" -    src: openvswitch-avoid-oom.conf -  when: openshift.common.use_openshift_sdn | default(true) | bool -  register: install_oom_fix_result -  notify: -  - reload systemd units -  - restart openvswitch -  - block:    - name: Pre-pull openvswitch image      command: > @@ -87,47 +52,11 @@      register: pull_result      changed_when: "'Downloaded newer image' in pull_result.stdout" -  - name: Install OpenvSwitch docker service file -    template: -      dest: "/etc/systemd/system/openvswitch.service" -      src: openvswitch.docker.service -    notify: -    - reload systemd units -    - restart openvswitch +  - include: config/install-ovs-docker-service-file.yml    when:    - openshift.common.is_containerized | bool    - openshift.common.use_openshift_sdn | default(true) | bool    - not openshift.common.is_openvswitch_system_container | bool -- name: Configure Node settings -  lineinfile: -    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node -    regexp: "{{ item.regex }}" -    line: "{{ item.line }}" -    create: true -  with_items: -  - regex: '^OPTIONS=' -    line: "OPTIONS=--loglevel={{ openshift.node.debug_level | default(2) }}" -  - regex: '^CONFIG_FILE=' -    line: "CONFIG_FILE={{ openshift.common.config_base }}/node/node-config.yaml" -  - regex: '^IMAGE_VERSION=' -    line: "IMAGE_VERSION={{ openshift_image_tag }}" -  notify: -  - restart node - -- name: Configure Proxy Settings -  lineinfile: -    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node -    regexp: "{{ item.regex }}" -    line: "{{ item.line }}" -    create: true -  with_items: -  - regex: '^HTTP_PROXY=' -    line: "HTTP_PROXY={{ openshift.common.http_proxy | default('') }}" -  - regex: '^HTTPS_PROXY=' -    line: "HTTPS_PROXY={{ openshift.common.https_proxy | default('') }}" -  - regex: '^NO_PROXY=' -    line: "NO_PROXY={{ openshift.common.no_proxy | default([]) }},{{ openshift.common.portal_net }},{{ hostvars[groups.oo_first_master.0].openshift.master.sdn_cluster_network_cidr }}" -  when: ('http_proxy' in openshift.common and openshift.common.http_proxy != '') -  notify: -  - restart node +- include: config/configure-node-settings.yml +- include: config/configure-proxy-settings.yml diff --git a/roles/openshift_node_facts/meta/main.yml b/roles/openshift_node_facts/meta/main.yml new file mode 100644 index 000000000..59bf680ce --- /dev/null +++ b/roles/openshift_node_facts/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: +  author: Andrew Butcher +  description: OpenShift Node Facts +  company: Red Hat, Inc. +  license: Apache License, Version 2.0 +  min_ansible_version: 1.9 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +dependencies: +- role: openshift_facts diff --git a/roles/openshift_node_facts/tasks/main.yml b/roles/openshift_node_facts/tasks/main.yml new file mode 100644 index 000000000..c268c945e --- /dev/null +++ b/roles/openshift_node_facts/tasks/main.yml @@ -0,0 +1,34 @@ +--- +- set_fact: +    openshift_node_debug_level: "{{ lookup('oo_option', 'openshift_node_debug_level') }}" +  when: +  - openshift_node_debug_level is not defined +  - lookup('oo_option', 'openshift_node_debug_level') != "" + +- name: Set node facts +  openshift_facts: +    role: "{{ item.role }}" +    local_facts: "{{ item.local_facts }}" +  with_items: +  # Reset node labels to an empty dictionary. +  - role: node +    local_facts: +      labels: {} +  - role: node +    local_facts: +      annotations: "{{ openshift_node_annotations | default(none) }}" +      debug_level: "{{ openshift_node_debug_level | default(openshift.common.debug_level) }}" +      iptables_sync_period: "{{ openshift_node_iptables_sync_period | default(None) }}" +      kubelet_args: "{{ openshift_node_kubelet_args | default(None) }}" +      labels: "{{ lookup('oo_option', 'openshift_node_labels') | default( openshift_node_labels | default(none), true) }}" +      registry_url: "{{ oreg_url_node | default(oreg_url) | default(None) }}" +      schedulable: "{{ openshift_schedulable | default(openshift_scheduleable) | default(None) }}" +      sdn_mtu: "{{ openshift_node_sdn_mtu | default(None) }}" +      storage_plugin_deps: "{{ osn_storage_plugin_deps | default(None) }}" +      set_node_ip: "{{ openshift_set_node_ip | default(None) }}" +      node_image: "{{ osn_image | default(None) }}" +      ovs_image: "{{ osn_ovs_image | default(None) }}" +      proxy_mode: "{{ openshift_node_proxy_mode | default('iptables') }}" +      local_quota_per_fsgroup: "{{ openshift_node_local_quota_per_fsgroup | default(None) }}" +      dns_ip: "{{ openshift_dns_ip | default(none) | get_dns_ip(hostvars[inventory_hostname])}}" +      env_vars: "{{ openshift_node_env_vars | default(None) }}" diff --git a/roles/openshift_node_upgrade/tasks/config/configure-node-settings.yml b/roles/openshift_node_upgrade/tasks/config/configure-node-settings.yml new file mode 100644 index 000000000..1186062eb --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/configure-node-settings.yml @@ -0,0 +1,16 @@ +--- +- name: Configure Node settings +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node +    regexp: "{{ item.regex }}" +    line: "{{ item.line }}" +    create: true +  with_items: +  - regex: '^OPTIONS=' +    line: "OPTIONS=--loglevel={{ openshift.node.debug_level | default(2) }}" +  - regex: '^CONFIG_FILE=' +    line: "CONFIG_FILE={{ openshift.common.config_base }}/node/node-config.yaml" +  - regex: '^IMAGE_VERSION=' +    line: "IMAGE_VERSION={{ openshift_image_tag }}" +  notify: +  - restart node diff --git a/roles/openshift_node_upgrade/tasks/config/configure-proxy-settings.yml b/roles/openshift_node_upgrade/tasks/config/configure-proxy-settings.yml new file mode 100644 index 000000000..d60794305 --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/configure-proxy-settings.yml @@ -0,0 +1,17 @@ +--- +- name: Configure Proxy Settings +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node +    regexp: "{{ item.regex }}" +    line: "{{ item.line }}" +    create: true +  with_items: +  - regex: '^HTTP_PROXY=' +    line: "HTTP_PROXY={{ openshift.common.http_proxy | default('') }}" +  - regex: '^HTTPS_PROXY=' +    line: "HTTPS_PROXY={{ openshift.common.https_proxy | default('') }}" +  - regex: '^NO_PROXY=' +    line: "NO_PROXY={{ openshift.common.no_proxy | default([]) }},{{ openshift.common.portal_net }},{{ hostvars[groups.oo_first_master.0].openshift.master.sdn_cluster_network_cidr }}" +  when: ('http_proxy' in openshift.common and openshift.common.http_proxy != '') +  notify: +  - restart node diff --git a/roles/openshift_node_upgrade/tasks/config/install-node-deps-docker-service-file.yml b/roles/openshift_node_upgrade/tasks/config/install-node-deps-docker-service-file.yml new file mode 100644 index 000000000..ee91a88ab --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/install-node-deps-docker-service-file.yml @@ -0,0 +1,8 @@ +--- +- name: Install Node dependencies docker service file +  template: +    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node-dep.service" +    src: openshift.docker.node.dep.service +  notify: +  - reload systemd units +  - restart node diff --git a/roles/openshift_node_upgrade/tasks/config/install-node-docker-service-file.yml b/roles/openshift_node_upgrade/tasks/config/install-node-docker-service-file.yml new file mode 100644 index 000000000..f92ff79b5 --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/install-node-docker-service-file.yml @@ -0,0 +1,8 @@ +--- +- name: Install Node docker service file +  template: +    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node.service" +    src: openshift.docker.node.service +  notify: +  - reload systemd units +  - restart node diff --git a/roles/openshift_node_upgrade/tasks/config/install-ovs-docker-service-file.yml b/roles/openshift_node_upgrade/tasks/config/install-ovs-docker-service-file.yml new file mode 100644 index 000000000..c2c5ea1d4 --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/install-ovs-docker-service-file.yml @@ -0,0 +1,8 @@ +--- +- name: Install OpenvSwitch docker service file +  template: +    dest: "/etc/systemd/system/openvswitch.service" +    src: openvswitch.docker.service +  notify: +  - reload systemd units +  - restart openvswitch diff --git a/roles/openshift_node_upgrade/tasks/config/install-ovs-service-env-file.yml b/roles/openshift_node_upgrade/tasks/config/install-ovs-service-env-file.yml new file mode 100644 index 000000000..1d75a3355 --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/install-ovs-service-env-file.yml @@ -0,0 +1,8 @@ +--- +- name: Create the openvswitch service env file +  template: +    src: openvswitch.sysconfig.j2 +    dest: /etc/sysconfig/openvswitch +  notify: +  - reload systemd units +  - restart openvswitch diff --git a/roles/openshift_node_upgrade/tasks/config/workaround-bz1331590-ovs-oom-fix.yml b/roles/openshift_node_upgrade/tasks/config/workaround-bz1331590-ovs-oom-fix.yml new file mode 100644 index 000000000..5df1abc79 --- /dev/null +++ b/roles/openshift_node_upgrade/tasks/config/workaround-bz1331590-ovs-oom-fix.yml @@ -0,0 +1,13 @@ +--- +# May be a temporary workaround. +# https://bugzilla.redhat.com/show_bug.cgi?id=1331590 +- name: Create OpenvSwitch service.d directory +  file: path=/etc/systemd/system/openvswitch.service.d/ state=directory + +- name: Install OpenvSwitch service OOM fix +  template: +    dest: "/etc/systemd/system/openvswitch.service.d/01-avoid-oom.conf" +    src: openvswitch-avoid-oom.conf +  notify: +  - reload systemd units +  - restart openvswitch diff --git a/roles/openshift_node_upgrade/tasks/systemd_units.yml b/roles/openshift_node_upgrade/tasks/systemd_units.yml index 9b3805eea..4e9550150 100644 --- a/roles/openshift_node_upgrade/tasks/systemd_units.yml +++ b/roles/openshift_node_upgrade/tasks/systemd_units.yml @@ -18,86 +18,20 @@  # This file is included both in the openshift_master role and in the upgrade  # playbooks. -- name: Install Node dependencies docker service file -  template: -    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node-dep.service" -    src: openshift.docker.node.dep.service +- include: config/install-node-deps-docker-service-file.yml    when: openshift.common.is_containerized | bool -  notify: -  - reload systemd units -  - restart node -- name: Install Node docker service file -  template: -    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node.service" -    src: openshift.docker.node.service +- include: config/install-node-docker-service-file.yml    when: openshift.common.is_containerized | bool -  notify: -  - reload systemd units -  - restart node -- name: Create the openvswitch service env file -  template: -    src: openvswitch.sysconfig.j2 -    dest: /etc/sysconfig/openvswitch +- include: config/install-ovs-service-env-file.yml    when: openshift.common.is_containerized | bool -  notify: -  - reload systemd units -  - restart openvswitch -# May be a temporary workaround. -# https://bugzilla.redhat.com/show_bug.cgi?id=1331590 -- name: Create OpenvSwitch service.d directory -  file: path=/etc/systemd/system/openvswitch.service.d/ state=directory +- include: config/workaround-bz1331590-ovs-oom-fix.yml    when: openshift.common.use_openshift_sdn | default(true) | bool -- name: Install OpenvSwitch service OOM fix -  template: -    dest: "/etc/systemd/system/openvswitch.service.d/01-avoid-oom.conf" -    src: openvswitch-avoid-oom.conf -  when: openshift.common.use_openshift_sdn | default(true) | bool -  notify: -  - reload systemd units -  - restart openvswitch - -- name: Install OpenvSwitch docker service file -  template: -    dest: "/etc/systemd/system/openvswitch.service" -    src: openvswitch.docker.service +- include: config/install-ovs-docker-service-file.yml    when: openshift.common.is_containerized | bool and openshift.common.use_openshift_sdn | default(true) | bool -  notify: -  - reload systemd units -  - restart openvswitch - -- name: Configure Node settings -  lineinfile: -    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node -    regexp: "{{ item.regex }}" -    line: "{{ item.line }}" -    create: true -  with_items: -  - regex: '^OPTIONS=' -    line: "OPTIONS=--loglevel={{ openshift.node.debug_level | default(2) }}" -  - regex: '^CONFIG_FILE=' -    line: "CONFIG_FILE={{ openshift.common.config_base }}/node/node-config.yaml" -  - regex: '^IMAGE_VERSION=' -    line: "IMAGE_VERSION={{ openshift_image_tag }}" -  notify: -  - restart node -- name: Configure Proxy Settings -  lineinfile: -    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node -    regexp: "{{ item.regex }}" -    line: "{{ item.line }}" -    create: true -  with_items: -  - regex: '^HTTP_PROXY=' -    line: "HTTP_PROXY={{ openshift.common.http_proxy | default('') }}" -  - regex: '^HTTPS_PROXY=' -    line: "HTTPS_PROXY={{ openshift.common.https_proxy | default('') }}" -  - regex: '^NO_PROXY=' -    line: "NO_PROXY={{ openshift.common.no_proxy | default([]) }},{{ openshift.common.portal_net }},{{ hostvars[groups.oo_first_master.0].openshift.master.sdn_cluster_network_cidr }}" -  when: ('http_proxy' in openshift.common and openshift.common.http_proxy != '') -  notify: -  - restart node +- include: config/configure-node-settings.yml +- include: config/configure-proxy-settings.yml diff --git a/roles/openshift_storage_glusterfs/defaults/main.yml b/roles/openshift_storage_glusterfs/defaults/main.yml index 8661f33a1..2823a7610 100644 --- a/roles/openshift_storage_glusterfs/defaults/main.yml +++ b/roles/openshift_storage_glusterfs/defaults/main.yml @@ -1,6 +1,5 @@  ---  openshift_storage_glusterfs_timeout: 300 -openshift_storage_glusterfs_namespace: "{{ 'glusterfs' | quote if glusterfs_is_native or glusterfs_heketi_is_native else 'default' | quote }}"  openshift_storage_glusterfs_is_native: True  openshift_storage_glusterfs_name: 'storage'  openshift_storage_glusterfs_nodeselector: "glusterfs={{ openshift_storage_glusterfs_name }}-host" @@ -25,6 +24,7 @@ openshift_storage_glusterfs_heketi_ssh_port: 22  openshift_storage_glusterfs_heketi_ssh_user: 'root'  openshift_storage_glusterfs_heketi_ssh_sudo: False  openshift_storage_glusterfs_heketi_ssh_keyfile: '/dev/null' +openshift_storage_glusterfs_namespace: "{{ 'glusterfs' | quote if openshift_storage_glusterfs_is_native or openshift_storage_glusterfs_heketi_is_native else 'default' | quote }}"  openshift_storage_glusterfs_registry_timeout: "{{ openshift_storage_glusterfs_timeout }}"  openshift_storage_glusterfs_registry_namespace: "{{ openshift.hosted.registry.namespace | default(openshift_storage_glusterfs_namespace) }}" diff --git a/roles/openshift_storage_glusterfs/tasks/glusterfs_common.yml b/roles/openshift_storage_glusterfs/tasks/glusterfs_common.yml index 600d8f676..19eb3cdf7 100644 --- a/roles/openshift_storage_glusterfs/tasks/glusterfs_common.yml +++ b/roles/openshift_storage_glusterfs/tasks/glusterfs_common.yml @@ -15,7 +15,7 @@    oc_project:      state: present      name: "{{ glusterfs_namespace }}" -  when: glusterfs_is_native or glusterfs_heketi_is_native +  when: glusterfs_is_native or glusterfs_heketi_is_native or glusterfs_storageclass  - name: Delete pre-existing heketi resources    oc_obj: | 
