Filip Pytloun | d681ae2 | 2015-10-06 16:28:31 +0200 | [diff] [blame^] | 1 | {%- from "glance/map.jinja" import server with context %} |
| 2 | {%- if server.enabled %} |
| 3 | |
| 4 | glance_packages: |
| 5 | pkg.installed: |
| 6 | - names: {{ server.pkgs }} |
| 7 | |
| 8 | {%- if not salt['user.info']('glance') %} |
| 9 | glance_user: |
| 10 | user.present: |
| 11 | - name: glance |
| 12 | - home: /var/lib/glance |
| 13 | - uid: 302 |
| 14 | - gid: 302 |
| 15 | - shell: /bin/false |
| 16 | - system: True |
| 17 | - require_in: |
| 18 | - pkg: glance_packages |
| 19 | |
| 20 | glance_group: |
| 21 | group.present: |
| 22 | - name: glance |
| 23 | - gid: 302 |
| 24 | - system: True |
| 25 | - require_in: |
| 26 | - pkg: glance_packages |
| 27 | - user: glance_user |
| 28 | {%- endif %} |
| 29 | |
| 30 | /etc/glance/glance-cache.conf: |
| 31 | file.managed: |
| 32 | - source: salt://glance/files/{{ server.version }}/glance-cache.conf.{{ grains.os_family }} |
| 33 | - template: jinja |
| 34 | - require: |
| 35 | - pkg: glance_packages |
| 36 | |
| 37 | /etc/glance/glance-registry.conf: |
| 38 | file.managed: |
| 39 | - source: salt://glance/files/{{ server.version }}/glance-registry.conf.{{ grains.os_family }} |
| 40 | - template: jinja |
| 41 | - require: |
| 42 | - pkg: glance_packages |
| 43 | |
| 44 | /etc/glance/glance-scrubber.conf: |
| 45 | file.managed: |
| 46 | - source: salt://glance/files/{{ server.version }}/glance-scrubber.conf.{{ grains.os_family }} |
| 47 | - template: jinja |
| 48 | - require: |
| 49 | - pkg: glance_packages |
| 50 | |
| 51 | /etc/glance/glance-api.conf: |
| 52 | file.managed: |
| 53 | - source: salt://glance/files/{{ server.version }}/glance-api.conf.{{ grains.os_family }} |
| 54 | - template: jinja |
| 55 | - require: |
| 56 | - pkg: glance_packages |
| 57 | |
| 58 | /etc/glance/glance-api-paste.ini: |
| 59 | file.managed: |
| 60 | - source: salt://glance/files/{{ server.version }}/glance-api-paste.ini |
| 61 | - template: jinja |
| 62 | - require: |
| 63 | - pkg: glance_packages |
| 64 | - watch_in: |
| 65 | - service: glance_services |
| 66 | |
| 67 | glance_services: |
| 68 | service.running: |
| 69 | - enable: true |
| 70 | - names: {{ server.services }} |
| 71 | - watch: |
| 72 | - file: /etc/glance/glance-api.conf |
| 73 | - file: /etc/glance/glance-registry.conf |
| 74 | |
| 75 | glance_install_database: |
| 76 | cmd.run: |
| 77 | - name: glance-manage db_sync |
| 78 | - require: |
| 79 | - service: glance_services |
| 80 | |
| 81 | /srv/glance: |
| 82 | file.directory: |
| 83 | - user: root |
| 84 | - group: root |
| 85 | - mode: 755 |
| 86 | - makedirs: true |
| 87 | - require: |
| 88 | - cmd: glance_install_database |
| 89 | |
| 90 | {%- for image in server.get('images', []) %} |
| 91 | |
| 92 | glance_download_{{ image.name }}: |
| 93 | cmd.run: |
| 94 | - name: wget {{ image.source }} |
| 95 | - unless: "test -e {{ image.file }}" |
| 96 | - cwd: /srv/glance |
| 97 | - require: |
| 98 | - file: /srv/glance |
| 99 | |
| 100 | glance_install_{{ image.name }}: |
| 101 | cmd.wait: |
| 102 | - name: source /root/keystonerc; glance image-create --name '{{ image.name }}' --is-public {{ image.public }} --container-format bare --disk-format {{ image.format }} < {{ image.file }} |
| 103 | - cwd: /srv/glance |
| 104 | - require: |
| 105 | - service: glance_services |
| 106 | - watch: |
| 107 | - cmd: glance_download_{{ image.name }} |
| 108 | |
| 109 | {%- endfor %} |
| 110 | |
| 111 | {%- for image_name, image in server.get('image', {}).iteritems() %} |
| 112 | |
| 113 | glance_download_{{ image_name }}: |
| 114 | cmd.run: |
| 115 | - name: wget {{ image.source }} |
| 116 | - unless: "test -e {{ image.file }}" |
| 117 | - cwd: /srv/glance |
| 118 | - require: |
| 119 | - file: /srv/glance |
| 120 | |
| 121 | glance_install_image_{{ image_name }}: |
| 122 | cmd.run: |
| 123 | - name: source /root/keystonerc; glance image-create --name '{{ image_name }}' --is-public {{ image.public }} --container-format bare --disk-format {{ image.format }} < /srv/glance/{{ image.file }} |
| 124 | - require: |
| 125 | - service: glance_services |
| 126 | - cmd: glance_download_{{ image_name }} |
| 127 | - unless: |
| 128 | - cmd: source /root/keystonerc && glance image-list | grep {{ image_name }} |
| 129 | |
| 130 | {%- endfor %} |
| 131 | |
| 132 | {%- if server.policy is defined %} |
| 133 | |
| 134 | {%- for key, policy in server.policy.iteritems() %} |
| 135 | |
| 136 | policy_{{ key }}: |
| 137 | file.replace: |
| 138 | - name: /etc/glance/policy.json |
| 139 | - pattern: "[\"']{{ key }}[\"']:.*" |
| 140 | {# unfortunatately there's no jsonify filter so we have to do magic :-( #} |
| 141 | - repl: '"{{ key }}": {% if policy is iterable %}[{%- for rule in policy %}"{{ rule }}"{% if not loop.last %}, {% endif %}{%- endfor %}]{%- else %}"{{ policy }}"{%- endif %},' |
| 142 | |
| 143 | {%- endfor %} |
| 144 | |
| 145 | {%- endif %} |
| 146 | |
| 147 | {%- endif %} |