When using a mirror which compiles all apt sources into a single repo with the intent of relying on that repo for all package updates the /etc/apt/sources.list file must contain only the base ubuntu repo. This patch adds the ability to implement an AIO with this kind of apt sources configuration, while keeping the current configuration that's used for gating. Change-Id: Ia9785a43c9027df86f3bc94f825aba3c43a96e4c
120 lines
3.3 KiB
YAML
120 lines
3.3 KiB
YAML
---
|
|
# Copyright 2015, Rackspace US, Inc.
|
|
#
|
|
# 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.
|
|
|
|
# Ubuntu
|
|
- block:
|
|
- name: Ensure that apt supports HTTPS package sources
|
|
apt:
|
|
name: apt-transport-https
|
|
state: present
|
|
tags:
|
|
- apt-install-prerequisites
|
|
|
|
- name: Determine the existing Ubuntu repo configuration
|
|
command: 'grep -oP "^deb \K(\[?.*\]?.*ubuntu\S*\/?)(?= {{ ansible_distribution_release }} main)" /etc/apt/sources.list'
|
|
register: ubuntu_repo
|
|
when:
|
|
- bootstrap_host_ubuntu_repo is not defined
|
|
changed_when: false
|
|
tags:
|
|
- find-apt-repo
|
|
|
|
- name: Determine the existing Ubuntu Security repo configuration
|
|
command: 'grep -oP "^deb \K(\[?.*\]?.*ubuntu\S*\/?)(?= {{ ansible_distribution_release }}-security main)" /etc/apt/sources.list'
|
|
register: ubuntu_security_repo
|
|
when:
|
|
- bootstrap_host_ubuntu_security_repo is not defined
|
|
changed_when: false
|
|
failed_when: false
|
|
tags:
|
|
- find-apt-security-repo
|
|
|
|
- name: Set apt repo facts based on discovered information
|
|
set_fact:
|
|
bootstrap_host_ubuntu_repo: "{{ ubuntu_repo.stdout_lines[0] }}"
|
|
when:
|
|
- bootstrap_host_ubuntu_repo is not defined
|
|
- ubuntu_repo is defined
|
|
|
|
- name: Set apt security repo facts based on discovered information
|
|
set_fact:
|
|
bootstrap_host_ubuntu_security_repo: "{{ ubuntu_security_repo.stdout_lines[0] }}"
|
|
when:
|
|
- bootstrap_host_ubuntu_security_repo is not defined
|
|
- ubuntu_security_repo is defined
|
|
- ubuntu_security_repo.stdout_lines | length > 0
|
|
|
|
- name: Configure apt's sources.list (Ubuntu only)
|
|
template:
|
|
src: apt-sources.list.j2
|
|
dest: /etc/apt/sources.list
|
|
backup: yes
|
|
when:
|
|
- ansible_distribution == 'Ubuntu'
|
|
- bootstrap_host_ubuntu_repo is defined
|
|
register: apt_sources_configure
|
|
|
|
- name: Update apt-cache
|
|
apt:
|
|
update_cache: yes
|
|
when:
|
|
- apt_sources_configure is defined
|
|
- apt_sources_configure | changed
|
|
tags:
|
|
- apt-cache-update
|
|
|
|
when:
|
|
- ansible_pkg_mgr == 'apt'
|
|
|
|
# CentOS
|
|
- block:
|
|
- name: Install RDO package
|
|
package:
|
|
name: "{{ rdo_package }}"
|
|
state: "present"
|
|
register: install_cloud_rdo_package
|
|
until: install_cloud_rdo_package | success
|
|
retries: 5
|
|
delay: 2
|
|
|
|
- name: Install epel package
|
|
package:
|
|
name: "{{ epel_package }}"
|
|
state: "present"
|
|
register: install_epel_package
|
|
until: install_epel_package | success
|
|
retries: 5
|
|
delay: 2
|
|
|
|
when:
|
|
- ansible_pkg_mgr == 'yum'
|
|
|
|
- name: Remove known problem packages
|
|
package:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
with_items: "{{ packages_remove }}"
|
|
tags:
|
|
- remove-packages
|
|
|
|
- name: Install packages
|
|
package:
|
|
name: "{{ item }}"
|
|
state: present
|
|
with_items: "{{ packages_install }}"
|
|
tags:
|
|
- install-packages
|
|
|