Merge ~barryprice/launchpad-mojo-specs/+git/private:vbuilder into launchpad-mojo-specs:master

Proposed by Barry Price
Status: Superseded
Proposed branch: ~barryprice/launchpad-mojo-specs/+git/private:vbuilder
Merge into: launchpad-mojo-specs:master
Diff against target: 943 lines (+876/-0)
11 files modified
vbuilder/bundle.yaml (+631/-0)
vbuilder/collect (+4/-0)
vbuilder/configs/custom-secgroups-production.yaml (+10/-0)
vbuilder/configs/custom-secgroups-staging.yaml (+10/-0)
vbuilder/expand-bundle (+36/-0)
vbuilder/manifest (+5/-0)
vbuilder/manifest-rebuild-images (+1/-0)
vbuilder/manifest-secgroups (+1/-0)
vbuilder/rebuild-images (+84/-0)
vbuilder/upgrade-charms (+93/-0)
vbuilder/utils (+1/-0)
Reviewer Review Type Date Requested Status
Canonical Launchpad Engineering Pending
Review via email: mp+463362@code.launchpad.net

Commit message

Double PS6 riscv64 builders per wgrant for noble rebuild

To post a comment you must log in.

Unmerged commits

4020d1e... by Barry Price

Double PS6 riscv64 builders per wgrant for noble rebuild

bd86c4a... by Colin Watson

vbuilder: Bump lxd-channel to latest/candidate on riscv64

This pulls in https://github.com/canonical/lxd/pull/12530.

4fa0592... by Colin Watson

vbuilder: Bump sbuild-stalled-package-timeout to 1500 on riscv64

Emulated builders are slow enough that the default timeout of 150
minutes can be too short.

ea99990... by Colin Watson

vbuilder: Allow launchpad-bastion-ps5.internal to rsync logs

2cbd741... by Ines Almeida

vbuilder: add 40 arm64 builders to bos03 production

591994d... by Ines Almeida

vbuilder: add spec for arm64 bos03 builder in production

4626e30... by Ines Almeida

vbuilder: add missing config to vbuilders_bos03.arm64

2f6a2b1... by Ines Almeida

vbuilder: add openstack server IP to the bos03 arm64 modifiers

80500c7... by Ines Almeida

vbuilder: add missing configuration options and reorder bundle alphabetically

c31f140... by Ines Almeida

