60e2d79c06
Change-Id: Ib5ce3cbe9d946deb85ff171d3e7d5ee6fca7d17c
111 lines
3.6 KiB
YAML
111 lines
3.6 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.
|
|
|
|
- name: Swift setup
|
|
hosts: swift_hosts
|
|
# We explicitly do not use 'remote_user: root' here because the
|
|
# role totally fails when we do due to not being able to update
|
|
# the apt cache when trying to install packages for the ironic
|
|
# role.
|
|
# TODO(odyssey4me):
|
|
# Figure out whether this issue happens for normal (non localhost)
|
|
# delegation, and how to resolve the issue.
|
|
become: True
|
|
gather_facts: true
|
|
any_errors_fatal: true
|
|
vars_files:
|
|
- test-vars.yml
|
|
tasks:
|
|
- name: Ensure xfsprogs is installed on localhost
|
|
package:
|
|
name: xfsprogs
|
|
state: present
|
|
# NOTE(hwoarang) Use the ansible_pkg_mgr fact gathered by
|
|
# the setup module for the container because package manager
|
|
# detection does not work as expected when the task is delegated.
|
|
# The reason is that the package module expects hostvars['%s']['ansible_pkg_mgr']
|
|
# to be populated on delegated tasks but this is not the case here
|
|
# because we haven't run the setup module on localhost.
|
|
use: "{{ ansible_pkg_mgr }}"
|
|
delegate_to: "{{ physical_host }}"
|
|
run_once: true
|
|
|
|
- name: Ensure xfsprogs is installed on containers
|
|
package:
|
|
name: xfsprogs
|
|
state: present
|
|
|
|
- name: Openstack directory Create
|
|
file:
|
|
state: directory
|
|
path: "/openstack/{{ item }}"
|
|
with_items:
|
|
- 'swift1'
|
|
- 'swift2'
|
|
|
|
- name: Create sparse Swift files
|
|
command: "truncate -s 1024G /opt/{{container_name}}_{{ item }}.img"
|
|
args:
|
|
creates: "/opt/{{ container_name}}_{{ item }}.img"
|
|
with_items:
|
|
- 'swift1'
|
|
- 'swift2'
|
|
register: swift_create
|
|
delegate_to: "{{ physical_host }}"
|
|
|
|
- name: Format the Swift files
|
|
filesystem:
|
|
fstype: xfs
|
|
opts: '-K'
|
|
dev: "/opt/{{ container_name}}_{{ item }}.img"
|
|
when: swift_create is changed
|
|
with_items:
|
|
- 'swift1'
|
|
- 'swift2'
|
|
delegate_to: "{{ physical_host }}"
|
|
|
|
- name: Create the Swift fstab entries and mount the file systems
|
|
mount:
|
|
name: "/srv/{{ container_name }}_{{ item }}"
|
|
src: "/opt/{{ container_name }}_{{ item }}.img"
|
|
fstype: xfs
|
|
opts: 'loop,noatime,nodiratime,nobarrier,logbufs=8'
|
|
passno: 0
|
|
dump: 0
|
|
state: mounted
|
|
with_items:
|
|
- 'swift1'
|
|
- 'swift2'
|
|
register: mount_status
|
|
until: mount_status is success
|
|
retries: 5
|
|
delay: 2
|
|
delegate_to: "{{ physical_host }}"
|
|
|
|
- name: Swift extra lxc config
|
|
lxc_container:
|
|
name: "{{ container_name }}"
|
|
container_config:
|
|
- "lxc.mount.entry=/srv/{{ container_name }}_swift1 openstack/swift1 none bind 0 0"
|
|
- "lxc.mount.entry=/srv/{{ container_name }}_swift2 openstack/swift2 none bind 0 0"
|
|
delegate_to: "{{ physical_host }}"
|
|
|
|
- name: Wait for container connectivity
|
|
wait_for_connection:
|
|
connect_timeout: "{{ lxc_container_wait_params.connect_timeout | default(omit) }}"
|
|
delay: "{{ lxc_container_wait_params.delay | default(omit) }}"
|
|
sleep: "{{ lxc_container_wait_params.sleep | default(omit) }}"
|
|
timeout: "{{ lxc_container_wait_params.timeout | default(omit) }}"
|