--- # 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. - name: Record the installation method ini_file: dest: "/etc/ansible/facts.d/openstack_ansible.fact" section: "glance" option: "install_method" value: "{{ glance_install_method }}" - name: Refresh local facts to ensure the glance section is present setup: filter: ansible_local gather_subset: "!all" - name: create the system group group: name: "{{ glance_system_group_name }}" gid: "{{ glance_system_group_gid | default(omit) }}" state: "present" system: "yes" - name: Create the glance system user user: name: "{{ glance_system_user_name }}" uid: "{{ glance_system_user_uid | default(omit) }}" group: "{{ glance_system_group_name }}" comment: "{{ glance_system_comment }}" shell: "{{ glance_system_shell }}" system: "yes" createhome: "yes" home: "{{ glance_system_user_home }}" - name: Create glance NFS mount point(s) file: path: "{{ item.local_path }}" state: directory owner: "{{ glance_system_user_name }}" group: "{{ glance_system_group_name }}" mode: "0755" with_items: "{{ glance_nfs_client }}" # NOTE(cloudnull): During an upgrade the local directory may exist on a source # install. If the directory does exist it will need to be # removed. This is required on source installs because the # config directory is a link. - name: Source config block block: - name: Stat config directory stat: path: "{{ glance_etc_dir }}" register: glance_conf_dir_stat - name: Remove the config directory file: path: "{{ glance_etc_dir }}" state: absent when: - glance_conf_dir_stat.stat.isdir is defined and glance_conf_dir_stat.stat.isdir when: - glance_install_method == 'source' - name: Create glance directories file: path: "{{ item.path | default(omit) }}" src: "{{ item.src | default(omit) }}" dest: "{{ item.dest | default(omit) }}" state: "{{ item.state | default('directory') }}" owner: "{{ item.owner|default(glance_system_user_name) }}" group: "{{ item.group|default(glance_system_group_name) }}" mode: "{{ item.mode | default(omit) }}" force: "{{ item.force | default(omit) }}" when: - (item.condition | default(true)) | bool - (item.dest | default(item.path)) not in glance_mount_points with_items: - path: "/openstack" mode: "0755" owner: "root" group: "root" - path: "{{ (glance_install_method == 'distro') | ternary(glance_etc_dir, (glance_bin | dirname) + glance_etc_dir) }}" mode: "0755" # NOTE(cloudnull): The "src" path is relative. This ensures all files remain # within the host/container confines when connecting to # them using the connection plugin or the root filesystem. - dest: "{{ glance_etc_dir }}" src: "{{ glance_bin | dirname | regex_replace('^/', '../') }}/etc/glance" state: link force: true condition: "{{ glance_install_method == 'source' }}" - path: "{{ glance_etc_dir }}/rootwrap.d" owner: "root" group: "root" - path: "/var/cache/glance" - path: "{{ glance_system_user_home }}" - path: "{{ glance_system_user_home }}/cache" - path: "{{ glance_system_user_home }}/cache/api" mode: "0700" - path: "{{ glance_system_user_home }}/cache/registry" - path: "{{ glance_system_user_home }}/scrubber" - path: "{{ glance_system_user_home }}/images" mode: "0755" - path: "/var/log/glance" mode: "0755" - name: Install distro packages package: name: "{{ glance_package_list }}" state: "{{ glance_package_state }}" update_cache: "{{ (ansible_pkg_mgr in ['apt', 'zypper']) | ternary('yes', omit) }}" cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}" register: install_packages until: install_packages is success retries: 5 delay: 2 - name: Install glance packages from PIP include_tasks: glance_install_source.yml when: glance_install_method == 'source' - name: Record the need for a service restart ini_file: dest: "/etc/ansible/facts.d/openstack_ansible.fact" section: "glance" option: "need_service_restart" value: true when: (install_packages is changed) or ('need_service_restart' not in ansible_local['openstack_ansible']['glance']) - name: Run the systemd service role include_role: name: systemd_service private: true vars: systemd_user_name: "{{ glance_system_user_name }}" systemd_group_name: "{{ glance_system_group_name }}" systemd_tempd_prefix: openstack systemd_slice_name: glance systemd_lock_path: /var/lock/glance systemd_CPUAccounting: true systemd_BlockIOAccounting: true systemd_MemoryAccounting: true systemd_TasksAccounting: true systemd_services: - service_name: "{{ service_var.service_name }}" enabled: yes state: started execstarts: "{{ service_var.execstarts }}" execreloads: "{{ service_var.execreloads | default([]) }}" config_overrides: "{{ service_var.init_config_overrides }}" with_items: "{{ filtered_glance_services }}" loop_control: loop_var: service_var tags: - glance-config - systemd-service - name: Ensure uWSGI directory exists file: path: "/etc/uwsgi/" state: directory mode: "0711" - name: Apply uWSGI configuration config_template: src: "glance-uwsgi.ini.j2" dest: "/etc/uwsgi/{{ item.service_name }}.ini" mode: "0744" config_overrides: "{{ item.wsgi_overrides }}" config_type: ini with_items: "{{ filtered_glance_services }}" when: item.wsgi_app | default(False) notify: - Manage LB - Restart glance services