From 61d601e890b334fb5308382d6ff7c94291305027 Mon Sep 17 00:00:00 2001 From: Andy McCrae Date: Wed, 16 Mar 2016 16:30:40 +0000 Subject: [PATCH] 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 --- playbooks/os-swift-install.yml | 165 +++++++++++++++++- playbooks/os-swift-setup.yml | 2 + playbooks/os-swift-sync.yml | 4 +- .../swift-os-sync-merge-070168462c9eef81.yaml | 6 + 4 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/swift-os-sync-merge-070168462c9eef81.yaml diff --git a/playbooks/os-swift-install.yml b/playbooks/os-swift-install.yml index a6517ad9ad..8cd0865a65 100644 --- a/playbooks/os-swift-install.yml +++ b/playbooks/os-swift-install.yml @@ -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" diff --git a/playbooks/os-swift-setup.yml b/playbooks/os-swift-setup.yml index 3885f8aa9e..4275fbc113 100644 --- a/playbooks/os-swift-setup.yml +++ b/playbooks/os-swift-setup.yml @@ -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" diff --git a/playbooks/os-swift-sync.yml b/playbooks/os-swift-sync.yml index aa5ffedae4..c7059b753a 100644 --- a/playbooks/os-swift-sync.yml +++ b/playbooks/os-swift-sync.yml @@ -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" diff --git a/releasenotes/notes/swift-os-sync-merge-070168462c9eef81.yaml b/releasenotes/notes/swift-os-sync-merge-070168462c9eef81.yaml new file mode 100644 index 0000000000..c59c998bc9 --- /dev/null +++ b/releasenotes/notes/swift-os-sync-merge-070168462c9eef81.yaml @@ -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.