48aea5637f
Kolla Ansible's bootstrap-servers command provides support for installing the Docker engine. This is currently done using the packages at https://apt.dockerproject.org and https://yum.dockerproject.org. These packages are outdated, with the most recent packages from May 2017 - docker-engine-17.05. The source for up to date docker packages is https://download.docker.com, which was introduced with the move to Docker Community Edition (CE) and Docker Enterprise Edition (EE). This change adds support to bootstrap-servers for Docker CE for CentOS and Ubuntu. It also adds a new variable, 'enable_docker_repo', which controls whether a package repository for Docker will be enabled. It also adds a new variable, 'docker_legacy_packages', which controls whether the legacy packages at dockerproject.org will be used or the newer packages at docker.com. The default value for this variable is 'false', meaning to use Docker CE. Upgrading from docker-engine to docker-ce has been tested on CentOS 7.5 and Ubuntu 16.04, by running 'kolla-ansible bootstrap-servers' with 'docker_legacy_packages' set to 'false'. The upgrades were successful, but result in all containers being stopped. For this reason, the bootstrap-servers command checks running containers prior to upgrading packages, and ensures they are running after the package upgrade is complete. As mentioned in the release note, care should be taken when upgrading Docker with clustered services, which could lose quorum. To avoid this, use --serial or --limit to apply the change in batches. Change-Id: I6dfd375c868870f8646ef1a8f02c70812e8f6271 Implements: blueprint docker-ce
112 lines
3.2 KiB
YAML
112 lines
3.2 KiB
YAML
---
|
|
# NOTE: raw install is required to support cloud images which do not have python installed
|
|
- name: "Install python2 and python-simplejson"
|
|
become: True
|
|
raw: "yum install -y python python-simplejson || (apt-get update && apt-get install -y python2.7 python-simplejson)"
|
|
|
|
- name: Gather facts
|
|
setup:
|
|
|
|
- name: Ensure localhost in /etc/hosts
|
|
lineinfile:
|
|
dest: /etc/hosts
|
|
regexp: "^127.0.0.1.*"
|
|
line: "127.0.0.1 localhost"
|
|
state: present
|
|
become: True
|
|
when: customize_etc_hosts | bool
|
|
|
|
- name: Generate /etc/hosts for all of the nodes
|
|
blockinfile:
|
|
dest: /etc/hosts
|
|
marker: "# {mark} ANSIBLE GENERATED HOSTS"
|
|
block: |
|
|
{% for host in groups['baremetal'] %}
|
|
{% set api_interface = hostvars[host]['api_interface'] %}
|
|
{% if host not in groups['bifrost'] or 'ansible_' + api_interface in hostvars[host] %}
|
|
{{ hostvars[host]['ansible_' + api_interface]['ipv4']['address'] }} {{ hostvars[host]['ansible_hostname'] }}
|
|
{% endif %}
|
|
{% endfor %}
|
|
become: True
|
|
when:
|
|
- customize_etc_hosts | bool
|
|
# Skip hosts in the bifrost group that do not have a valid api_interface.
|
|
- inventory_hostname not in groups['bifrost'] or
|
|
'ansible_' + hostvars[inventory_hostname]['api_interface'] in hostvars[inventory_hostname]
|
|
|
|
- name: Ensure sudo group is present
|
|
group:
|
|
name: sudo
|
|
state: present
|
|
become: True
|
|
|
|
- name: Ensure kolla group is present
|
|
group:
|
|
name: "{{ kolla_group }}"
|
|
state: present
|
|
become: True
|
|
when: create_kolla_user | bool
|
|
|
|
- block:
|
|
- block:
|
|
- name: Install apt packages
|
|
apt:
|
|
update_cache: yes
|
|
become: True
|
|
|
|
- name: Install ca certs
|
|
package:
|
|
name: "{{ item }}"
|
|
state: latest
|
|
become: True
|
|
with_items:
|
|
- ca-certificates
|
|
- apt-transport-https
|
|
|
|
- name: Ensure apt sources list directory exists
|
|
file:
|
|
path: /etc/apt/sources.list.d
|
|
state: directory
|
|
recurse: yes
|
|
become: True
|
|
|
|
- name: Install docker apt gpg key
|
|
apt_key:
|
|
url: "{{ docker_apt_url }}/{{ docker_apt_key_file }}"
|
|
id: "{{ docker_apt_key_id }}"
|
|
state: present
|
|
become: True
|
|
|
|
- name: Enable docker apt repository
|
|
apt_repository:
|
|
repo: "{{ docker_apt_repo }}"
|
|
filename: docker
|
|
become: True
|
|
when: ansible_os_family == 'Debian'
|
|
|
|
- block:
|
|
- name: Ensure yum repos directory exists
|
|
file:
|
|
path: /etc/yum.repos.d/
|
|
state: directory
|
|
recurse: yes
|
|
become: True
|
|
|
|
- name: Enable docker yum repository
|
|
yum_repository:
|
|
name: docker
|
|
description: Docker main Repository
|
|
baseurl: "{{ docker_yum_baseurl }}"
|
|
gpgcheck: "{{ docker_yum_gpgcheck | bool }}"
|
|
gpgkey: "{{ docker_yum_gpgkey }}"
|
|
become: True
|
|
|
|
- name: Install docker rpm gpg key
|
|
rpm_key:
|
|
state: present
|
|
key: "{{ docker_yum_url }}/gpg"
|
|
become: True
|
|
when: docker_yum_gpgcheck | bool
|
|
when: ansible_os_family == 'RedHat'
|
|
when: enable_docker_repo | bool
|