Support the scenario for installing kubernetes in ubuntu system 99/47699/1
authorhu xinhui <xinhui_hu@foxmail.com>
Tue, 14 Nov 2017 01:40:32 +0000 (09:40 +0800)
committerYifei Xue <xueyifei@huawei.com>
Thu, 23 Nov 2017 08:52:56 +0000 (08:52 +0000)
JIRA: -

Currently we only support the the scenario for installing kubernetes
in centos system. This patch is to install kubernetes in ubuntu system

Change-Id: Idc5eafea5d02c28c62a31e4c29451b8c5aaf1fd5
Signed-off-by: hu xinhui <xinhui_hu@foxmail.com>
(cherry picked from commit a9f6a2b1665a31bbdaf266c333410bde2418cf15)

deploy/adapters/ansible/kubernetes/roles/install-k8s-dependence/tasks/main.yml
deploy/adapters/ansible/kubernetes/roles/kargo/tasks/main.yml
deploy/adapters/ansible/kubernetes/roles/pre-k8s/files/sources.list.official [new file with mode: 0644]
deploy/adapters/ansible/kubernetes/roles/pre-k8s/tasks/Ubuntu.yml
deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/files/apt.conf [new file with mode: 0644]
deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/handlers/main.yml [new file with mode: 0644]
deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/RedHat.yml [new file with mode: 0644]
deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/Ubuntu.yml [new file with mode: 0644]
deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/main.yml
deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/templates/ubuntu_network.j2 [new file with mode: 0644]

index ae70427..6487e4e 100644 (file)
     state: "present"
   with_items: "{{ packages }}"
   when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7'
+
+- name: Install apt packages
+  apt:
+    pkg: "{{ item }}"
+    state: "present"
+  with_items: "{{ packages }}"
+  when: ansible_os_family == 'Debian'
index d3dcb87..08e1dd0 100644 (file)
     path: /etc/yum.repos.d
     state: absent
   run_once: "True"
+  when: ansible_os_family == 'RedHat'
 
 - name: create local repo conf dir
   file:
     path: /etc/yum.repos.d
     state: directory
   run_once: "True"
+  when: ansible_os_family == 'RedHat'
 
 - name: configure local mirror repo
   copy:
     src: mirrors.repo
     dest: /etc/yum.repos.d/mirrors.repo
   run_once: "True"
+  when: ansible_os_family == 'RedHat'
 
 - name: clean local pip conf to use official pip repo
   file:
@@ -41,6 +44,7 @@
     - openssl-devel
     - python-devel
   run_once: "True"
+  when: ansible_os_family == 'RedHat'
 
 - name: update python packages
   pip:
diff --git a/deploy/adapters/ansible/kubernetes/roles/pre-k8s/files/sources.list.official b/deploy/adapters/ansible/kubernetes/roles/pre-k8s/files/sources.list.official
new file mode 100644 (file)
index 0000000..799e4b5
--- /dev/null
@@ -0,0 +1,36 @@
+# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
+# newer versions of the distribution.
+
+deb http://archive.ubuntu.com/ubuntu/ xenial main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted
+
+## Major bug fix updates produced after the final release of the
+## distribution.
+deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
+
+## Uncomment the following two lines to add software from the 'universe'
+## repository.
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team. Also, please note that software in universe WILL NOT receive any
+## review or updates from the Ubuntu security team.
+deb http://archive.ubuntu.com/ubuntu/ xenial universe
+deb-src http://archive.ubuntu.com/ubuntu/ xenial universe
+deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates universe
+
+## N.B. software from this repository may not have been tested as
+## extensively as that contained in the main release, although it includes
+## newer versions of some applications which may provide useful features.
+## Also, please note that software in backports WILL NOT receive any review
+## or updates from the Ubuntu security team.
+# deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
+# deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted
+deb http://archive.ubuntu.com/ubuntu/ xenial-security universe
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-security universe
+# deb http://archive.ubuntu.com/ubuntu/ xenial-security multiverse
+# deb-src http://archive.ubuntu.com/ubuntu/ xenial-security multiverse
+
index 5bb7748..8054267 100644 (file)
     path: /etc/apt/apt.conf
     state: absent
 
