From d8753b7dc997b5b5558ae4bbe3e14ffd0209666b Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Fri, 20 Oct 2017 14:21:33 +1100 Subject: [PATCH] Use configure-swap from o-z-j Use the generic role Change-Id: I534ed0256b7dfe5bef4ab13ae57cd73c51e8bd15 Depends-On: I0e9c846ace7fac8a1340746c6818fba6ec963018 --- .zuul.yaml | 2 + roles/configure-swap/README.rst | 11 --- roles/configure-swap/defaults/main.yaml | 1 - roles/configure-swap/tasks/ephemeral.yaml | 110 ---------------------- roles/configure-swap/tasks/main.yaml | 63 ------------- roles/configure-swap/tasks/root.yaml | 63 ------------- 6 files changed, 2 insertions(+), 248 deletions(-) delete mode 100644 roles/configure-swap/README.rst delete mode 100644 roles/configure-swap/defaults/main.yaml delete mode 100644 roles/configure-swap/tasks/ephemeral.yaml delete mode 100644 roles/configure-swap/tasks/main.yaml delete mode 100644 roles/configure-swap/tasks/root.yaml diff --git a/.zuul.yaml b/.zuul.yaml index bb7239abae..8d3b2f4e6d 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -38,6 +38,8 @@ - openstack/nova - openstack/requirements - openstack/swift + roles: + - zuul: openstack-infra/openstack-zuul-jobs timeout: 7200 vars: devstack_localrc: diff --git a/roles/configure-swap/README.rst b/roles/configure-swap/README.rst deleted file mode 100644 index eaba5cf595..0000000000 --- a/roles/configure-swap/README.rst +++ /dev/null @@ -1,11 +0,0 @@ -Configure a swap partition - -Creates a swap partition on the ephemeral block device (the rest of which -will be mounted on /opt). - -**Role Variables** - -.. zuul:rolevar:: configure_swap_size - :default: 8192 - - The size of the swap partition, in MiB. diff --git a/roles/configure-swap/defaults/main.yaml b/roles/configure-swap/defaults/main.yaml deleted file mode 100644 index 4d622321c7..0000000000 --- a/roles/configure-swap/defaults/main.yaml +++ /dev/null @@ -1 +0,0 @@ -configure_swap_size: 8192 diff --git a/roles/configure-swap/tasks/ephemeral.yaml b/roles/configure-swap/tasks/ephemeral.yaml deleted file mode 100644 index c2316eac2b..0000000000 --- a/roles/configure-swap/tasks/ephemeral.yaml +++ /dev/null @@ -1,110 +0,0 @@ -# Configure attached ephemeral devices for storage and swap - -- assert: - that: - - "ephemeral_device is defined" - -- name: Set partition names - set_fact: - swap_partition: "{{ ephemeral_device}}1" - opt_partition: "{{ ephemeral_device}}2" - -- name: Ensure ephemeral device is unmounted - become: yes - mount: - name: "{{ ephemeral_device }}" - state: unmounted - -- name: Get existing partitions - become: yes - parted: - device: "{{ ephemeral_device }}" - unit: MiB - register: ephemeral_partitions - -- name: Remove any existing partitions - become: yes - parted: - device: "{{ ephemeral_device }}" - number: "{{ item.num }}" - state: absent - with_items: - - "{{ ephemeral_partitions.partitions }}" - -- name: Create new disk label - become: yes - parted: - label: msdos - device: "{{ ephemeral_device }}" - -- name: Create swap partition - become: yes - parted: - device: "{{ ephemeral_device }}" - number: 1 - state: present - part_start: '0%' - part_end: "{{ configure_swap_size }}MiB" - -- name: Create opt partition - become: yes - parted: - device: "{{ ephemeral_device }}" - number: 2 - state: present - part_start: "{{ configure_swap_size }}MiB" - part_end: "100%" - -- name: Make swap on partition - become: yes - command: "mkswap {{ swap_partition }}" - -- name: Write swap to fstab - become: yes - mount: - path: none - src: "{{ swap_partition }}" - fstype: swap - opts: sw - passno: 0 - dump: 0 - state: present - -# XXX: does "parted" plugin ensure the partition is available -# before moving on? No udev settles here ... - -- name: Add all swap - become: yes - command: swapon -a - -- name: Create /opt filesystem - become: yes - filesystem: - fstype: ext4 - dev: "{{ opt_partition }}" - -# Rackspace at least does not have enough room for two devstack -# installs on the primary partition. We copy in the existing /opt to -# the new partition on the ephemeral device, and then overmount /opt -# to there for the test runs. -# -# NOTE(ianw): the existing "mount" touches fstab. There is currently (Sep2017) -# work in [1] to split mount & fstab into separate parts, but for now we bundle -# it into an atomic shell command -# [1] https://github.com/ansible/ansible/pull/27174 -- name: Copy old /opt - become: yes - shell: | - mount {{ opt_partition }} /mnt - find /opt/ -mindepth 1 -maxdepth 1 -exec mv {} /mnt/ \; - umount /mnt - -# This overmounts any existing /opt -- name: Add opt to fstab and mount - become: yes - mount: - path: /opt - src: "{{ opt_partition }}" - fstype: ext4 - opts: noatime - state: mounted diff --git a/roles/configure-swap/tasks/main.yaml b/roles/configure-swap/tasks/main.yaml deleted file mode 100644 index 8960c726c8..0000000000 --- a/roles/configure-swap/tasks/main.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# On RAX hosts, we have a small root partition and a large, -# unallocated ephemeral device attached at /dev/xvde -- name: Set ephemeral device if /dev/xvde exists - when: ansible_devices["xvde"] is defined - set_fact: - ephemeral_device: "/dev/xvde" - -# On other providers, we have a device called "ephemeral0". -# -# NOTE(ianw): Once [1] is in our ansible (2.4 era?), we can figure -# this out more directly by walking the device labels in the facts -# -# [1] https://github.com/ansible/ansible/commit/d46dd99f47c0ee5081d15bc5b741e9096d8bfd3e -- name: Set ephemeral device by label - when: ephemeral_device is undefined - block: - - name: Get ephemeral0 device node - command: /sbin/blkid -L ephemeral0 - register: ephemeral0 - # If this doesn't exist, returns !0 - ignore_errors: yes - changed_when: False - - - name: Set ephemeral device if LABEL exists - when: "ephemeral0.rc == 0" - set_fact: - ephemeral_device: "{{ ephemeral0.stdout }}" - -# If we have ephemeral storage and we don't appear to have setup swap, -# we will create a swap and move /opt to a large data partition there. -- include: ephemeral.yaml - static: no - when: - - ephemeral_device is defined - - ansible_memory_mb['swap']['total'] | int + 10 <= configure_swap_size - -# If no ephemeral device and no swap, then we will setup some swap -# space on the root device to ensure all hosts a consistent memory -# environment. -- include: root.yaml - static: no - when: - - ephemeral_device is undefined - - ansible_memory_mb['swap']['total'] | int + 10 <= configure_swap_size - -# ensure a standard level of swappiness. Some platforms -# (rax+centos7) come with swappiness of 0 (presumably because the -# vm doesn't come with swap setup ... but we just did that above), -# which depending on the kernel version can lead to the OOM killer -# kicking in on some processes despite swap being available; -# particularly things like mysql which have very high ratio of -# anonymous-memory to file-backed mappings. -# -# This sets swappiness low; we really don't want to be relying on -# cloud I/O based swap during our runs if we can help it -- name: Set swappiness - become: yes - sysctl: - name: vm.swappiness - value: 30 - state: present - -- debug: var=ephemeral_device diff --git a/roles/configure-swap/tasks/root.yaml b/roles/configure-swap/tasks/root.yaml deleted file mode 100644 index f22b53700f..0000000000 --- a/roles/configure-swap/tasks/root.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# If no ephemeral devices are available, use root filesystem - -- name: Calculate required swap - set_fact: - swap_required: "{{ configure_swap_size - ansible_memory_mb['swap']['total'] | int }}" - -- block: - - name: Get root filesystem - shell: df --output='fstype' /root | tail -1 - register: root_fs - - - name: Save root filesystem - set_fact: - root_filesystem: "{{ root_fs.stdout }}" - - - debug: var=root_filesystem - -# Note, we don't use a sparse device to avoid wedging when disk space -# and memory are both unavailable. - -# Cannot fallocate on filesystems like XFS, so use slower dd -- name: Create swap backing file for non-EXT fs - when: '"ext" not in root_filesystem' - become: yes - command: dd if=/dev/zero of=/root/swapfile bs=1M count={{ swap_required }} - args: - creates: /root/swapfile - -- name: Create sparse swap backing file for EXT fs - when: '"ext" in root_filesystem' - become: yes - command: fallocate -l {{ swap_required }}M /root/swapfile - args: - creates: /root/swapfile - -- name: Ensure swapfile perms - become: yes - file: - path: /root/swapfile - owner: root - group: root - mode: 0600 - -- name: Make swapfile - become: yes - command: mkswap /root/swapfile - -- name: Write swap to fstab - become: yes - mount: - path: none - src: /root/swapfile - fstype: swap - opts: sw - passno: 0 - dump: 0 - state: present - -- name: Add all swap - become: yes - command: swapon -a - -- debug: var=swap_required