vbuilder: add arm64 arch to bos03 region in qastaging

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/vbuilder/bundle.yaml b/vbuilder/bundle.yaml
0new file mode 1006440new file mode 100644
index 0000000..c2d3d6d
--- /dev/null
+++ b/vbuilder/bundle.yaml
@@ -0,0 +1,631 @@
1{%- set log_hosts_allow = "carob.canonical.com launchpad-bastion-ps5.internal" %}
2
3{%- if stage_name == "production" %}
4{%- set clamav_database_url = "http://clamav-database-mirror.lp.internal/" %}
5{%- set content_id_template = "launchpad-buildd:production" %}
6{%- set dns_update_host_bos01 = "10.189.0.2" %}
7{%- set dns_update_host_bos02 = "10.189.128.2" %}
8{%- set dns_update_host_bos03 = "10.189.128.2" %}
9{%- set dns_update_host_lcy02 = "10.131.53.11 10.131.53.12 10.131.53.13" %}
10{%- set dns_update_key_name = "vbuilder-manage" %}
11{%- set domain_bos01 = "vbuilder.bos01.scalingstack" %}
12{%- set domain_bos02 = "vbuilder.bos02.scalingstack" %}
13{%- set domain_bos03 = "vbuilder.bos03.scalingstack" %}
14{%- set domain_lcy02 = "vbuilder.lcy02.scalingstack" %}
15{%- set extra_constraints = "root-disk-source=volume" %}
16{%- set gss_series = "focal|jammy" %}
17{%- set instance_key_name_bos01 = "vbuilder-manage-bos01" %}
18{%- set instance_key_name_bos02 = "vbuilder-manage-bos02" %}
19{%- set instance_key_name_bos03 = "vbuilder-manage-bos03" %}
20{%- set instance_key_name_lcy02 = "vbuilder-manage-lcy02" %}
21{%- set instance_network_bos01 = "10.189.16.0/20" %}
22{%- set instance_network_bos02 = "10.189.144.0/20" %}
23{%- set instance_network_bos03 = "10.143.0.0/20" %}
24{%- set instance_network_lcy02 = "10.133.0.0/16" %}
25{%- set instance_router = "vbuilder_router" %}
26{%- set instance_router_bos03 = "router_launchpad-vbuilder-production" %}
27{%- set instance_router_lcy02 = "router_launchpad-vbuilder-production" %}
28{#- Output of "openstack image show -c id -f value qemu-riscv64-uboot". #}
29{%- set kernel_id_bos03_riscv64 = "c5015509-91c3-4684-80cc-b8a2ef44c8b5" %}
30{%- set launchpad_buildd_repository = "ppa:launchpad/buildd" %}
31{%- set lp_buildd_managers = "10.131.66.156 10.131.215.202" %}
32{%- set lp_environment = "production" %}
33{%- set lp_sshkey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD3tBvyEaZFX8H4krfXGhczq9q/GCfcE0kpsjK8WzM/lQOhWQAVSmm8O9gposKvu4mT28hBWI746+NOPLBrf9ax7YRoU+ZuZesyIIK6ztN07G4aK2vt+1W9yNZKgTJZ8FvxHwlbFy6wMjMP3OzuxWyh0yi03z1YiGPJt0riJRZT+QecaoyYhkTuRbcCoWbhmM0veUjCvfR7LA43YbOfmts7STNCtl1IUJErmUY6fSR1LkyF9uJSdwozAVht242vI8Yg+PrOnKCx3X5w546okP2uMDVXKWeY2g/MhUSr+ZyIaS2JxUygZ7FKS4gNLYb3O4Q6tcIwPE++zsr9HueTfjw2LyeQTZQDQjuv0kJ40B3IFF4E9FMzu8MDwArOKUGzISLrX5VtDZBKINDclfDbrFWHUlVBC2CIIjGPKj3afluP9jadWjsOQx0ooBO0tb0Se+7t3oNjKlknwD85AYCPzIlZt7wo/+e/V/Tilw+UUf00JioEceTdxuOHmbuxP5RzCleg8pYLfe5jiHfBJi0DhO61IYlFMgSToh78EShHWYEdSbD+Ve5GWKvPEU9CsSTleSSqBFdhyggfB5fHiup0efAqMnstDn5sxGYFzfFu7SNVHkMuFeiRHZK+9fF/nfzk0UK5EaGs+4IMhWS1ns8m5O5Li609c/nXK5t5fBOkiWa+RQ== lp_buildd@juju-4112d9-prod-launchpad-manual-servers-4" %}
34{%- set modifiers_bos01 = '{"arm64": "10.43.0.29", "ppc64el": "10.43.0.36", "s390x": "10.43.0.39"}' %}
35{%- set modifiers_bos02 = '{"arm64": "10.44.0.22", "ppc64el": "10.44.0.20", "s390x": "10.44.0.18"}' %}
36{%- set modifiers_bos03 = '{"arm64": "10.143.254.129", "riscv64": "10.143.254.223"}' %}
37{%- set name_prefix = "launchpad-buildd" %}
38{%- set openstack_tenant_name = "vbuilder_project" %}
39{%- set openstack_tenant_name_bos03 = "launchpad-vbuilder-production_project" %}
40{%- set openstack_tenant_name_lcy02 = "launchpad-vbuilder-production_project" %}
41{%- set openstack_username = "vbuilder" %}
42{%- set openstack_username_bos03 = "launchpad-vbuilder-production" %}
43{%- set openstack_username_lcy02 = "launchpad-vbuilder-production" %}
44{%- set vbuilders_bos01 = {"amd64": {"series": "focal", "flavor": "vbuilder-gpu", "count": 5}, "arm64": {"series": "focal", "count": 40, "config_drive": false}, "arm64-gpu": {"arch_base": "arm64", "arch_suffix": "-gpu", "series": "focal", "flavor": "vbuilder-nvidia-l4", "count": 2, "config_drive": false}, "ppc64el": {"series": "focal", "count": 20}, "s390x": {"series": "focal", "count": 20}} %}
45{%- set vbuilders_bos02 = {"arm64": {"series": "focal", "count": 80, "config_drive": false}, "ppc64el": {"series": "focal", "count": 30}, "s390x": {"series": "focal", "count": 20}} %}
46{%- set vbuilders_bos03 = {"amd64": {"series": "focal", "count": 60}, "arm64": {"series": "focal", "count": 40, "config_drive": false, "flavor": "vbuilder-arm64"}, "riscv64": {"series": "jammy", "count": 120, "config_drive": false}} %}
47{%- set vbuilders_lcy02 = {"amd64": {"series": "focal", "count": 120}} %}
48{%- set vbuilder_prefix = "" %}
49{%- elif stage_name == "staging" %}
50{#- This environment is confusingly named, and is actually connected to Launchpad dogfood. #}
51{%- set clamav_database_url = "http://clamav-database-mirror.staging.lp.internal/" %}
52{%- set content_id_template = "launchpad-buildd:staging" %}
53{%- set dns_update_host_bos01 = "10.189.0.2" %}
54{%- set dns_update_host_bos02 = "10.189.128.2" %}
55{%- set dns_update_host_bos03 = "10.189.128.2" %}
56{%- set dns_update_host_lcy02 = "10.132.31.11 10.132.31.12 10.132.31.13" %}
57{%- set dns_update_key_name = "vbuilder-staging-manage" %}
58{%- set domain_bos01 = "vbuilder.staging.bos01.scalingstack" %}
59{%- set domain_bos02 = "vbuilder.staging.bos02.scalingstack" %}
60{%- set domain_bos03 = "vbuilder.staging.bos03.scalingstack" %}
61{%- set domain_lcy02 = "vbuilder.staging.lcy02.scalingstack" %}
62{%- set extra_constraints = "" %}
63{%- set gss_series = "focal|jammy" %}
64{%- set instance_key_name_bos01 = "ppa-manage-test" %}
65{%- set instance_key_name_bos02 = "ppa-manage-test" %}
66{%- set instance_key_name_bos03 = "ppa-manage-test" %}
67{%- set instance_key_name_lcy02 = "ppa-manage-test" %}
68{%- set instance_network_bos01 = "10.189.34.0/24" %}
69{%- set instance_network_bos02 = "10.189.162.0/23" %}
70{%- set instance_network_bos03 = "10.144.2.0/23" %}
71{%- set instance_network_lcy02 = "10.134.2.0/23" %}
72{%- set instance_router = "vbuilder_staging_router" %}
73{%- set instance_router_bos03 = "router_launchpad-vbuilder-staging" %}
74{%- set instance_router_lcy02 = "router_launchpad-vbuilder-staging" %}
75{%- set launchpad_buildd_repository = "ppa:launchpad/buildd-staging" %}
76{%- set lp_buildd_managers = "91.189.90.132" %}
77{%- set lp_environment = "dogfood" %}
78{%- set lp_sshkey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDB3Qw9541hRDiGVLGxZm/afNsCirlM6Wa2/VkdU22KQfVu579+ek8fdgvR/si7UOTDgE4j7DGuJW+pk7z6T08Iy5feaI3JpnZV7PX0Qp8CilrcTNWPL1eBoq5HcYDzl+zyXT341l7GBFhwYQ50sF3hq0RV0XvUwxfheyBtdmzkiVE1LXT7kdFvXtxe0fR9ypw+NuMRqqFyZ9w3tee7zclDw1cCcnDf6vmIXbYLF9yNZOQQhwYQFFgIUepdkUg2onyhYXWKj8mooFVGne0WPVTJ5Sz805soh9SuUGGgpTh70EtgpJ1nxSWGtIWUtNc6mSGdZzGtgVTnbDk04J4FrVX3Bu8yetlQbNPPYuxdqaZP1anoKmgtCIhfe+xCkim5YLc+WZXVRGvk6apCLXMnj9ZhRE7fCKQO/F+aNPCONv0gUVncxuWAyiqdRuilqSA7VTEMYTv7pIYSNOjpD5eMIX2wGkYTjEXopGJouUH2nOXlhsGgssmMepSVJhOJKY1Cfq0ND4ydoDd2Mz1Yj+Us9HToqJU6DD1sAIKOV05fBqVsJEJbctI2vpRY/R1nCBySpM4KpzgkCQWwjkjR8h2/nuwDtyMsJe/BdBuDyRwJGnBLNgBUg+tnWl9yePz/ZXVGrAI7gPuc9DIiuKEvEmiO3o9yfRRjsFMWGIk2y/Hfa01V7w== launchpad@labbu" %}
79{%- set modifiers_bos01 = '{"arm64": "10.43.0.10", "ppc64el": "10.43.0.23", "s390x": "10.43.0.15"}' %}
80{%- set modifiers_bos02 = '{"arm64": "10.44.0.13", "ppc64el": "10.44.0.19", "s390x": "10.44.0.14"}' %}
81{%- set name_prefix = "launchpad-buildd-staging" %}
82{%- set openstack_tenant_name = "vbuilder_staging_project" %}
83{%- set openstack_tenant_name_bos03 = "launchpad-vbuilder-staging_project" %}
84{%- set openstack_tenant_name_lcy02 = "launchpad-vbuilder-staging_project" %}
85{%- set openstack_username = "vbuilder_staging" %}
86{%- set openstack_username_bos03 = "launchpad-vbuilder-staging" %}
87{%- set openstack_username_lcy02 = "launchpad-vbuilder-staging" %}
88{%- set vbuilders_bos01 = {"amd64": {"series": "jammy", "flavor": "vbuilder-gpu", "count": 1}, "arm64": {"series": "jammy", "count": 1, "config_drive": false}, "arm64-gpu": {"arch_base": "arm64", "arch_suffix": "-gpu", "series": "jammy", "flavor": "vbuilder-nvidia-l4", "count": 1, "config_drive": false}, "ppc64el": {"series": "jammy", "count": 1}, "s390x": {"series": "jammy", "count": 1}} %}
89{%- set vbuilders_bos02 = {"arm64": {"series": "jammy", "count": 1, "config_drive": false}, "ppc64el": {"series": "jammy", "count": 1}, "s390x": {"series": "jammy", "count": 1}} %}
90{%- set vbuilders_bos03 = {"amd64": {"series": "jammy", "count": 4}} %}
91{%- set vbuilders_lcy02 = {"amd64": {"series": "jammy", "count": 4}} %}
92{%- set vbuilder_prefix = "dogfood-" %}
93{%- elif stage_name == "qastaging" %}
94{%- set clamav_database_url = "http://clamav-database-mirror.staging.lp.internal/" %}
95{%- set content_id_template = "launchpad-buildd:qastaging" %}
96{%- set dns_update_host_bos01 = "10.189.0.2" %}
97{%- set dns_update_host_bos02 = "10.189.128.2" %}
98{%- set dns_update_host_bos03 = "10.189.128.2" %}
99{%- set dns_update_host_lcy02 = "10.132.31.11 10.132.31.12 10.132.31.13" %}
100{%- set dns_update_key_name = "vbuilder-staging-manage" %}
101{%- set domain_bos01 = "vbuilder.qastaging.bos01.scalingstack" %}
102{%- set domain_bos02 = "vbuilder.qastaging.bos02.scalingstack" %}
103{%- set domain_bos03 = "vbuilder.qastaging.bos03.scalingstack" %}
104{%- set domain_lcy02 = "vbuilder.qastaging.lcy02.scalingstack" %}
105{%- set extra_constraints = "" %}
106{%- set gss_series = "focal|jammy" %}
107{%- set instance_key_name_bos01 = "ppa-manage-test-qastaging" %}
108{%- set instance_key_name_bos02 = "ppa-manage-test-qastaging" %}
109{%- set instance_key_name_bos03 = "ppa-manage-test-qastaging" %}
110{%- set instance_key_name_lcy02 = "ppa-manage-test-qastaging" %}
111{%- set instance_network_bos01 = "10.189.36.0/24" %}
112{%- set instance_network_bos02 = "10.189.164.0/23" %}
113{%- set instance_network_bos03 = "10.144.4.0/23" %}
114{%- set instance_network_lcy02 = "10.134.4.0/23" %}
115{%- set instance_router = "vbuilder_staging_router" %}
116{%- set instance_router_bos03 = "router_launchpad-vbuilder-staging" %}
117{%- set instance_router_lcy02 = "router_launchpad-vbuilder-staging" %}
118{#- Output of "openstack image show -c id -f value qemu-riscv64-uboot". #}
119{%- set kernel_id_bos03_riscv64 = "bcbb013b-9424-4f61-9fda-6374d29d3ee0" %}
120{%- set launchpad_buildd_repository = "ppa:launchpad/buildd-staging" %}
121{%- set lp_buildd_managers = "10.132.54.242" %}
122{%- set lp_environment = "qastaging" %}
123{%- set lp_sshkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrjt0yytzrK9fQuG+6VgE6QStUbDmunlN7+Lv5XhmoL stg-launchpad@launchpad-bastion-ps5" %}
124{%- set modifiers_bos01 = '{"arm64": "10.43.0.10", "ppc64el": "10.43.0.23", "s390x": "10.43.0.15"}' %}
125{%- set modifiers_bos02 = '{"arm64": "10.44.0.13", "ppc64el": "10.44.0.19", "s390x": "10.44.0.14"}' %}
126{%- set modifiers_bos03 = '{"arm64": "10.144.0.127", "riscv64": "10.144.0.114"}' %}
127{%- set name_prefix = "launchpad-buildd-qastaging" %}
128{%- set openstack_tenant_name = "vbuilder_staging_project" %}
129{%- set openstack_tenant_name_bos03 = "launchpad-vbuilder-staging_project" %}
130{%- set openstack_tenant_name_lcy02 = "launchpad-vbuilder-staging_project" %}
131{%- set openstack_username = "vbuilder_staging" %}
132{%- set openstack_username_bos03 = "launchpad-vbuilder-staging" %}
133{%- set openstack_username_lcy02 = "launchpad-vbuilder-staging" %}
134{%- set vbuilders_bos01 = {"amd64": {"series": "focal", "flavor": "vbuilder-gpu", "count": 1}, "arm64": {"series": "focal", "count": 1, "config_drive": false}, "arm64-gpu": {"arch_base": "arm64", "arch_suffix": "-gpu", "series": "focal", "flavor": "vbuilder-nvidia-l4", "count": 1, "config_drive": false}, "ppc64el": {"series": "focal", "count": 1}, "s390x": {"series": "focal", "count": 1}} %}
135{%- set vbuilders_bos02 = {"arm64": {"series": "focal", "count": 1, "config_drive": false}, "ppc64el": {"series": "focal", "count": 1}, "s390x": {"series": "focal", "count": 1}} %}
136{%- set vbuilders_bos03 = {"amd64": {"series": "focal", "count": 4}, "arm64": {"series": "focal", "count": 1, "config_drive": false, "flavor": "vbuilder-arm64"}, "riscv64": {"series": "jammy", "count": 1, "config_drive": false}} %}
137{%- set vbuilders_lcy02 = {"amd64": {"series": "focal", "count": 4}} %}
138{%- set vbuilder_prefix = "qastaging-" %}
139{%- endif %}
140
141{%- macro vbuilder_hostnames(prefix, count) %}
142{%- set hostname_sep = joiner(", ") -%}
143[{% for i in range(1, count + 1) -%}
144{{ hostname_sep() }}"{{ prefix }}-{{ "%03d" % i }}"
145{%- endfor %}]
146{%- endmacro %}
147
148{%- macro vbuilders(region, arches) %}
149{%- set arch_sep = joiner(", ") -%}
150[{% for arch, properties in arches|dictsort -%}
151{{ arch_sep() }}{"image_name_prefix": "{{ name_prefix }}{{ properties.get('arch_suffix', '') }}/ubuntu-{{ properties['series'] }}-daily-{{ properties.get('arch_base', arch) }}-", "instance_flavor": "{{ properties.get('flavor', 'vbuilder') }}", "hostnames": {{ vbuilder_hostnames("%s%s-%s" % (vbuilder_prefix, region, arch), properties['count']) }}, "config_drive": {{ properties.get('config_drive', True)|tojson }}}
152{%- endfor %}]
153{%- endmacro -%}
154
155series: "{{ series }}"
156applications:
157 rabbitmq-server:
158 charm: cs:rabbitmq-server
159 constraints: "cores=2 mem=8G root-disk=20G {{ extra_constraints }}"
160 num_units: 2
161 glance-simplestreams-sync-bos01-amd64:
162 charm: {{ charm_dir }}/glance-simplestreams-sync
163 constraints: "{{ extra_constraints }}"
164 num_units: 1
165 options:
166 content_id_template: "{{ content_id_template }}"
167 mirror_list: |-
168 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(x86_64|amd64)", "ftype~(disk1.img|disk.img)"]}]
169 name_prefix: "{{ name_prefix }}/"
170 openstack-auth-url: "http://keystone.infra.bos01.scalingstack:5000/v3"
171 openstack-identity-api-version: "3"
172 openstack-tenant-name: "{{ openstack_tenant_name }}"
173 openstack-username: "{{ openstack_username }}"
174 region: scalingstack-bos01
175 use_swift: false
176 visibility: private
177 glance-simplestreams-sync-bos01-arm64:
178 charm: {{ charm_dir }}/glance-simplestreams-sync
179 constraints: "{{ extra_constraints }}"
180 num_units: 1
181 options:
182 content_id_template: "{{ content_id_template }}"
183 custom_properties: 'hypervisor_type=kvm hw_firmware_type=uefi'
184 mirror_list: |-
185 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 2, item_filters: ["release~({{ gss_series }})", "arch~(arm64|aarch64)", "ftype~(disk1.img|disk.img)"]}]
186 name_prefix: "{{ name_prefix }}/"
187 openstack-auth-url: "http://keystone.infra.bos01.scalingstack:5000/v3"
188 openstack-identity-api-version: "3"
189 openstack-tenant-name: "{{ openstack_tenant_name }}"
190 openstack-username: "{{ openstack_username }}"
191 region: scalingstack-bos01
192 use_swift: false
193 visibility: private
194 glance-simplestreams-sync-bos01-arm64-gpu:
195 charm: {{ charm_dir }}/glance-simplestreams-sync
196 constraints: "{{ extra_constraints }}"
197 num_units: 1
198 options:
199 content_id_template: "{{ content_id_template }}:gpu"
200 custom_properties: 'hypervisor_type=kvm hw_firmware_type=uefi'
201 mirror_list: |-
202 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 2, item_filters: ["release~({{ gss_series }})", "arch~(arm64|aarch64)", "ftype~(disk1.img|disk.img)"]}]
203 name_prefix: "{{ name_prefix }}-gpu/"
204 openstack-auth-url: "http://keystone.infra.bos01.scalingstack:5000/v3"
205 openstack-identity-api-version: "3"
206 openstack-tenant-name: "{{ openstack_tenant_name }}"
207 openstack-username: "{{ openstack_username }}"
208 region: scalingstack-bos01
209 use_swift: false
210 visibility: private
211 glance-simplestreams-sync-bos01-ppc64el:
212 charm: {{ charm_dir }}/glance-simplestreams-sync
213 constraints: "{{ extra_constraints }}"
214 num_units: 1
215 options:
216 content_id_template: "{{ content_id_template }}"
217 custom_properties: 'hypervisor_type=kvm'
218 mirror_list: |-
219 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 2, item_filters: ["release~({{ gss_series }})", "arch~(ppc64el)", "ftype~(disk1.img|disk.img)"]}]
220 name_prefix: "{{ name_prefix }}/"
221 openstack-auth-url: "http://keystone.infra.bos01.scalingstack:5000/v3"
222 openstack-identity-api-version: "3"
223 openstack-tenant-name: "{{ openstack_tenant_name }}"
224 openstack-username: "{{ openstack_username }}"
225 region: scalingstack-bos01
226 use_swift: false
227 visibility: private
228 glance-simplestreams-sync-bos01-s390x:
229 charm: {{ charm_dir }}/glance-simplestreams-sync
230 constraints: "{{ extra_constraints }}"
231 num_units: 1
232 options:
233 content_id_template: "{{ content_id_template }}"
234 custom_properties: 'hypervisor_type=kvm'
235 mirror_list: |-
236 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(s390x)", "ftype~(disk1.img|disk.img)"]}]
237 name_prefix: "{{ name_prefix }}/"
238 openstack-auth-url: "http://keystone.infra.bos01.scalingstack:5000/v3"
239 openstack-identity-api-version: "3"
240 openstack-tenant-name: "{{ openstack_tenant_name }}"
241 openstack-username: "{{ openstack_username }}"
242 region: scalingstack-bos01
243 use_swift: false
244 visibility: private
245 glance-simplestreams-sync-bos02-arm64:
246 charm: {{ charm_dir }}/glance-simplestreams-sync
247 constraints: "{{ extra_constraints }}"
248 num_units: 1
249 options:
250 content_id_template: "{{ content_id_template }}"
251 custom_properties: 'hypervisor_type=kvm hw_firmware_type=uefi'
252 mirror_list: |-
253 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 2, item_filters: ["release~({{ gss_series }})", "arch~(arm64|aarch64)", "ftype~(disk1.img|disk.img)"]}]
254 name_prefix: "{{ name_prefix }}/"
255 openstack-auth-url: "http://keystone.infra.bos02.scalingstack:5000/v2.0"
256 openstack-tenant-name: "{{ openstack_tenant_name }}"
257 openstack-username: "{{ openstack_username }}"
258 region: scalingstack-bos02
259 use_swift: false
260 visibility: private
261 glance-simplestreams-sync-bos02-ppc64el:
262 charm: {{ charm_dir }}/glance-simplestreams-sync
263 constraints: "{{ extra_constraints }}"
264 num_units: 1
265 options:
266 content_id_template: "{{ content_id_template }}"
267 custom_properties: 'hypervisor_type=kvm'
268 mirror_list: |-
269 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 2, item_filters: ["release~({{ gss_series }})", "arch~(ppc64el)", "ftype~(disk1.img|disk.img)"]}]
270 name_prefix: "{{ name_prefix }}/"
271 openstack-auth-url: "http://keystone.infra.bos02.scalingstack:5000/v2.0"
272 openstack-tenant-name: "{{ openstack_tenant_name }}"
273 openstack-username: "{{ openstack_username }}"
274 region: scalingstack-bos02
275 use_swift: false
276 visibility: private
277 glance-simplestreams-sync-bos02-s390x:
278 charm: {{ charm_dir }}/glance-simplestreams-sync
279 constraints: "{{ extra_constraints }}"
280 num_units: 1
281 options:
282 content_id_template: "{{ content_id_template }}"
283 custom_properties: 'hypervisor_type=kvm'
284 mirror_list: |-
285 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(s390x)", "ftype~(disk1.img|disk.img)"]}]
286 name_prefix: "{{ name_prefix }}/"
287 openstack-auth-url: "http://keystone.infra.bos02.scalingstack:5000/v2.0"
288 openstack-tenant-name: "{{ openstack_tenant_name }}"
289 openstack-username: "{{ openstack_username }}"
290 region: scalingstack-bos02
291 use_swift: false
292 visibility: private
293 glance-simplestreams-sync-bos03-amd64:
294 charm: {{ charm_dir }}/glance-simplestreams-sync
295 constraints: "{{ extra_constraints }}"
296 num_units: 1
297 options:
298 content_id_template: "{{ content_id_template }}"
299 mirror_list: |-
300 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(x86_64|amd64)", "ftype~(disk1.img|disk.img)"]}]
301 name_prefix: "{{ name_prefix }}/"
302 openstack-auth-url: "https://keystone.ps6.canonical.com:5000/v3"
303 openstack-identity-api-version: "3"
304 openstack-tenant-name: "{{ openstack_tenant_name_bos03 }}"
305 openstack-username: "{{ openstack_username_bos03 }}"
306 region: scalingstack-bos03
307 use_swift: false
308 visibility: private
309 glance-simplestreams-sync-bos03-arm64:
310 charm: {{ charm_dir }}/glance-simplestreams-sync
311 constraints: "{{ extra_constraints }}"
312 num_units: 1
313 options:
314 content_id_template: "{{ content_id_template }}"
315 custom_properties: "hypervisor_type=kvm hw_firmware_type=uefi"
316 mirror_list: |-
317 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(arm64|aarch64)", "ftype~(disk1.img|disk.img)"]}]
318 name_prefix: "{{ name_prefix }}/"
319 openstack-auth-url: "https://keystone.ps6.canonical.com:5000/v3"
320 openstack-identity-api-version: "3"
321 openstack-tenant-name: "{{ openstack_tenant_name_bos03 }}"
322 openstack-username: "{{ openstack_username_bos03 }}"
323 region: scalingstack-bos03
324 use_swift: false
325 visibility: private
326{%- if stage_name in ("production", "qastaging") %}
327 glance-simplestreams-sync-bos03-riscv64:
328 charm: {{ charm_dir }}/glance-simplestreams-sync
329 constraints: "{{ extra_constraints }}"
330 num_units: 1
331 options:
332 content_id_template: "{{ content_id_template }}"
333 custom_properties: "hw_emulation_architecture=riscv64 hw_machine_type=virt kernel_id={{ kernel_id_bos03_riscv64 }}"
334 mirror_list: |-
335 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(riscv64)", "ftype~(disk1.img|disk.img)"]}]
336 name_prefix: "{{ name_prefix }}/"
337 openstack-auth-url: "https://keystone.ps6.canonical.com:5000/v3"
338 openstack-identity-api-version: "3"
339 openstack-tenant-name: "{{ openstack_tenant_name_bos03 }}"
340 openstack-username: "{{ openstack_username_bos03 }}"
341 region: scalingstack-bos03
342 use_swift: false
343 visibility: private
344{%- endif %}
345 glance-simplestreams-sync-lcy02-amd64:
346 charm: {{ charm_dir }}/glance-simplestreams-sync
347 constraints: "{{ extra_constraints }}"
348 num_units: 1
349 options:
350 content_id_template: "{{ content_id_template }}"
351 mirror_list: |-
352 [{url: "http://cloud-images.ubuntu.com/daily/", name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(x86_64|amd64)", "ftype~(disk1.img|disk.img)"]}]
353 name_prefix: "{{ name_prefix }}/"
354 openstack-auth-url: "https://keystone.ps5.canonical.com:5000/v3"
355 openstack-identity-api-version: "3"
356 openstack-tenant-name: "{{ openstack_tenant_name_lcy02 }}"
357 openstack-username: "{{ openstack_username_lcy02 }}"
358 region: scalingstack-lcy02
359 use_swift: false
360 visibility: private
361 launchpad-buildd-image-modifier-amd64:
362 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
363 options:
364 clamav-database-url: "{{ clamav_database_url }}"
365 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
366 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
367 launchpad-buildd-image-modifier-bos01-amd64:
368 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
369 options:
370 clamav-database-url: "{{ clamav_database_url }}"
371 extra-keys: "-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: GnuPG v2\n\nmI0ESUm55wEEALrxow0PCnGeCAebH9g5+wtZBfXZdx2vZts+XsTTHxDRsMNgMC9b\n0klCgbydvkmF9WCphCjQ61Wp/Bh0C7DSXVCpA/xs55QB5VCUceIMZCbMTPq1h7Ht\ncA1f+o6+OCPUntErG6eGize6kGhdjBNPOT+q4BSIL69rPuwfM9ZyAYcBABEBAAG0\nJkxhdW5jaHBhZCBQUEEgZm9yIExhdW5jaHBhZCBEZXZlbG9wZXJziLYEEwECACAF\nAklJuecCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAtH/tsClF0rxsQA/0Q\nw0Yk+xIA1xibyf+UCF9/4fXzdo/tr76qxPRyFiv0uLbFOmW6t26jzpWBHocCHcCU\n57l7rlcEzIHFMcS9Ol6MughP4lhywf9ceeqg2SD6AXjZ0iFarwkueTcHwff5j0lG\nIzzCUVTYJ+m79f/r0dfctL2DwnX7JnT/41mEuR1qbokBHAQQAQIABgUCTB7s7wAK\nCRDFXO8hUqH8T94pCACxl/Gdo82N01H82HvNBa8zQFixNQIwNJN/VxH3WfRvissW\nOMTJnTnNOQErxUhqHrasvZf3djNoHeKRNToTTBaGiEwoySmEK05i4Toq74jWAOs6\nflD2S8natWbobK5V+B2pXZl5g/4Ay21C3H1sZlUxDCcOH9Jh8/0feAZHoSQ/V1Xa\nrEPb+TGdV0hP3Yp7+nIT91sYkj566kA8fjoxJrY/EvXGn98bhYMbMNbtS1Z0WeGp\nzG2hiL6wLSLBxz4Ae9MShOMwNyC1zmr/d1wlF0Efx1N9HaRtRq2s/zqH+ebB7Sr+\nV+SquObb0qr4eAjtslN5BxWROhf+wZM6WJO0Z6nBiQEcBBABAgAGBQJTHvsiAAoJ\nEIngjfAzAr5Z8y4H/jltxz5OwHIDoiXsyWnpjO1SZUV6I6evKpSD7huYtd7MwFZC\n0CgExsPPqLNQCUxITR+9jlqofi/QsTwP7Qq55VmIrKLrZ9KCK1qBnMa/YEXi6TeK\n65lnyN6lNOdzhcsBm3s1/U9ewWp1vsw4UAclmu6tI8GUko+e32K1QjMtIjeVejQl\nJCYDjuxfHhcFWyRo0TWu24F6VD3YxBHpne/M00yd2mLLpHdQrxw/vbvVhZkRDutQ\nemKRA81ZM2WZ1iqYOXtEs5VrD/PtU0nvSAowgeWBmcOwWn3Om+pVsnSoFo46CDvo\nC6YXOWMOMFIxfVhPWqlBkWQsnXFzgk/Xyo4vlTY=\n=Wq6H\n-----END PGP PUBLIC KEY BLOCK-----"
372 extra-packages: "nvidia-headless-525-grid nvidia-utils-525-grid"
373 # extra-sources must also be set in the secrets file, to add
374 # ppa:launchpad/ubuntu/buildd-gpu; that requires an authentication
375 # token.
376 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
377 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
378 launchpad-buildd-image-modifier-bos01-arm64:
379 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
380 options:
381 clamav-database-url: "{{ clamav_database_url }}"
382 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
383 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false compat_uts_machine=armv7l"
384 remote-modifiers: '{{ modifiers_bos01 }}'
385 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
386 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
387 launchpad-buildd-image-modifier-bos01-arm64-gpu:
388 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
389 options:
390 clamav-database-url: "{{ clamav_database_url }}"
391 extra-packages: "nvidia-headless-525-server nvidia-utils-525-server"
392 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
393 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false compat_uts_machine=armv7l"
394 remote-modifiers: '{{ modifiers_bos01 }}'
395 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
396 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
397 launchpad-buildd-image-modifier-bos01-ppc64el:
398 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
399 options:
400 clamav-database-url: "{{ clamav_database_url }}"
401 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
402 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
403 remote-modifiers: '{{ modifiers_bos01 }}'
404 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
405 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
406 launchpad-buildd-image-modifier-bos01-s390x:
407 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
408 options:
409 clamav-database-url: "{{ clamav_database_url }}"
410 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
411 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
412 remote-modifiers: '{{ modifiers_bos01 }}'
413 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
414 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
415 launchpad-buildd-image-modifier-bos02-arm64:
416 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
417 options:
418 clamav-database-url: "{{ clamav_database_url }}"
419 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
420 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false compat_uts_machine=armv7l"
421 remote-modifiers: '{{ modifiers_bos02 }}'
422 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
423 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
424 launchpad-buildd-image-modifier-bos02-ppc64el:
425 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
426 options:
427 clamav-database-url: "{{ clamav_database_url }}"
428 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
429 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
430 remote-modifiers: '{{ modifiers_bos02 }}'
431 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
432 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
433 launchpad-buildd-image-modifier-bos02-s390x:
434 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
435 options:
436 clamav-database-url: "{{ clamav_database_url }}"
437 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
438 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
439 remote-modifiers: '{{ modifiers_bos02 }}'
440 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
441 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
442 launchpad-buildd-image-modifier-bos03-amd64:
443 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
444 options:
445 clamav-database-url: "{{ clamav_database_url }}"
446 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
447 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
448 launchpad-buildd-image-modifier-bos03-arm64:
449 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
450 options:
451 clamav-database-url: "{{ clamav_database_url }}"
452 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
453 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false compat_uts_machine=armv7l"
454 remote-modifiers: '{{ modifiers_bos03 }}'
455 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
456 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
457{%- if stage_name in ("production", "qastaging") %}
458 launchpad-buildd-image-modifier-bos03-riscv64:
459 charm: {{ charm_dir }}/launchpad-buildd-image-modifier
460 options:
461 clamav-database-url: "{{ clamav_database_url }}"
462 launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
463 linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"
464 # XXX cjwatson 2023-11-15: jammy defaults to 5.0/stable, which has
465 # some race conditions affecting Launchpad builds. Change this to a
466 # more stable channel (e.g. 5.20/stable) once one exists that contains
467 # https://github.com/canonical/lxd/pull/12530.
468 lxd-channel: "latest/candidate"
469 remote-modifiers: '{{ modifiers_bos03 }}'
470 remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
471 remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
472 sbuild-stalled-package-timeout: 1500
473{%- endif %}
474 vbuilder-manage-bos01:
475 charm: {{ charm_dir }}/vbuilder-manage
476 constraints: "cores=2 mem=8G root-disk=20G {{ extra_constraints }}"
477 expose: true
478 num_units: 1
479 options:
480 amqp-username: vbuilder-manage-bos01
481 amqp-vhost: vbuilder-manage-bos01
482 celery-worker-count: "32"
483 dns-update-host: "{{ dns_update_host_bos01 }}"
484 dns-update-key-name: "{{ dns_update_key_name }}"
485 domain: "{{ domain_bos01 }}"
486 instance-key-name: "{{ instance_key_name_bos01 }}"
487 instance-network: "{{ instance_network_bos01 }}"
488 instance-router: "{{ instance_router }}"
489 log-hosts-allow: "{{ log_hosts_allow }}"
490 lp-buildd-managers: "{{ lp_buildd_managers }}"
491 lp-environment: "{{ lp_environment }}"
492 lp-sshkey: "{{ lp_sshkey }}"
493 openstack-auth-url: http://keystone.infra.bos01.scalingstack:5000/v3
494 openstack-identity-api-version: "3"
495 openstack-tenant-name: "{{ openstack_tenant_name }}"
496 openstack-username: "{{ openstack_username }}"
497 vbuilders: '{{ vbuilders("bos01", vbuilders_bos01) }}'
498 vbuilder-manage-bos02:
499 charm: {{ charm_dir }}/vbuilder-manage
500 constraints: "cores=2 mem=8G root-disk=20G {{ extra_constraints }}"
501 expose: true
502 num_units: 1
503 options:
504 amqp-username: vbuilder-manage-bos02
505 amqp-vhost: vbuilder-manage-bos02
506 celery-worker-count: "50"
507 dns-update-host: "{{ dns_update_host_bos02 }}"
508 dns-update-key-name: "{{ dns_update_key_name }}"
509 domain: "{{ domain_bos02 }}"
510 instance-key-name: "{{ instance_key_name_bos02 }}"
511 instance-network: "{{ instance_network_bos02 }}"
512 instance-router: "{{ instance_router }}"
513 log-hosts-allow: "{{ log_hosts_allow }}"
514 lp-buildd-managers: "{{ lp_buildd_managers }}"
515 lp-environment: "{{ lp_environment }}"
516 lp-sshkey: "{{ lp_sshkey }}"
517 openstack-auth-url: http://keystone.infra.bos02.scalingstack:5000/v2.0
518 openstack-tenant-name: "{{ openstack_tenant_name }}"
519 openstack-username: "{{ openstack_username }}"
520 vbuilders: '{{ vbuilders("bos02", vbuilders_bos02) }}'
521 vbuilder-manage-bos03:
522 charm: {{ charm_dir }}/vbuilder-manage
523 constraints: "cores=4 mem=8G root-disk=50G {{ extra_constraints }}"
524 expose: true
525 num_units: 1
526 options:
527 amqp-username: vbuilder-manage-bos03
528 amqp-vhost: vbuilder-manage-bos03
529 celery-worker-count: "50"
530 dns-update-host: "{{ dns_update_host_bos03 }}"
531 dns-update-key-name: "{{ dns_update_key_name }}"
532 domain: "{{ domain_bos03 }}"
533 instance-key-name: "{{ instance_key_name_bos03 }}"
534 instance-network: "{{ instance_network_bos03 }}"
535 instance-router: "{{ instance_router_bos03 }}"
536 log-hosts-allow: "{{ log_hosts_allow }}"
537 lp-buildd-managers: "{{ lp_buildd_managers }}"
538 lp-environment: "{{ lp_environment }}"
539 lp-sshkey: "{{ lp_sshkey }}"
540 openstack-auth-url: "https://keystone.ps6.canonical.com:5000/v3"
541 openstack-identity-api-version: "3"
542 openstack-tenant-name: "{{ openstack_tenant_name_bos03 }}"
543 openstack-username: "{{ openstack_username_bos03 }}"
544 vbuilders: '{{ vbuilders("bos03", vbuilders_bos03) }}'
545 vbuilder-manage-lcy02:
546 charm: {{ charm_dir }}/vbuilder-manage
547 constraints: "cores=4 mem=8G root-disk=50G {{ extra_constraints }}"
548 expose: true
549 num_units: 1
550 options:
551 amqp-username: vbuilder-manage-lcy02
552 amqp-vhost: vbuilder-manage-lcy02
553 celery-worker-count: "50"
554 dns-update-host: "{{ dns_update_host_lcy02 }}"
555 dns-update-key-name: "{{ dns_update_key_name }}"
556 domain: "{{ domain_lcy02 }}"
557 instance-key-name: "{{ instance_key_name_lcy02 }}"
558 instance-network: "{{ instance_network_lcy02 }}"
559 instance-router: "{{ instance_router_lcy02 }}"
560 log-hosts-allow: "{{ log_hosts_allow }}"
561 lp-buildd-managers: "{{ lp_buildd_managers }}"
562 lp-environment: "{{ lp_environment }}"
563 lp-sshkey: "{{ lp_sshkey }}"
564 openstack-auth-url: https://keystone.ps5.canonical.com:5000/v3
565 openstack-identity-api-version: "3"
566 openstack-tenant-name: "{{ openstack_tenant_name_lcy02 }}"
567 openstack-username: "{{ openstack_username_lcy02 }}"
568 vbuilders: '{{ vbuilders("lcy02", vbuilders_lcy02) }}'
569 clamav-database-mirror:
570 charm: ch:clamav-database-mirror
571 series: jammy
572 constraints: "{{ extra_constraints }}"
573 num_units: 1
574 options:
575 http-proxy: "http://squid.internal:3128/"
576 ntp:
577 charm: cs:ntp
578 options:
579 source: "ntp1.canonical.com ntp2.canonical.com ntp3.canonical.com ntp4.canonical.com"
580 # We need to configure telegraf explicitly here because we use custom
581 # plugins. The subordinates spec will set up the relations.
582 telegraf:
583 charm: ch:telegraf
584 channel: candidate
585 expose: true
586 options:
587 extra_plugins: |-
588 [[inputs.procstat]]
589 pattern = "celery.*--app ppareset"
590 [[inputs.procstat]]
591 pattern = "/usr/local/sbin/ppa-reset"
592 install_method: snap
593relations:
594 - ["glance-simplestreams-sync-bos01-amd64:image-modifier", "launchpad-buildd-image-modifier-bos01-amd64:image-modifier"]
595 - ["glance-simplestreams-sync-bos01-arm64:image-modifier", "launchpad-buildd-image-modifier-bos01-arm64:image-modifier"]
596 - ["glance-simplestreams-sync-bos01-arm64-gpu:image-modifier", "launchpad-buildd-image-modifier-bos01-arm64-gpu:image-modifier"]
597 - ["glance-simplestreams-sync-bos01-ppc64el:image-modifier", "launchpad-buildd-image-modifier-bos01-ppc64el:image-modifier"]
598 - ["glance-simplestreams-sync-bos01-s390x:image-modifier", "launchpad-buildd-image-modifier-bos01-s390x:image-modifier"]
599 - ["glance-simplestreams-sync-bos02-arm64:image-modifier", "launchpad-buildd-image-modifier-bos02-arm64:image-modifier"]
600 - ["glance-simplestreams-sync-bos02-ppc64el:image-modifier", "launchpad-buildd-image-modifier-bos02-ppc64el:image-modifier"]
601 - ["glance-simplestreams-sync-bos02-s390x:image-modifier", "launchpad-buildd-image-modifier-bos02-s390x:image-modifier"]
602 - ["glance-simplestreams-sync-bos03-amd64:image-modifier", "launchpad-buildd-image-modifier-bos03-amd64:image-modifier"]
603 - ["glance-simplestreams-sync-bos03-arm64:image-modifier", "launchpad-buildd-image-modifier-bos03-arm64:image-modifier"]
604{%- if stage_name in ("production", "qastaging") %}
605 - ["glance-simplestreams-sync-bos03-riscv64:image-modifier", "launchpad-buildd-image-modifier-bos03-riscv64:image-modifier"]
606{%- endif %}
607 - ["glance-simplestreams-sync-lcy02-amd64:image-modifier", "launchpad-buildd-image-modifier-amd64:image-modifier"]
608 - ["vbuilder-manage-bos01:amqp", "rabbitmq-server:amqp"]
609 - ["vbuilder-manage-bos02:amqp", "rabbitmq-server:amqp"]
610 - ["vbuilder-manage-bos03:amqp", "rabbitmq-server:amqp"]
611 - ["vbuilder-manage-lcy02:amqp", "rabbitmq-server:amqp"]
612 - ["rabbitmq-server", "ntp"]
613 - ["glance-simplestreams-sync-bos01-amd64", "ntp"]
614 - ["glance-simplestreams-sync-bos01-arm64", "ntp"]
615 - ["glance-simplestreams-sync-bos01-arm64-gpu", "ntp"]
616 - ["glance-simplestreams-sync-bos01-ppc64el", "ntp"]
617 - ["glance-simplestreams-sync-bos01-s390x", "ntp"]
618 - ["glance-simplestreams-sync-bos02-arm64", "ntp"]
619 - ["glance-simplestreams-sync-bos02-ppc64el", "ntp"]
620 - ["glance-simplestreams-sync-bos02-s390x", "ntp"]
621 - ["glance-simplestreams-sync-bos03-amd64", "ntp"]
622 - ["glance-simplestreams-sync-bos03-arm64", "ntp"]
623{%- if stage_name in ("production", "qastaging") %}
624 - ["glance-simplestreams-sync-bos03-riscv64", "ntp"]
625{%- endif %}
626 - ["glance-simplestreams-sync-lcy02-amd64", "ntp"]
627 - ["vbuilder-manage-bos01", "ntp"]
628 - ["vbuilder-manage-bos02", "ntp"]
629 - ["vbuilder-manage-bos03", "ntp"]
630 - ["vbuilder-manage-lcy02", "ntp"]
631 - ["clamav-database-mirror", "ntp"]
diff --git a/vbuilder/collect b/vbuilder/collect
0new file mode 100644632new file mode 100644
index 0000000..2deb9b8
--- /dev/null
+++ b/vbuilder/collect
@@ -0,0 +1,4 @@
1rabbitmq-server cs:rabbitmq-server
2glance-simplestreams-sync git+lp:~launchpad/charm-glance-simplestreams-sync;revno=scalingstack
3launchpad-buildd-image-modifier git+lp:charm-launchpad-buildd-image-modifier
4vbuilder-manage git+lp:launchpad-vbuilder-manage
diff --git a/vbuilder/configs/custom-secgroups-production.yaml b/vbuilder/configs/custom-secgroups-production.yaml
0new file mode 1006445new file mode 100644
index 0000000..95a7565
--- /dev/null
+++ b/vbuilder/configs/custom-secgroups-production.yaml
@@ -0,0 +1,10 @@
1applications:
2 clamav-database-mirror:
3 type: neutron
4 rules:
5 - clamav-database-mirror
6rules:
7 clamav-database-mirror:
8 # Public HTTP. (Firewalls restrict this to builders, but there's
9 # nothing secret here.)
10 - {"protocol": "tcp", "family": "IPv4", "port": 80, "cidr": "0.0.0.0/0"}
diff --git a/vbuilder/configs/custom-secgroups-staging.yaml b/vbuilder/configs/custom-secgroups-staging.yaml
0new file mode 10064411new file mode 100644
index 0000000..95a7565
--- /dev/null
+++ b/vbuilder/configs/custom-secgroups-staging.yaml
@@ -0,0 +1,10 @@
1applications:
2 clamav-database-mirror:
3 type: neutron
4 rules:
5 - clamav-database-mirror
6rules:
7 clamav-database-mirror:
8 # Public HTTP. (Firewalls restrict this to builders, but there's
9 # nothing secret here.)
10 - {"protocol": "tcp", "family": "IPv4", "port": 80, "cidr": "0.0.0.0/0"}
diff --git a/vbuilder/expand-bundle b/vbuilder/expand-bundle
0new file mode 10075511new file mode 100755
index 0000000..bbbe52e
--- /dev/null
+++ b/vbuilder/expand-bundle
@@ -0,0 +1,36 @@
1#! /usr/bin/python3
2# The vbuilder bundle is heavily parameterized in order to keep its length
3# under control and reduce repetition. This provides an easy way to expand
4# the bundle to see the effect of changes.
5
6from argparse import ArgumentParser
7import sys
8
9from jinja2 import (
10 Environment,
11 FileSystemLoader,
12 )
13import yaml
14
15
16def main():
17 parser = ArgumentParser()
18 parser.add_argument("stage_name", help="Mojo stage name")
19 args = parser.parse_args()
20
21 template_env = Environment(loader=FileSystemLoader("."))
22 template = template_env.get_template("bundle.yaml")
23 rendered = template.render({
24 "charm_dir": "fake-charm-dir",
25 "stage_name": args.stage_name,
26 })
27 try:
28 yaml.safe_load(rendered)
29 except Exception as e:
30 print(f"Cannot parse rendered template: {e}", file=sys.stderr)
31 sys.exit(1)
32 print(rendered)
33
34
35if __name__ == "__main__":
36 main()
diff --git a/vbuilder/manifest b/vbuilder/manifest
0new file mode 10064437new file mode 100644
index 0000000..8e13254
--- /dev/null
+++ b/vbuilder/manifest
@@ -0,0 +1,5 @@
1collect
2bundle config=bundle.yaml local=secrets
3script config=upgrade-charms
4include config=manifest-secgroups
5juju-check-wait
diff --git a/vbuilder/manifest-rebuild-images b/vbuilder/manifest-rebuild-images
0new file mode 1006446new file mode 100644
index 0000000..dbb5cb1
--- /dev/null
+++ b/vbuilder/manifest-rebuild-images
@@ -0,0 +1 @@
1script config=rebuild-images
diff --git a/vbuilder/manifest-secgroups b/vbuilder/manifest-secgroups
0new file mode 1006442new file mode 100644
index 0000000..8c438ee
--- /dev/null
+++ b/vbuilder/manifest-secgroups
@@ -0,0 +1 @@
1script config=utils/custom-secgroups.py SKIP_STAGES=devel
diff --git a/vbuilder/rebuild-images b/vbuilder/rebuild-images
0new file mode 1007552new file mode 100755
index 0000000..b4f8348
--- /dev/null
+++ b/vbuilder/rebuild-images
@@ -0,0 +1,84 @@
1#! /usr/bin/python3
2
3import os
4
5from utils import utils
6
7
8name_prefix_by_stage = {
9 "qastaging": "launchpad-buildd-qastaging",
10 "staging": "launchpad-buildd-staging",
11 "production": "launchpad-buildd",
12 }
13
14targets_by_stage = {
15 "qastaging": [
16 ("bos01", "amd64", "focal"),
17 ("bos01", "arm64", "focal"),
18 ("bos01", "arm64-gpu", "focal"),
19 ("bos01", "ppc64el", "focal"),
20 ("bos01", "s390x", "focal"),
21 ("bos02", "arm64", "focal"),
22 ("bos02", "ppc64el", "focal"),
23 ("bos02", "s390x", "focal"),
24 ("bos03", "amd64", "focal"),
25 ("bos03", "arm64", "focal"),
26 ("bos03", "riscv64", "jammy"),
27 ("lcy02", "amd64", "focal"),
28 ],
29 "staging": [
30 ("bos01", "amd64", "jammy"),
31 ("bos01", "arm64", "jammy"),
32 ("bos01", "arm64-gpu", "jammy"),
33 ("bos01", "ppc64el", "jammy"),
34 ("bos01", "s390x", "jammy"),
35 ("bos02", "arm64", "jammy"),
36 ("bos02", "ppc64el", "jammy"),
37 ("bos02", "s390x", "jammy"),
38 ("bos03", "amd64", "jammy"),
39 ("lcy02", "amd64", "jammy"),
40 ],
41 "production": [
42 ("bos01", "amd64", "focal"),
43 ("bos01", "arm64", "focal"),
44 ("bos01", "ppc64el", "focal"),
45 ("bos01", "s390x", "focal"),
46 ("bos02", "arm64", "focal"),
47 ("bos02", "ppc64el", "focal"),
48 ("bos02", "s390x", "focal"),
49 ("bos03", "amd64", "focal"),
50 ("bos03", "arm64", "focal"),
51 ("bos03", "riscv64", "jammy"),
52 ("lcy02", "amd64", "focal"),
53 ],
54 }
55
56
57def get_leader_unit(juju_services, application):
58 """Get the current leader unit for an application.
59
60 "juju run-action application/leader" sometimes reports "ERROR could not
61 determine leader for ..." even though a leader exists. Work around this.
62 """
63 return next(
64 name for name, status in juju_services[application]["units"].items()
65 if status.get("leader", False))
66
67
68def main():
69 stage = os.path.basename(os.environ["MOJO_STAGE"])
70 name_prefix = name_prefix_by_stage[stage]
71 targets = targets_by_stage[stage]
72 juju_services = utils.juju_services()
73 for region, arch, series in targets:
74 application = f"glance-simplestreams-sync-{region}-{arch}"
75 unit = get_leader_unit(juju_services, application)
76 rebuild_cmd = [
77 "juju", "ssh", unit, "sudo", "/usr/local/bin/rebuild-latest-image",
78 f"{name_prefix}/ubuntu-{series}-daily-{arch}-",
79 ]
80 utils.run(None, rebuild_cmd)
81
82
83if __name__ == "__main__":
84 main()
diff --git a/vbuilder/upgrade-charms b/vbuilder/upgrade-charms
0new file mode 10075585new file mode 100755
index 0000000..dcf96c6
--- /dev/null
+++ b/vbuilder/upgrade-charms
@@ -0,0 +1,93 @@
1#! /usr/bin/python3
2
3import utils.check_version # noqa: F401
4
5import os.path
6import subprocess
7
8
9targets_by_stage = {
10 "qastaging": [
11 ("bos01", "amd64"),
12 ("bos01", "arm64"),
13 ("bos01", "arm64-gpu"),
14 ("bos01", "ppc64el"),
15 ("bos01", "s390x"),
16 ("bos02", "arm64"),
17 ("bos02", "ppc64el"),
18 ("bos02", "s390x"),
19 ("bos03", "amd64"),
20 ("bos03", "arm64"),
21 ("bos03", "riscv64"),
22 ("lcy02", "amd64"),
23 ],
24 "staging": [
25 ("bos01", "amd64"),
26 ("bos01", "arm64"),
27 ("bos01", "arm64-gpu"),
28 ("bos01", "ppc64el"),
29 ("bos01", "s390x"),
30 ("bos02", "arm64"),
31 ("bos02", "ppc64el"),
32 ("bos02", "s390x"),
33 ("bos03", "amd64"),
34 ("lcy02", "amd64"),
35 ],
36 "production": [
37 ("bos01", "amd64"),
38 ("bos01", "arm64"),
39 ("bos01", "ppc64el"),
40 ("bos01", "s390x"),
41 ("bos02", "arm64"),
42 ("bos02", "ppc64el"),
43 ("bos02", "s390x"),
44 ("bos03", "amd64"),
45 ("bos03", "arm64"),
46 ("bos03", "riscv64"),
47 ("lcy02", "amd64"),
48 ],
49}
50
51
52upgraded = set()
53
54
55def upgrade_charm(app_name, charm_name):
56 if app_name in upgraded:
57 return
58 subprocess.check_call(
59 [
60 "juju",
61 "upgrade-charm",
62 app_name,
63 "--path=%s"
64 % os.path.join(
65 os.environ["MOJO_REPO_DIR"],
66 os.environ["MOJO_SERIES"],
67 charm_name,
68 ),
69 ]
70 )
71 upgraded.add(app_name)
72
73
74def main():
75 stage = os.path.basename(os.environ["MOJO_STAGE"])
76 targets = targets_by_stage[stage]
77 for region, arch in targets:
78 upgrade_charm(
79 f"glance-simplestreams-sync-{region}-{arch}",
80 "glance-simplestreams-sync",
81 )
82 # lcy02-amd64 uses an anomalous name for this charm; we won't follow
83 # this pattern for future regions on amd64.
84 if (region, arch) == ("lcy02", "amd64"):
85 lbim_app_name = "launchpad-buildd-image-modifier-amd64"
86 else:
87 lbim_app_name = f"launchpad-buildd-image-modifier-{region}-{arch}"
88 upgrade_charm(lbim_app_name, "launchpad-buildd-image-modifier")
89 upgrade_charm(f"vbuilder-manage-{region}", "vbuilder-manage")
90
91
92if __name__ == "__main__":
93 main()
diff --git a/vbuilder/utils b/vbuilder/utils
0new file mode 12000094new file mode 120000
index 0000000..468ba70
--- /dev/null
+++ b/vbuilder/utils
@@ -0,0 +1 @@
1../utils
0\ No newline at end of file2\ No newline at end of file

Subscribers

People subscribed via source and target branches