+- name: rm sources.list
+  file:
+    path: /etc/apt/sources.list
+    state: absent
+
+- name: remove the space end of the line in the resolv.conf
+  shell: "sed -i 's/ *$//' /etc/resolv.conf"
+
+- name: change sources list
+  copy:
+    src: sources.list.official
+    dest: /etc/apt/sources.list
+
+- name: update apt cache
+  apt: update_cache=yes
+
 - name: restart ntp service
   shell: "service ntp restart"
 
diff --git a/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/files/apt.conf b/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/files/apt.conf
new file mode 100644 (file)
index 0000000..bd8929d
--- /dev/null
@@ -0,0 +1,4 @@
+APT::Get::Assume-Yes "true";
+APT::Get::force-yes "true";
+APT::Get::AllowUnauthenticated "true";
+
diff --git a/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/handlers/main.yml b/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/handlers/main.yml
new file mode 100644 (file)
index 0000000..3d979e6
--- /dev/null
@@ -0,0 +1,11 @@
+##############################################################################
+## Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+## All rights reserved. This program and the accompanying materials
+## are made available under the terms of the Apache License, Version 2.0
+## which accompanies this distribution, and is available at
+## http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: restart network service
+  shell: "/sbin/ifconfig eth0 0 &&/sbin/ifdown -a && \
+          /sbin/ifup --ignore-errors -a"
diff --git a/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/RedHat.yml b/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/RedHat.yml
new file mode 100644 (file)
index 0000000..c59fdfc
--- /dev/null
@@ -0,0 +1,66 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: disable NetworkManager
+  service: name=NetworkManager state=stopped enabled=no
+  when: ansible_os_family == 'RedHat'
+
+- name: enable network service
+  service: name=network state=started enabled=yes
+  when: ansible_os_family == 'RedHat'
+
+- name: ensure script dir exist
+  shell: mkdir -p /opt/setup_networks
+
+- name: copy scripts
+  copy: src={{ item }} dest=/opt/setup_networks
+  with_items:
+    - setup_networks/log.py
+    - setup_networks/setup_networks.py
+    - setup_networks/check_network.py
+  tags:
+    - network_check
+
+
+- name: copy config files
+  template: src=network.cfg dest=/opt/setup_networks
+
+- name: config external nic
+  template:
+    src: ifcfg-eth.j2
+    dest: /etc/sysconfig/network-scripts/ifcfg-{{sys_intf_mappings["external"]["interface"]}}
+
+- name: remove defualt gw
+  lineinfile:
+    dest: /etc/sysconfig/network
+    regexp: "^GATEWAY=*"
+    state: absent
+
+- name: restart the network
+  shell: systemctl restart network
+
+- name: make sure python lib exist
+  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+  with_items:
+    - python-yaml
+    - python-netaddr
+
+- name: check basic network connectivity
+  shell: >
+    python /opt/setup_networks/check_network.py \
+           "{{ inventory_hostname }}" \
+           "{{ ip_settings | to_json }}"
+  register: result
+  until: result.stderr.find('unreachable')==-1
+  retries: 3
+  delay: 2
+  tags:
+    - network_check
+
+- meta: flush_handlers
diff --git a/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/Ubuntu.yml b/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/tasks/Ubuntu.yml
new file mode 100644 (file)
index 0000000..908b15f
--- /dev/null
@@ -0,0 +1,53 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: ensure script dir exist
+  shell: mkdir -p /opt/setup_networks
+
+- name: copy scripts
+  copy: src={{ item }} dest=/opt/setup_networks
+  with_items:
+    - setup_networks/log.py
+    - setup_networks/setup_networks.py
+    - setup_networks/check_network.py
+  tags:
+    - network_check
+
+- name: copy config files
+  template: src=network.cfg dest=/opt/setup_networks
+
+- name: backup  network config file
+  shell: mv /etc/network/interfaces /etc/network/interfaces.bak
+
+- name: config  network
+  template:
+    src: ubuntu_network.j2
+    dest: /etc/network/interfaces
+  notify:
+    - restart network service
+
+- meta: flush_handlers
+
+- name: make sure python lib exist
+  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+  with_items:
+    - python-yaml
+    - python-netaddr
+
+- name: check basic network connectivity
+  shell: >
+    python /opt/setup_networks/check_network.py \
+           "{{ inventory_hostname }}" \
+           "{{ ip_settings | to_json }}"
+  register: result
+  until: result.stderr.find('unreachable')==-1
+  retries: 3
+  delay: 2
+  tags:
+    - network_check
index c59fdfc..674c80c 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
 #
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
@@ -7,60 +7,8 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 ---
-- name: disable NetworkManager
-  service: name=NetworkManager state=stopped enabled=no
-  when: ansible_os_family == 'RedHat'
+- include: "{{ ansible_distribution }}.yml"
+  when: ansible_distribution == 'Ubuntu'
 
