diff --git a/README.md b/README.md index 19b29ebe0..c47da2703 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ Supported Linux Distributions - **Debian** Jessie, Stretch, Wheezy - **Ubuntu** 16.04, 18.04 - **CentOS/RHEL** 7 +- **Fedora** 28 - **Fedora/CentOS** Atomic - **openSUSE** Leap 42.3/Tumbleweed diff --git a/Vagrantfile b/Vagrantfile index df650f1e8..209d97580 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -18,6 +18,7 @@ SUPPORTED_OS = { "coreos-beta" => {box: "coreos-beta", bootstrap_os: "coreos", user: "core", box_url: COREOS_URL_TEMPLATE % ["beta"]}, "ubuntu" => {box: "bento/ubuntu-16.04", bootstrap_os: "ubuntu", user: "vagrant"}, "centos" => {box: "centos/7", bootstrap_os: "centos", user: "vagrant"}, + "fedora" => {box: "fedora/28-cloud-base", bootstrap_os: "fedora", user: "vagrant"}, "opensuse" => {box: "opensuse/openSUSE-42.3-x86_64", bootstrap_os: "opensuse", use: "vagrant"}, "opensuse-tumbleweed" => {box: "opensuse/openSUSE-Tumbleweed-x86_64", bootstrap_os: "opensuse", use: "vagrant"}, } @@ -127,6 +128,10 @@ Vagrant.configure("2") do |config| config.vm.provider :libvirt do |lv| lv.memory = $vm_memory + # Fix kernel panic on fedora 28 + if $os == "fedora" + lv.cpu_mode = "host-passthrough" + end end ip = "#{$subnet}.#{i+100}" diff --git a/roles/bootstrap-os/tasks/bootstrap-fedora.yml b/roles/bootstrap-os/tasks/bootstrap-fedora.yml new file mode 100644 index 000000000..4a475e73c --- /dev/null +++ b/roles/bootstrap-os/tasks/bootstrap-fedora.yml @@ -0,0 +1,20 @@ +--- + +- name: Bootstrap | Check if bootstrap is needed + raw: which "{{ item }}" + register: need_bootstrap + failed_when: false + changed_when: false + with_items: + - python + tags: facts + +- name: Install python on fedora + raw: "dnf install --assumeyes --quiet {{ item['item'] }}" + when: item['rc'] != 0 + loop: "{{ need_bootstrap['results'] }}" + +- name: Install required python packages + dnf: + name: libselinux-python + state: present diff --git a/roles/bootstrap-os/tasks/main.yml b/roles/bootstrap-os/tasks/main.yml index c921b643e..f05ab6614 100644 --- a/roles/bootstrap-os/tasks/main.yml +++ b/roles/bootstrap-os/tasks/main.yml @@ -8,6 +8,9 @@ - import_tasks: bootstrap-coreos.yml when: bootstrap_os == "coreos" +- import_tasks: bootstrap-fedora.yml + when: bootstrap_os == "fedora" + - import_tasks: bootstrap-centos.yml when: bootstrap_os == "centos" diff --git a/roles/cri-o/vars/fedora.yml b/roles/cri-o/vars/fedora.yml new file mode 100644 index 000000000..86be95f67 --- /dev/null +++ b/roles/cri-o/vars/fedora.yml @@ -0,0 +1,5 @@ +--- +crio_packages: + - cri-o + +crio_service: cri-o diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml index 2d6681b34..ae8eefbd3 100644 --- a/roles/docker/defaults/main.yml +++ b/roles/docker/defaults/main.yml @@ -26,6 +26,9 @@ yum_conf: /etc/yum.conf yum_repo_dir: /etc/yum.repos.d docker_yum_conf: /etc/yum_docker.conf +# Fedora docker-ce repo +docker_fedora_repo_base_url: 'https://download.docker.com/linux/fedora/$releasever/$basearch/stable' +docker_fedora_repo_gpgkey: 'https://download.docker.com/linux/fedora/gpg' # CentOS/RedHat docker-ce repo docker_rh_repo_base_url: 'https://download.docker.com/linux/centos/7/$basearch/stable' docker_rh_repo_gpgkey: 'https://download.docker.com/linux/centos/gpg' diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 5835dff10..0ba076deb 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -89,6 +89,12 @@ - use_docker_engine is defined and use_docker_engine - not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS", "RedHat", "Suse"] or is_atomic) and (dockerproject_repo_info.repos|length > 0) +- name: Configure docker repository on Fedora + template: + src: "fedora_docker.repo.j2" + dest: "{{ yum_repo_dir }}/docker.repo" + when: ansible_distribution == "Fedora" and not is_atomic + - name: Configure docker repository on RedHat/CentOS template: src: "rh_docker.repo.j2" @@ -118,7 +124,7 @@ force: "{{item.force|default(omit)}}" conf_file: "{{item.yum_conf|default(omit)}}" state: present - update_cache: yes + update_cache: "{{ omit if ansible_distribution == 'Fedora' else True }}" register: docker_task_result until: docker_task_result|succeeded retries: 4 @@ -130,13 +136,17 @@ - name: get available packages on Ubuntu command: apt-cache policy docker-ce - when: docker_task_result|failed + when: + - docker_task_result|failed + - ansible_distribution == 'Ubuntu' register: available_packages - name: show available packages on ubuntu fail: msg: "{{available_packages}}" - when: docker_task_result|failed + when: + - docker_task_result|failed + - ansible_distribution == 'Ubuntu' # This is required to ensure any apt upgrade will not break kubernetes - name: Set docker pin priority to apt_preferences on Debian family diff --git a/roles/docker/templates/fedora_docker.repo.j2 b/roles/docker/templates/fedora_docker.repo.j2 new file mode 100644 index 000000000..6525f1133 --- /dev/null +++ b/roles/docker/templates/fedora_docker.repo.j2 @@ -0,0 +1,7 @@ +[docker-ce] +name=Docker-CE Repository +baseurl={{ docker_fedora_repo_base_url }} +enabled=1 +gpgcheck=1 +gpgkey={{ docker_fedora_repo_gpgkey }} +{% if http_proxy is defined %}proxy={{ http_proxy }}{% endif %} diff --git a/roles/docker/vars/fedora.yml b/roles/docker/vars/fedora.yml new file mode 100644 index 000000000..2388f1ffc --- /dev/null +++ b/roles/docker/vars/fedora.yml @@ -0,0 +1,20 @@ +--- +docker_kernel_min_version: '0' + +# https://docs.docker.com/install/linux/docker-ce/fedora/ + +docker_versioned_pkg: + 'latest': docker-ce + '18.03': docker-ce-18.03.1.ce-3.fc28 + '18.06': docker-ce-18.06.1.ce-3.fc28 + +# +# This is due to the fact that the docker +# packages available on Fedora are too recent +# +docker_version: "latest" + +docker_package_info: + pkg_mgr: dnf + pkgs: + - name: "{{ docker_versioned_pkg[docker_version | string] }}" \ No newline at end of file diff --git a/roles/rkt/tasks/install.yml b/roles/rkt/tasks/install.yml index f881a81fe..91ab4bac6 100644 --- a/roles/rkt/tasks/install.yml +++ b/roles/rkt/tasks/install.yml @@ -25,6 +25,12 @@ delay: "{{ retry_stagger | random + 3 }}" when: ansible_os_family == "Debian" +- name: install rkt pkg on fedora + dnf: + name: rkt + state: present + when: ansible_distribution == "Fedora" + - name: install rkt pkg on centos yum: pkg: "{{ rkt_download_url }}/{{ rkt_pkg_name }}" @@ -33,7 +39,9 @@ until: rkt_task_result|succeeded retries: 4 delay: "{{ retry_stagger | random + 3 }}" - when: ansible_os_family == "RedHat" + when: + - ansible_os_family == "RedHat" + - ansible_distribution != "Fedora" - name: install rkt pkg on openSUSE zypper: