Adjust swift plays to use unified os-swift role

In https://review.openstack.org/#/c/293536 os-swift-sync was merged into
os-swift. The playbooks in openstack-ansible need to be adjusted to set
the specific vars so that only the required tasks are run.

In order to speed up the gate run, we adjust the os-swift-install task
to run the os-swift role once, but have the same end result as before.

Change-Id: I3e3891333229be0fb933479837a2fca451eb7474
Depends-On: If01d8a3aa29fc7637aecb92e61929523af08103d
This commit is contained in:
Andy McCrae 2016-03-16 16:30:40 +00:00 committed by Kevin Carter (cloudnull)
parent ea2fe1e89b
commit 61d601e890
4 changed files with 174 additions and 3 deletions

View File

@ -13,5 +13,166 @@
# See the License for the specific language governing permissions and
# limitations under the License.
- include: os-swift-setup.yml
- include: os-swift-sync.yml
- name: Installation and setup of Swift
hosts: swift_all:swift_remote_all
max_fail_percentage: 20
user: root
pre_tasks:
- name: Use the lxc-openstack aa profile
lxc_container:
name: "{{ container_name }}"
container_config:
- "lxc.aa_profile=lxc-openstack"
delegate_to: "{{ physical_host }}"
when:
- inventory_hostname in groups['swift_all']
- not is_metal | bool
register: container_config
tags:
- lxc-aa-profile
- name: Wait for container ssh
wait_for:
port: "22"
delay: "{{ ssh_delay }}"
search_regex: "OpenSSH"
host: "{{ ansible_ssh_host }}"
delegate_to: "{{ physical_host }}"
when:
- inventory_hostname in groups['swift_all']
- container_config is defined and container_config | changed
register: ssh_wait_check
until: ssh_wait_check | success
retries: 3
tags:
- ssh-wait
- name: Create log dir
file:
path: "{{ item.path }}"
state: directory
with_items:
- { path: "/openstack/log/{{ inventory_hostname }}-swift" }
when:
- inventory_hostname in groups['swift_all']
- is_metal | bool
tags:
- swift-logs
- swift-log-dirs
- name: Create log aggregation links
file:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
state: "{{ item.state }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
force: "yes"
with_items:
- src: "/openstack/log/{{ inventory_hostname }}-swift"
dest: "/var/log/swift"
owner: "syslog"
group: "syslog"
state: "link"
when:
- inventory_hostname in groups['swift_all']
- is_metal | bool
tags:
- swift-logs
- name: Set swift storage bridge (is_metal)
set_fact:
storage_bridge: "{{ 'ansible_' + swift.storage_network | replace('-', '_') }}"
when:
- inventory_hostname in groups['swift_all']
- swift.storage_network is defined
- is_metal | bool
- name: Set swift storage address (is_metal)
set_fact:
storage_address: "{{ hostvars[inventory_hostname][storage_bridge]['ipv4']['address'] }}"
when:
- inventory_hostname in groups['swift_all']
- swift.storage_network is defined
- is_metal | bool
- name: Set swift storage address (is_metal no storage network)
set_fact:
storage_address: "{{ ansible_ssh_host }}"
when:
- inventory_hostname in groups['swift_all']
- swift.storage_network is undefined
- is_metal | bool
- name: Set swift storage address (container)
set_fact:
storage_address: "{{ hostvars[inventory_hostname]['container_networks']['storage_address']['address'] }}"
when:
- inventory_hostname in groups['swift_all']
- hostvars[inventory_hostname]['container_networks']['storage_address']['address'] is defined
- not is_metal | bool
- name: Set swift storage address (container no storage network)
set_fact:
storage_address: "{{ ansible_ssh_host }}"
when:
- inventory_hostname in groups['swift_all']
- hostvars[inventory_hostname]['container_networks']['storage_address']['address'] is undefined
- not is_metal | bool
- name: Set swift replication bridge (is_metal)
set_fact:
replication_bridge: "{{ 'ansible_' + swift.replication_network | replace('-', '_') }}"
when:
- inventory_hostname in groups['swift_all']
- swift.replication_network is defined
- is_metal | bool
- name: Set swift replication address (is_metal)
set_fact:
replication_address: "{{ hostvars[inventory_hostname][replication_bridge]['ipv4']['address'] }}"
when:
- inventory_hostname in groups['swift_all']
- swift.replication_network is defined
- is_metal | bool
- name: Set swift replication address (is_metal no replication network)
set_fact:
replication_address: "{{ storage_address }}"
when:
- inventory_hostname in groups['swift_all']
- swift.replication_network is undefined
- is_metal | bool
- name: Set swift replication address (container)
set_fact:
replication_address: "{{ hostvars[inventory_hostname]['container_networks']['replication_address']['address'] }}"
when:
- inventory_hostname in groups['swift_all']
- hostvars[inventory_hostname]['container_networks']['replication_address']['address'] is defined
- not is_metal | bool
- name: Set swift replication address (container no replication network)
set_fact:
replication_address: "{{ storage_address }}"
when:
- inventory_hostname in groups['swift_all']
- hostvars[inventory_hostname]['container_networks']['replication_address']['address'] is undefined
- not is_metal | bool
roles:
- role: "os_swift"
swift_venv_tag: "{{ openstack_release }}"
swift_venv_download_url: "{{ openstack_repo_url }}/venvs/{{ openstack_release }}/{{ ansible_distribution | lower }}/swift-{{ openstack_release }}.tgz"
swift_storage_address: "{{ storage_address }}"
swift_replication_address: "{{ replication_address }}"
swift_do_setup: True
swift_do_sync: True
tags:
- "os-swift"
vars:
is_metal: "{{ properties.is_metal|default(false) }}"
- name: Installation and setup of Swift
hosts: swift_all
max_fail_percentage: 20
user: root
roles:
- role: "rsyslog_client"
rsyslog_client_log_rotate_file: swift_log_rotate
rsyslog_client_log_dir: "/var/log/swift"
rsyslog_client_config_name: "99-swift-rsyslog-client.conf"
rsyslog_client_log_files:
- /var/log/rsyncd.log
tags:
- "swift-rsyslog-client"
- "rsyslog-client"
- role: "system_crontab_coordination"
tags:
- "system-crontab-coordination"

View File

@ -136,6 +136,8 @@
swift_venv_download_url: "{{ openstack_repo_url }}/venvs/{{ openstack_release }}/{{ ansible_distribution | lower }}/swift-{{ openstack_release }}.tgz"
swift_storage_address: "{{ storage_address }}"
swift_replication_address: "{{ replication_address }}"
swift_do_setup: True
swift_do_sync: False
tags:
- "os-swift"
- role: "rsyslog_client"

View File

@ -20,7 +20,9 @@
max_fail_percentage: 20
user: root
roles:
- role: "os_swift_sync"
- role: "os_swift"
swift_do_setup: False
swift_do_sync: True
swift_venv_tag: "{{ openstack_release }}"
tags:
- "os-swift-sync"

View File

@ -0,0 +1,6 @@
---
upgrade:
- The os_swift and os_swift_sync role have been merged into the single os_swift role. Two
variables (``swift_do_setup`` and ``swift_do_sync``) have been implemented to action the
install and synchronise code paths. The separate playbooks have been adjusted to make use
of these variables to ensure that the behaviour is exactly the same as before.