-- name: enable network service
-  service: name=network state=started enabled=yes
-  when: ansible_os_family == 'RedHat'
-
-- name: ensure script dir exist
-  shell: mkdir -p /opt/setup_networks
-
-- name: copy scripts
-  copy: src={{ item }} dest=/opt/setup_networks
-  with_items:
-    - setup_networks/log.py
-    - setup_networks/setup_networks.py
-    - setup_networks/check_network.py
-  tags:
-    - network_check
-
-
-- name: copy config files
-  template: src=network.cfg dest=/opt/setup_networks
-
-- name: config external nic
-  template:
-    src: ifcfg-eth.j2
-    dest: /etc/sysconfig/network-scripts/ifcfg-{{sys_intf_mappings["external"]["interface"]}}
-
-- name: remove defualt gw
-  lineinfile:
-    dest: /etc/sysconfig/network
-    regexp: "^GATEWAY=*"
-    state: absent
-
-- name: restart the network
-  shell: systemctl restart network
-
-- name: make sure python lib exist
-  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
-  with_items:
-    - python-yaml
-    - python-netaddr
-
-- name: check basic network connectivity
-  shell: >
-    python /opt/setup_networks/check_network.py \
-           "{{ inventory_hostname }}" \
-           "{{ ip_settings | to_json }}"
-  register: result
-  until: result.stderr.find('unreachable')==-1
-  retries: 3
-  delay: 2
-  tags:
-    - network_check
-
-- meta: flush_handlers
+- include: "{{ ansible_os_family }}.yml"
+  when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7'
diff --git a/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/templates/ubuntu_network.j2 b/deploy/adapters/ansible/kubernetes/roles/setup-k8s-network/templates/ubuntu_network.j2
new file mode 100644 (file)
index 0000000..cca6c96
--- /dev/null
@@ -0,0 +1,23 @@
+# This file describes the network interfaces available on your system
+# and how to activate them. For more information, see interfaces(5).
+
+# The loopback network interface
+auto lo
+iface lo inet loopback
+
+# mgnt and deploy interface
+{% set intf_mgmt = sys_intf_mappings["mgmt"]["interface"] %}
+auto {{ intf_mgmt }}
+iface {{ intf_mgmt }} inet static
+    address {{ ip_settings[inventory_hostname]["mgmt"]["ip"] }}
+    netmask 255.255.255.0
+
+# external interface
+{% set intf_external = sys_intf_mappings["external"]["interface"] %}
+auto {{ intf_external }}
+iface {{ intf_external }} inet static
+    address {{ ip_settings[inventory_hostname]["external"]["ip"] }}
+    netmask 255.255.255.0
+    gateway {{ ip_settings[inventory_hostname]["external"]["gw"] }}
+    nameserver 8.8.8.8
+