diff --git a/deploy-guide/source/deploymenthost.rst b/deploy-guide/source/deploymenthost.rst index 5d933247e6..5b630e319a 100644 --- a/deploy-guide/source/deploymenthost.rst +++ b/deploy-guide/source/deploymenthost.rst @@ -24,12 +24,13 @@ Install one of the following supported operating systems on the deployment hosts: * `Ubuntu server 16.04 (Xenial Xerus) LTS 64-bit `_ +* `Centos 7 64-bit `_ Configure at least one network interface to access the Internet or suitable local repositories. -Configure the operating system -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Configure the operating system (Ubuntu) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Install additional software packages and configure Network Time Protocol (NTP). Before you begin, we recommend upgrading your system packages and kernel. @@ -40,6 +41,7 @@ Before you begin, we recommend upgrading your system packages and kernel. # apt-get update + #. Upgrade the system packages and kernel: .. code-block:: shell-session @@ -58,6 +60,30 @@ Before you begin, we recommend upgrading your system packages and kernel. #. Configure NTP to synchronize with a suitable time source. +Configure the operating system (CentOS) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Install additional software packages and configure Network Time Protocol (NTP). +Before you begin, we recommend upgrading your system packages and kernel. + +#. Upgrade the system packages and kernel + + .. code-block:: shell-session + + # yum upgrade + +#. Reboot the host. + +#. Install additional software packages if they were not installed + during the operating system installation: + + .. code-block:: shell-session + + # yum install git centos-release-openstack-newton ntp ntpdate \ + openssh-server python-devel sudo '@Development Tools' + +#. Configure NTP to synchronize with a suitable time source. + Configure the network ~~~~~~~~~~~~~~~~~~~~~ diff --git a/deploy-guide/source/overview-requirements.rst b/deploy-guide/source/overview-requirements.rst index 5cc8130785..22b465d29e 100644 --- a/deploy-guide/source/overview-requirements.rst +++ b/deploy-guide/source/overview-requirements.rst @@ -11,9 +11,17 @@ Software requirements Ensure that all hosts within an OpenStack-Ansible (OSA) environment meet the following minimum requirements: -* Ubuntu 16.04 LTS (Xenial Xerus) +* Ubuntu -* Linux kernel version ``3.13.0-34-generic`` or later is required. + * Ubuntu 16.04 LTS (Xenial Xerus) + + * Linux kernel version ``3.13.0-34-generic`` or later is required. + +* CentOS (support is experimental) + + * Centos 7, fully updated. + + * Linux kernel verison ``3.10.0`` or later. * Secure Shell (SSH) client and server that support public key authentication diff --git a/deploy-guide/source/targethosts-prepare.rst b/deploy-guide/source/targethosts-prepare.rst index 8923daa8d7..7da140eef8 100644 --- a/deploy-guide/source/targethosts-prepare.rst +++ b/deploy-guide/source/targethosts-prepare.rst @@ -13,6 +13,7 @@ Install one of the following supported operating systems on the target host: * Ubuntu server 16.04 (Xenial Xerus) LTS 64-bit +* Centos 7 64-bit Configure at least one network interface to access the Internet or suitable local repositories. @@ -25,8 +26,8 @@ installation on target hosts that do not have local (console) access. We also recommend setting your locale to `en_US.UTF-8`. Other locales might work, but they are not tested or supported. -Configure the operating system -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Configure the operating system (Ubuntu) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #. Update package source lists @@ -72,6 +73,48 @@ Configure the operating system #. Reboot the host to activate the changes and use the new kernel. +Configure the operating system (CentOS) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Upgrade the system packages and kernel: + + .. code-block:: shell-session + + # yum upgrade + +#. Reboot the host. + +#. Ensure that the kernel version is ``3.10`` or later: + + .. code-block:: shell-session + + # uname -r + +#. Install additional software packages: + + .. code-block:: shell-session + + # yum install epel-release + # yum install bridge-utils debootstrap iputils lsof lvm2 \ + ntp ntpdate openssh-server sudo tcpdump vconfig + +#. Add the appropriate kernel modules to the ``/etc/modules`` file to + enable VLAN and bond interfaces: + + .. code-block:: shell-session + + # echo 'bonding' >> /etc/modules-load.d/openstack-ansible.conf + # echo '8021q' >> /etc/modules-load.d/openstack-ansible.conf + +#. Configure Network Time Protocol (NTP) in ``/etc/ntp.conf`` to + synchronize with a suitable time source and restart the service: + + .. code-block:: shell-session + + # service ntpd restart + +#. Reboot the host to activate the changes and use the new kernel. + Deploying Secure Shell (SSH) keys ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/source/developer-docs/quickstart-aio.rst b/doc/source/developer-docs/quickstart-aio.rst index 5e2adf5c67..c0b3842645 100644 --- a/doc/source/developer-docs/quickstart-aio.rst +++ b/doc/source/developer-docs/quickstart-aio.rst @@ -53,9 +53,17 @@ system packages are upgraded and then reboot into the new kernel: .. code-block:: shell-session + ## Ubuntu # apt-get dist-upgrade # reboot +.. code-block:: shell-session + + ## CentOS + # yum upgrade + # yum install centos-release-openstack-newton git + # reboot + .. note:: If you are installing with limited connectivity, please review @@ -91,7 +99,7 @@ version. .. note:: The |current_release_formal_name| release is only compatible with Ubuntu - 16.04 (Xenial Xerus). + 16.04 (Xenial Xerus) and Centos 7. By default the scripts deploy all OpenStack services with sensible defaults for the purpose of a gate check, development or testing system. diff --git a/releasenotes/notes/Add-CentOS-support-9a63262163dfb678.yaml b/releasenotes/notes/Add-CentOS-support-9a63262163dfb678.yaml new file mode 100644 index 0000000000..5bfa7bc5b4 --- /dev/null +++ b/releasenotes/notes/Add-CentOS-support-9a63262163dfb678.yaml @@ -0,0 +1,4 @@ +--- +features: + - There is now experimental support to deploy OpenStack-Ansible on CentOS 7 for both development + and test environments. diff --git a/tests/bootstrap-aio.yml b/tests/bootstrap-aio.yml index f0f147493a..49ca3ebed6 100644 --- a/tests/bootstrap-aio.yml +++ b/tests/bootstrap-aio.yml @@ -62,6 +62,7 @@ - name: neutron.yml.aio - name: nova.yml.aio - name: swift.yml.aio + sftp_subsystem: "{{ (ansible_pkg_mgr == 'apt') | ternary('sftp /usr/lib/openssh/sftp-server','sftp /usr/libexec/openssh/sftp-server') }}" sshd: ListenAddress: - 0.0.0.0 @@ -93,7 +94,7 @@ PrintLastLog: no TCPKeepAlive: yes AcceptEnv: "LANG LC_*" - Subsystem: "sftp /usr/lib/openssh/sftp-server" + Subsystem: "{{ sftp_subsystem }}" UsePAM: yes UseDNS: no X11Forwarding: no @@ -101,3 +102,6 @@ CompressionLevel: 6 MaxSessions: 100 MaxStartups: "100:100:100" + GSSAPIAuthentication: no + GSSAPICleanupCredentials: no + diff --git a/tests/roles/bootstrap-host/defaults/main.yml b/tests/roles/bootstrap-host/defaults/main.yml index 29ced5dd60..66700b973c 100644 --- a/tests/roles/bootstrap-host/defaults/main.yml +++ b/tests/roles/bootstrap-host/defaults/main.yml @@ -121,6 +121,22 @@ bootstrap_host_encapsulation_interfaces: friendly_name: "Encapsulation of br-vlan with VXLAN" # # Bridges +bridges: + - name: "br-mgmt" + ip_addr: "172.29.236.100" + netmask: "255.255.252.0" + - name: "br-vxlan" + ip_addr: "172.29.240.100" + netmask: "255.255.252.0" + - name: "br-storage" + ip_addr: "172.29.244.100" + netmask: "255.255.252.0" + - name: "br-vlan" + ip_addr: "172.29.248.100" + alias: "172.29.248.1" + veth_peer: "eth12" + netmask: "255.255.252.0" + bootstrap_host_bridges_interfaces: br-mgmt: ports: "{{ bootstrap_host_encapsulation_enabled | bool | ternary ('encap-mgmt', bootstrap_host_bridge_mgmt_ports) }}" diff --git a/tests/roles/bootstrap-host/tasks/install-apt.yml b/tests/roles/bootstrap-host/tasks/install-apt.yml deleted file mode 100644 index 9d1e5b21b3..0000000000 --- a/tests/roles/bootstrap-host/tasks/install-apt.yml +++ /dev/null @@ -1,77 +0,0 @@ ---- -# 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. - -- 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 - 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] }}" - bootstrap_host_ubuntu_security_repo: "{{ ubuntu_security_repo.stdout_lines[0] }}" - when: - - bootstrap_host_ubuntu_repo is not defined - - bootstrap_host_ubuntu_security_repo is not defined - - ubuntu_repo is defined - - ubuntu_security_repo is defined - -- 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 - - bootstrap_host_ubuntu_security_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 - -- name: Remove known problem packages - apt: - name: "{{ item }}" - state: absent - with_items: "{{ packages_remove }}" - tags: - - remove-packages diff --git a/tests/roles/bootstrap-host/tasks/install_packages.yml b/tests/roles/bootstrap-host/tasks/install_packages.yml new file mode 100644 index 0000000000..19c18054d3 --- /dev/null +++ b/tests/roles/bootstrap-host/tasks/install_packages.yml @@ -0,0 +1,114 @@ +--- +# 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 + 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] }}" + bootstrap_host_ubuntu_security_repo: "{{ ubuntu_security_repo.stdout_lines[0] }}" + when: + - bootstrap_host_ubuntu_repo is not defined + - bootstrap_host_ubuntu_security_repo is not defined + - ubuntu_repo is defined + - ubuntu_security_repo is defined + + - 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 + - bootstrap_host_ubuntu_security_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 + diff --git a/tests/roles/bootstrap-host/tasks/main.yml b/tests/roles/bootstrap-host/tasks/main.yml index 4f4f22efdb..3fa16fed4b 100644 --- a/tests/roles/bootstrap-host/tasks/main.yml +++ b/tests/roles/bootstrap-host/tasks/main.yml @@ -40,18 +40,7 @@ tags: - create-directories -# Configure apt in a known way to reduce the chance of unexpected failures -- include: install-apt.yml - when: - - ansible_pkg_mgr == 'apt' - tags: - - install-apt - -- name: Install packages - package: - name: "{{ item }}" - state: present - with_items: "{{ packages_install }}" +- include: install_packages.yml tags: - install-packages diff --git a/tests/roles/bootstrap-host/tasks/prepare_loopback_cinder.yml b/tests/roles/bootstrap-host/tasks/prepare_loopback_cinder.yml index 493b23c967..38fd224cc2 100644 --- a/tests/roles/bootstrap-host/tasks/prepare_loopback_cinder.yml +++ b/tests/roles/bootstrap-host/tasks/prepare_loopback_cinder.yml @@ -36,7 +36,7 @@ - name: Ensure that rc.local exists file: - path: /etc/rc.local + path: "{{ rc_local }}" state: touch mode: "u+x" tags: @@ -48,9 +48,9 @@ # after the boot process completes. - name: Create loopback devices at boot time lineinfile: - dest: /etc/rc.local + dest: "{{ rc_local }}" line: "losetup $(losetup -f) /openstack/cinder.img" - insertbefore: "^exit 0$" + insertbefore: "{{ rc_local_insert_before }}" tags: - cinder-rc-config diff --git a/tests/roles/bootstrap-host/tasks/prepare_loopback_swap.yml b/tests/roles/bootstrap-host/tasks/prepare_loopback_swap.yml index 42654512c0..56c9ae7471 100644 --- a/tests/roles/bootstrap-host/tasks/prepare_loopback_swap.yml +++ b/tests/roles/bootstrap-host/tasks/prepare_loopback_swap.yml @@ -19,7 +19,7 @@ rescue: - name: Create swap file - command: "fallocate -l {{ bootstrap_host_swap_size }}G /openstack/swap.img" + command: "{{ swap_create_command }}" args: creates: /openstack/swap.img register: swap_create diff --git a/tests/roles/bootstrap-host/tasks/prepare_networking.yml b/tests/roles/bootstrap-host/tasks/prepare_networking.yml index f07a77773b..8f43592810 100644 --- a/tests/roles/bootstrap-host/tasks/prepare_networking.yml +++ b/tests/roles/bootstrap-host/tasks/prepare_networking.yml @@ -13,41 +13,91 @@ # See the License for the specific language governing permissions and # limitations under the License. -- name: Ensure that /etc/network/interfaces.d/ exists +- name: Ensure that /etc/network/interfaces.d/ exists (Debian) file: path: /etc/network/interfaces.d/ state: directory tags: - networking-dir-create + when: + - ansible_pkg_mgr == 'apt' -- name: Copy AIO network configuration +- name: Copy AIO network configuration (Debian) template: src: osa_interfaces.cfg.j2 dest: /etc/network/interfaces.d/osa_interfaces.cfg register: osa_interfaces - when: bootstrap_host_aio_config | bool + when: + - bootstrap_host_aio_config | bool + - ansible_pkg_mgr == 'apt' tags: - networking-interfaces-file -- name: Copy multinode network configuration +- name: Copy network configuration (RedHat) + template: + src: "redhat_interface_{{ item.type | default('default') }}.cfg.j2" + dest: "/etc/sysconfig/network-scripts/ifcfg-{{ item.name | default('br-mgmt') }}" + with_items: "{{ bridges }}" + register: network_interfaces_rhel + when: + - ansible_pkg_mgr == 'yum' + +- name: Create alias file when required (RedHat) + template: + src: "redhat_interface_alias.cfg.j2" + dest: "/etc/sysconfig/network-scripts/ifcfg-{{ item.name | default('br-mgmt')}}:0" + with_items: "{{ bridges }}" + when: + - ansible_pkg_mgr == 'yum' + - item.alias is defined + +- name: Put down post-up script for veth-peer interfaces (RedHat) + template: + src: "redhat_interface_{{ item[0] | default('default') }}.cfg.j2" + dest: "/etc/sysconfig/network-scripts/{{ item[0] }}-veth-{{ item[1].name | default('br-mgmt') }}-2-{{ item[1].veth_peer | default('eth1') }}" + mode: "0755" + with_nested: + - [ "ifup-post", "ifdown-post" ] + - "{{ bridges }}" + when: + - item[1].veth_peer is defined + - ansible_pkg_mgr == 'yum' + +- name: Ensure the postup/postdown scripts are loaded (RedHat) + lineinfile: + dest: "/etc/sysconfig/network-scripts/{{ item[0] }}" + line: ". /etc/sysconfig/network-scripts/{{ item[0] }}-veth-{{ item[1].name | default('br-mgmt') }}-2-{{ item[1].veth_peer | default('eth1') }}" + insertbefore: "^exit 0" + with_nested: + - [ "ifup-post", "ifdown-post" ] + - "{{ bridges }}" + when: + - item[1].veth_peer is defined + - ansible_pkg_mgr == 'yum' + +- name: Copy multinode network configuration (Debian) template: src: osa_interfaces_multinode.cfg.j2 dest: /etc/network/interfaces.d/osa_interfaces.cfg register: osa_multinode_interfaces - when: not bootstrap_host_aio_config | bool + when: + - not bootstrap_host_aio_config | bool + - ansible_pkg_mgr == 'apt' tags: - networking-interfaces-file -- name: Ensure our interfaces.d configuration files are loaded automatically +- name: Ensure our interfaces.d configuration files are loaded automatically (Debian) lineinfile: dest: /etc/network/interfaces line: "source /etc/network/interfaces.d/*.cfg" + when: + - ansible_pkg_mgr == 'apt' tags: - networking-interfaces-load - name: Shut down the network interfaces command: "ifdown {{ item }}" - when: osa_interfaces | changed or osa_multinode_interfaces | changed + when: osa_interfaces | changed or osa_multinode_interfaces | changed or network_interfaces_rhel | changed with_items: - br-mgmt - br-storage @@ -76,7 +126,7 @@ - name: Start the network interfaces command: "ifup {{ item }}" - when: osa_interfaces | changed + when: osa_interfaces | changed or network_interfaces_rhel | changed with_items: - br-mgmt - br-storage @@ -89,4 +139,4 @@ setup: filter: "ansible_br*" tags: - - networking \ No newline at end of file + - networking diff --git a/tests/roles/bootstrap-host/templates/redhat_interface_alias.cfg.j2 b/tests/roles/bootstrap-host/templates/redhat_interface_alias.cfg.j2 new file mode 100644 index 0000000000..79a04a855c --- /dev/null +++ b/tests/roles/bootstrap-host/templates/redhat_interface_alias.cfg.j2 @@ -0,0 +1,5 @@ +# This interface is an alias +DEVICE={{ item.name | default('br-mgmt') }}:0 +IPADDR={{ item.alias | default('10.1.0.1') }} +NETMASK={{ item.netmask | default('255.255.255.0') }} +ONBOOT=yes diff --git a/tests/roles/bootstrap-host/templates/redhat_interface_default.cfg.j2 b/tests/roles/bootstrap-host/templates/redhat_interface_default.cfg.j2 new file mode 100644 index 0000000000..416bfbe912 --- /dev/null +++ b/tests/roles/bootstrap-host/templates/redhat_interface_default.cfg.j2 @@ -0,0 +1,11 @@ +{% if item.veth_peer is defined %} +# This interface has a veth peer +{% endif %} +DEVICE={{ item.name | default('br-mgmt') }} +TYPE=Bridge +IPADDR={{ item.ip_addr | default('10.1.0.1') }} +NETMASK={{ item.netmask | default('255.255.255.0') }} +ONBOOT=yes +BOOTPROTO=none +NM_CONTROLLED=no +DELAY=0 diff --git a/tests/roles/bootstrap-host/templates/redhat_interface_ifdown-post.cfg.j2 b/tests/roles/bootstrap-host/templates/redhat_interface_ifdown-post.cfg.j2 new file mode 100644 index 0000000000..40f147d50b --- /dev/null +++ b/tests/roles/bootstrap-host/templates/redhat_interface_ifdown-post.cfg.j2 @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Copyright 2014, 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. + +if [ "${DEVICE}" == "{{ item[1].name | default('br-mgmt') }}" ]; then + /usr/sbin/ip link set {{ item[1].name | default('br-mgmt') }}-veth nomaster || true + /usr/sbin/ip link del {{ item[1].name | default('br-mgmt') }}-veth || true +fi diff --git a/tests/roles/bootstrap-host/templates/redhat_interface_ifup-post.cfg.j2 b/tests/roles/bootstrap-host/templates/redhat_interface_ifup-post.cfg.j2 new file mode 100644 index 0000000000..d28fb9d661 --- /dev/null +++ b/tests/roles/bootstrap-host/templates/redhat_interface_ifup-post.cfg.j2 @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# Copyright 2014, 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. + +if [ "${DEVICE}" == "{{ item[1].name | default('br-mgmt') }}" ]; then + # Create veth pair, don't bomb if already exists + echo "Creating veth" + /usr/sbin/ip link add {{ item[1].name | default('br-mgmt') }}-veth type veth peer name {{ item[1].veth_peer | default('eth0') }} || true + # Set both ends UP + /usr/sbin/ip link set {{ item[1].name | default('br-mgmt') }}-veth up || true + /usr/sbin/ip link set {{ item[1].veth_peer | default('eth0') }} up || true + # add eth12 to the bridge + /usr/sbin/ip link set {{ item[1].name | default('br-mgmt') }}-veth master {{ item[1].name | default('br-mgmt') }} || true +fi diff --git a/tests/roles/bootstrap-host/vars/redhat.yml b/tests/roles/bootstrap-host/vars/redhat.yml index 19a5be5df8..b40f2d2745 100644 --- a/tests/roles/bootstrap-host/vars/redhat.yml +++ b/tests/roles/bootstrap-host/vars/redhat.yml @@ -13,5 +13,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +rdo_package: "centos-release-openstack-newton" +epel_package: "epel-release" + packages_install: + - '@Development Tools' + - bridge-utils + - curl + - ethtool + - git - iputils + - lvm2 + - python + - python-devel + - python-ipython + - tmux + - vconfig + - vim + - xfsprogs + +packages_remove: [] + +swap_create_command: "dd if=/dev/zero of=/openstack/swap.img bs={{ bootstrap_host_swap_size }}G count=1" +rc_local: /etc/rc.d/rc.local +rc_local_insert_before: "^touch /var/lock/subsys/local$" + diff --git a/tests/roles/bootstrap-host/vars/ubuntu.yml b/tests/roles/bootstrap-host/vars/ubuntu.yml index e81bd271d3..2301af5373 100644 --- a/tests/roles/bootstrap-host/vars/ubuntu.yml +++ b/tests/roles/bootstrap-host/vars/ubuntu.yml @@ -33,3 +33,7 @@ packages_install: packages_remove: - libmysqlclient18 - mysql-common + +swap_create_command: "fallocate -l {{ bootstrap_host_swap_size }}G /openstack/swap.img" +rc_local: /etc/rc.local +rc_local_insert_before: "^exit 0$"