blob: 50765d1022ab94c39d644df3511204c742e524c9 [file] [log] [blame]
OlgaGusarenkoa8b77152018-07-30 23:33:35 +03001=====
2Usage
3=====
Ales Komarekef982692016-02-21 14:56:07 +01004
OlgaGusarenkoa8b77152018-07-30 23:33:35 +03005Metal as a Service
Ales Komarekef982692016-02-21 14:56:07 +01006
7Sample pillars
8==============
9
OlgaGusarenkoa8b77152018-07-30 23:33:35 +030010Single maas service:
Ales Komarekef982692016-02-21 14:56:07 +010011
12.. code-block:: yaml
13
14 maas:
15 server:
16 enabled: true
17
OlgaGusarenkoa8b77152018-07-30 23:33:35 +030018Single MAAS region service [single UI/API]:
Ondrej Smola9af2b082016-08-25 17:37:29 +020019
20.. code-block:: yaml
21
Damian Szelugaa8248102017-03-16 08:48:51 +010022 maas:
Damian Szeluga336ff2e2017-03-30 11:19:34 +020023 salt_master_ip: 192.168.0.10
Damian Szelugaa8248102017-03-16 08:48:51 +010024 region:
Jiri Broulik0df14bc2017-08-07 10:01:55 +020025 upstream_proxy:
26 address: 10.0.0.1
27 port: 8080
Ondrej Smola3ffb6312017-09-22 17:13:10 +020028 user: username #OPTIONAL
29 password: password #OPTIONAL
Damian Szelugaa8248102017-03-16 08:48:51 +010030 theme: mirantis
31 bind:
32 host: 192.168.0.10:5240
33 port: 5240
34 admin:
35 username: exampleuser
36 password: examplepassword
37 email: email@example.com
38 database:
39 engine: null
40 host: localhost
41 name: maasdb
42 password: qwqwqw
43 username: maas
44 enabled: true
45 user: mirantis
46 token: "89EgtWkX45ddjMYpuL:SqVjxFG87Dr6kVf4Wp:5WLfbUgmm9XQtJxm3V2LUUy7bpCmqmnk"
47 fabrics:
azvyagintsevf3515c82018-06-26 18:59:05 +030048 fabric1:
49 name: 'tf2'
azvyagintsev06b71e72017-11-08 17:11:07 +020050 description: "Test fabric"
azvyagintsevf3515c82018-06-26 18:59:05 +030051 fabric2:
52 name: 'tf2'
azvyagintsev06b71e72017-11-08 17:11:07 +020053 description: "Test fabric2"
azvyagintsevf3515c82018-06-26 18:59:05 +030054 deploy_network:
55 name: 'deploy_network'
56 description: Fabric for deploy_network
57 vlans:
58 0:
59 name: 'vlan 0'
60 description: Deploy VLAN
Petr Ruzicka80471852018-07-13 14:08:27 +020061 mtu: 1500
azvyagintsevf3515c82018-06-26 18:59:05 +030062 dhcp: true
azvyagintsev6913e5e2018-07-05 11:42:53 +030063 # FIXME: after refactoring domain module, it should be
64 # fixed exactly for FQDN, not only 'hostname'
azvyagintsevf3515c82018-06-26 18:59:05 +030065 primary_rack: "${linux:network:hostname}"
66
Damian Szelugaa8248102017-03-16 08:48:51 +010067 subnets:
68 subnet1:
azvyagintsevf3515c82018-06-26 18:59:05 +030069 fabric: ${maas:region:fabrics:deploy_network:name}
Damian Szelugaa8248102017-03-16 08:48:51 +010070 cidr: 2.2.3.0/24
71 gateway_ip: 2.2.3.2
azvyagintsevf3515c82018-06-26 18:59:05 +030072 vlan: 150
73 ipranges:
74 1:
75 end: "2.2.3.40"
76 start: "2.2.3.20"
77 type: dynamic
78 2:
79 end: "2.2.3.250"
80 start: "2.2.3.45"
azvyagintsev87e68362018-07-23 09:21:38 +020081 type: reserved
Damian Szelugaa8248102017-03-16 08:48:51 +010082 dhcp_snippets:
83 test-snippet:
84 value: option bootfile-name "tftp://192.168.0.10/snippet";
85 description: Test snippet
86 enabled: true
87 subnet: subnet1
azvyagintsev3ff2ef12018-06-01 21:30:45 +030088 boot_sources_delete_all_others: true
Jiri Broulike30a60f2018-04-09 21:15:10 +020089 boot_sources:
azvyagintsev3ff2ef12018-06-01 21:30:45 +030090 resources_mirror:
91 url: http://images.maas.io/ephemeral-v3/
Jiri Broulike30a60f2018-04-09 21:15:10 +020092 keyring_file: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
azvyagintsev3ff2ef12018-06-01 21:30:45 +030093 boot_sources_selections:
94 xenial:
95 url: "http://images.maas.io/ephemeral-v3/" # should be same in boot_sources, or other already defined.
96 os: "ubuntu"
97 release: "xenial"
98 arches: "amd64"
99 subarches: '"*"'
100 labels: '"*"'
Damian Szelugaa8248102017-03-16 08:48:51 +0100101 package_repositories:
102 Saltstack:
103 url: http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3/
104 distributions:
105 - trusty
106 components:
107 - main
Damian Szelugaa8248102017-03-16 08:48:51 +0100108 arches: amd64
109 key: "-----BEGIN PGP PUBLIC KEY BLOCK-----
110 Version: GnuPG v2
Pavel Cizinsky5a6e2722016-08-31 15:58:13 +0200111
Damian Szelugaa8248102017-03-16 08:48:51 +0100112 mQENBFOpvpgBCADkP656H41i8fpplEEB8IeLhugyC2rTEwwSclb8tQNYtUiGdna9
azvyagintsev06b71e72017-11-08 17:11:07 +0200113 ......
Damian Szelugaa8248102017-03-16 08:48:51 +0100114 fuBmScum8uQTrEF5+Um5zkwC7EXTdH1co/+/V/fpOtxIg4XO4kcugZefVm5ERfVS
115 MA==
116 =dtMN
117 -----END PGP PUBLIC KEY BLOCK-----"
118 enabled: true
119 machines:
azvyagintsev06b71e72017-11-08 17:11:07 +0200120 machine1_new_schema:
121 pxe_interface_mac: "11:22:33:44:55:66" # Node will be identified by those mac
122 interfaces:
123 nic01: # could be any, used for iterate only
124 type: eth # NotImplemented
125 name: eth0 # Override default nic name. Interface to rename will be identified by mac
126 mac: "11:22:33:44:55:66"
127 mode: "static"
128 ip: "2.2.3.19" # ip should be out of reserved subnet range, but still in subnet range
129 subnet: "subnet1"
130 gateway: "2.2.3.2" # override default gateway from subnet
131 nic02:
132 type: eth # Not-implemented
133 mac: "11:22:33:44:55:78"
134 subnet: "subnet2"
135 mode: "dhcp"
Damian Szelugaa8248102017-03-16 08:48:51 +0100136 power_parameters:
137 power_type: ipmi
138 power_address: '192.168.10.10'
139 power_user: bmc_user
140 power_password: bmc_password
Ondrej Smola455003c2017-06-01 22:53:39 +0200141 #Optional (for legacy HW)
142 power_driver: LAN
azvyagintsev06b71e72017-11-08 17:11:07 +0200143 distro_series: xenial
144 hwe_kernel: hwe-16.04
145 machine1_old_schema:
146 interface:
147 mac: "11:22:33:44:55:88" # Node will be identified by those mac
148 mode: "static"
149 ip: "2.2.3.15"
150 subnet: "subnet1"
151 gateway: "2.2.3.2"
152 power_parameters:
153 power_type: ipmi
154 power_address: '192.168.10.10'
155 power_user: bmc_user
156 power_password: bmc_password
157 #Optional (for legacy HW)
158 power_driver: LAN
Maciej Relewicz37b12a22017-04-25 15:23:16 +0200159 distro_series: xenial
160 hwe_kernel: hwe-16.04
Petr Ruzicka610f2852018-08-22 15:05:52 +0200161 virsh_example:
162 pxe_interface_mac: "52:54:00:00:01:01"
163 interfaces:
164 nic01:
165 type: eth
166 name: eth0
167 mac: "52:54:00:00:01:01"
168 subnet: "${maas:region:subnets:deploy_network:name}"
169 mode: "dhcp"
170 power_parameters:
171 power_type: virsh
172 power_address: "qemu+tcp://my-kvm-node-hostname/system"
173 power_id: "kvm01-pxe01"
Damian Szelugaa8248102017-03-16 08:48:51 +0100174 devices:
175 machine1-ipmi:
176 interface:
177 ip_address: 192.168.10.10
178 subnet: cidr:192.168.10.0/24
179 mac: '66:55:44:33:22:11'
Damian Szeluga336ff2e2017-03-30 11:19:34 +0200180 commissioning_scripts:
azvyagintsevec61dd62017-11-16 19:12:05 +0200181 00-maas-05-simplify-network-interfaces: /etc/maas/files/commisioning_scripts/00-maas-05-simplify-network-interfaces
Damian Szeluga336ff2e2017-03-30 11:19:34 +0200182 maas_config:
azvyagintsev6913e5e2018-07-05 11:42:53 +0300183 # domain: mydomain.local # This function broken
Damian Szeluga336ff2e2017-03-30 11:19:34 +0200184 http_proxy: http://192.168.0.10:3142
185 commissioning_distro_series: xenial
186 default_distro_series: xenial
187 default_osystem: 'ubuntu'
188 default_storage_layout: lvm
189 disk_erase_with_secure_erase: true
190 dnssec_validation: 'no'
191 enable_third_party_drivers: true
192 maas_name: cfg01
193 network_discovery: 'enabled'
194 active_discovery_interval: '600'
195 ntp_external_only: true
196 ntp_servers: 10.10.11.23 10.10.11.24
197 upstream_dns: 192.168.12.13
198 enable_http_proxy: true
199 default_min_hwe_kernel: ''
200 sshprefs:
azvyagintsev06b71e72017-11-08 17:11:07 +0200201 - 'ssh-rsa ASD.........dfsadf blah@blah'
Ondrej Smola9af2b082016-08-25 17:37:29 +0200202
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300203Update VLAN:
Pavel Cizinsky8dd85b52018-06-18 21:40:13 +0200204
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300205.. note:: Vid 0 has default name untagged in the MaaS UI.
Pavel Cizinsky0995e8f2018-05-04 17:10:37 +0200206
207.. code-block:: yaml
208
209 maas:
210 region:
211 fabrics:
212 test-fabric:
213 description: "Test fabric"
214 vlan:
215 0:
216 description: "Your VLAN 0"
217 dhcp: True
218 13:
219 description: "Your VLAN 13"
220 dhcp: False
Ondrej Smola9af2b082016-08-25 17:37:29 +0200221
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300222Create disk schema per machine via ``maas/client.sls`` with
223default lvm schema + default values.
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100224
Maria Zlatkova3e88fd72018-08-08 10:51:29 +0300225.. note:: This should be used mostly for custom root
226 partitioning and RAID configuration. For
227 not-root partitions, use ``salt-formula-linux``.
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100228
229.. code-block:: yaml
230
231 maas:
232 region:
233 machines:
234 server1:
235 disk_layout:
236 type: lvm
237 root_size: 20G
238 root_device: vda
239 volume_group: vg1
240 volume_name: root
241 volume_size: 8
242 bootable_device: vda
243
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300244FLAT layout with custom root size:
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100245
246.. code-block:: yaml
247
248 maas:
249 region:
250 machines:
251 server2:
252 disk_layout:
253 type: flat
254 root_size: 20
255 physical_device: vda
256 bootable_device: vda
257
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300258Size specification with ``%`` char used is not yet supported.
Petr Michalec16cc5c92018-05-17 09:56:35 +0200259
260.. code-block:: yaml
azvyagintsev80f9da72018-06-01 18:01:45 +0300261
Petr Michalec16cc5c92018-05-17 09:56:35 +0200262 maas:
263 region:
264 machines:
265 server3:
266 disk_layout:
267 type: flat
268 bootable_device: sda
269 disk:
270 sda:
271 type: physical
272 partition_schema:
273 part1:
274 size: 100%
275 type: ext4
276 mount: '/'
277
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300278Define more complex layout:
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100279
280.. code-block:: yaml
281
282 maas:
283 region:
284 machines:
285 server3:
286 disk_layout:
azvyagintsevbca1f462018-05-25 19:06:46 +0300287 type: custom
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100288 bootable_device: vda
289 disk:
290 vda:
291 type: physical
292 partition_schema:
293 part1:
294 size: 10G
295 type: ext4
296 mount: '/'
297 part2:
298 size: 2G
299 part3:
300 size: 3G
301 vdc:
302 type: physical
303 partition_schema:
304 part1:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200305 size: 100G
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100306 vdd:
307 type: physical
308 partition_schema:
309 part1:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200310 size: 100G
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100311 raid0:
312 type: raid
313 level: 10
314 devices:
315 - vde
316 - vdf
317 partition_schema:
318 part1:
319 size: 10G
320 part2:
321 size: 2G
322 part3:
323 size: 3G
324 raid1:
325 type: raid
326 level: 1
327 partitions:
328 - vdc-part1
329 - vdd-part1
330 volume_group2:
331 type: lvm
332 devices:
333 - raid1
334 volume:
335 tmp:
336 size: 5G
Ondrej Smola47b56752018-03-06 15:38:27 +0100337 type: ext4
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100338 mount: '/tmp'
339 log:
340 size: 7G
Ondrej Smola47b56752018-03-06 15:38:27 +0100341 type: ext4
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100342 mount: '/var/log'
azvyagintsev7605a662017-11-03 19:05:04 +0200343
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300344Raid setup, 4x HDD:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200345
346.. code-block:: yaml
347
348 maas:
349 region:
350 machines:
351 serverWithRaidExample:
352 disk_layout:
azvyagintsevbca1f462018-05-25 19:06:46 +0300353 type: custom
354 bootable_device: sda
Petr Michalec16cc5c92018-05-17 09:56:35 +0200355 disk:
356 md0:
357 type: raid
358 level: 1
359 devices:
360 - sda
361 - sdb
362 partition_schema:
363 part1:
364 size: 230G
365 type: ext4
366 mount: /
367 md1:
368 type: raid
369 level: 1
370 devices:
371 - sdc
372 - sdd
373 partition_schema:
374 part1:
375 size: 1890G
376 type: ext4
377 mount: /var/lib/libvirt
378
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300379Raid + LVM setup, 2xSSD + 2xHDD:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200380
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300381.. note:: This setup lacks the ability run state twice,
382 as of now when ``disk_partition_present`` is called,
383 it tries blindly to delete the partition and then
384 recreated. That fails as MAAS rejects remove
385 partition used in RAID/LVM.
Petr Michalec16cc5c92018-05-17 09:56:35 +0200386
387.. code-block:: yaml
388
389 maas:
390 region:
391 machines:
392 serverWithRaidExample2:
393 disk_layout:
azvyagintsevbca1f462018-05-25 19:06:46 +0300394 type: custom
Petr Michalec16cc5c92018-05-17 09:56:35 +0200395 #bootable_device: vgssd-root
396 disk:
397 sda: &maas_disk_physical_ssd
398 type: physical
399 partition_schema:
400 part1:
401 size: 239G
402 sdb: *maas_disk_physical_ssd
403 sdc: &maas_disk_physical_hdd
404 type: physical
405 partition_schema:
406 part1:
407 size: 1990G
408 sdd: *maas_disk_physical_hdd
409 md0:
410 type: raid
411 level: 1
412 partitions:
413 - sda-part1
414 - sdb-part1
415 md1:
416 type: raid
417 level: 1
418 partitions:
419 - sdc-part1
420 - sdd-part1
421 vgssd:
422 type: lvm
423 devices:
424 - md0
425 volume:
426 root:
427 size: 230G
428 type: ext4
429 mount: '/'
430 vghdd:
431 type: lvm
432 devices:
433 - md1
434 volume:
435 libvirt:
436 size: 1800G
437 type: ext4
438 mount: '/var/lib/libvirt'
439
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300440Setup image mirror (Maas boot resources):
Jiri Broulike30a60f2018-04-09 21:15:10 +0200441
442.. code-block:: yaml
443
444 maas:
445 mirror:
446 enabled: true
447 image:
azvyagintsev80f9da72018-06-01 18:01:45 +0300448 sections:
449 bootloaders:
450 keyring: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
451 upstream: http://images.maas.io/ephemeral-v3/daily/
452 local_dir: /var/www/html/maas/images/ephemeral-v3/daily
453 count: 1
454 # i386 need for pxe
455 filters: ['arch~(i386|amd64)', 'os~(grub*|pxelinux)']
Jiri Broulike30a60f2018-04-09 21:15:10 +0200456 xenial:
azvyagintsev80f9da72018-06-01 18:01:45 +0300457 keyring: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
458 upstream: http://images.maas.io/ephemeral-v3/daily/
459 local_dir: /var/www/html/maas/images/ephemeral-v3/daily
460 count: 1
461 filters: ['release~(xenial)', 'arch~(amd64)', 'subarch~(generic|hwe-16.04$|ga-16.04)']
Jiri Broulike30a60f2018-04-09 21:15:10 +0200462 count: 1
463
azvyagintsev80f9da72018-06-01 18:01:45 +0300464Usage of local deb repos
Richard Felklce118a22017-09-13 11:09:12 +0200465
466.. code-block:: yaml
azvyagintsev7605a662017-11-03 19:05:04 +0200467
Richard Felklce118a22017-09-13 11:09:12 +0200468 maas:
469 cluster:
470 enabled: true
471 region:
472 port: 80
473 host: localhost
474 saltstack_repo_key: |
475 -----BEGIN PGP PUBLIC KEY BLOCK-----
476 Version: GnuPG v2
477
478 mQENBFOpvpgBCADkP656H41i8fpplEEB8IeLhugyC2rTEwwSclb8tQNYtUiGdna9
azvyagintsev06b71e72017-11-08 17:11:07 +0200479 .....
Richard Felklce118a22017-09-13 11:09:12 +0200480 fuBmScum8uQTrEF5+Um5zkwC7EXTdH1co/+/V/fpOtxIg4XO4kcugZefVm5ERfVS
481 MA==
482 =dtMN
483 -----END PGP PUBLIC KEY BLOCK-----
azvyagintseva80fdfb2018-07-16 22:34:45 +0300484 saltstack_repo_xenial: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-xenial stable salt"
485 saltstack_repo_trusty: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-trusty stable salt"
Richard Felklce118a22017-09-13 11:09:12 +0200486
Ondrej Smola9af2b082016-08-25 17:37:29 +0200487Single MAAS cluster service [multiple racks]
488
489.. code-block:: yaml
490
491 maas:
492 cluster:
493 enabled: true
Jakub Pavlikf43512b2016-08-30 10:25:42 +0200494 role: master/slave
Ondrej Smola9af2b082016-08-25 17:37:29 +0200495
azvyagintsev7605a662017-11-03 19:05:04 +0200496.. code-block:: yaml
497
498 maas:
499 cluster:
500 enabled: true
501 role: master/slave
502
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300503MAAS region service with backup data:
Martin Polreich0764b762017-11-20 14:08:30 +0100504
505.. code-block:: yaml
azvyagintsev80f9da72018-06-01 18:01:45 +0300506
Martin Polreich0764b762017-11-20 14:08:30 +0100507 maas:
508 region:
509 database:
510 initial_data:
511 source: cfg01.local
512 host: 192.168.0.11
513
Petr Michalec8a0d52e2018-05-30 16:22:56 +0200514Test pillars
515==============
516
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300517Mind the PostgreSQL and rsyslog ``.sls``. Database and
518syslog service are required for MAAS to properly install
519and work.
Petr Michalec8a0d52e2018-05-30 16:22:56 +0200520
521* https://github.com/salt-formulas/salt-formula-rsyslog/tree/master/tests/pillar
522
523
azvyagintsev7605a662017-11-03 19:05:04 +0200524Module function's example:
525==========================
526
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300527Wait for status of selected machine's:
azvyagintsev7605a662017-11-03 19:05:04 +0200528
529.. code-block:: bash
530
531 > cat maas/machines/wait_for_machines_ready.sls
532
533 ...
534
535 wait_for_machines_ready:
536 module.run:
537 - name: maas.wait_for_machine_status
538 - kwargs:
539 machines:
540 - kvm01
541 - kvm02
542 timeout: 1200 # in seconds
543 req_status: "Ready"
544 - require:
545 - cmd: maas_login_admin
546 ...
547
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300548If module run w/\o any extra paremeters,
549``wait_for_machines_ready`` will wait for defined in salt
550machines. In this case, it is usefull to skip some machines:
azvyagintsev7605a662017-11-03 19:05:04 +0200551
552.. code-block:: bash
553
554 > cat maas/machines/wait_for_machines_deployed.sls
555
556 ...
557
558 wait_for_machines_ready:
559 module.run:
560 - name: maas.wait_for_machine_status
561 - kwargs:
562 timeout: 1200 # in seconds
Michael Polenchuke438bd32017-11-09 20:42:42 +0400563 req_status: "Deployed"
azvyagintsev7605a662017-11-03 19:05:04 +0200564 ignore_machines:
565 - kvm01 # in case it's broken or whatever
566 - require:
567 - cmd: maas_login_admin
568 ...
569
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300570List of available ``req_status`` defined in global variable:
azvyagintsev06b71e72017-11-08 17:11:07 +0200571
572.. code-block:: python
573
574 STATUS_NAME_DICT = dict([
575 (0, 'New'), (1, 'Commissioning'), (2, 'Failed commissioning'),
576 (3, 'Missing'), (4, 'Ready'), (5, 'Reserved'), (10, 'Allocated'),
577 (9, 'Deploying'), (6, 'Deployed'), (7, 'Retired'), (8, 'Broken'),
578 (11, 'Failed deployment'), (12, 'Releasing'),
579 (13, 'Releasing failed'), (14, 'Disk erasing'),
580 (15, 'Failed disk erasing')])
azvyagintsev7605a662017-11-03 19:05:04 +0200581
Ales Komarekef982692016-02-21 14:56:07 +0100582Read more
583=========
584
Roald Nefsc86d84a2017-10-12 21:19:50 +0200585* https://maas.io/
Filip Pytlounc07d2352017-02-02 13:02:03 +0100586
587Documentation and Bugs
588======================
589
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300590* http://salt-formulas.readthedocs.io/
591 Learn how to install and update salt-formulas
Filip Pytlounc07d2352017-02-02 13:02:03 +0100592
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300593* https://github.com/salt-formulas/salt-formula-maas/issues
594 In the unfortunate event that bugs are discovered, report the issue to the
595 appropriate issue tracker. Use the Github issue tracker for a specific salt
596 formula
Filip Pytlounc07d2352017-02-02 13:02:03 +0100597
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300598* https://launchpad.net/salt-formulas
599 For feature requests, bug reports, or blueprints affecting the entire
600 ecosystem, use the Launchpad salt-formulas project
Filip Pytlounc07d2352017-02-02 13:02:03 +0100601
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300602* https://launchpad.net/~salt-formulas-users
603 Join the salt-formulas-users team and subscribe to mailing list if required
Filip Pytlounc07d2352017-02-02 13:02:03 +0100604
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300605* https://github.com/salt-formulas/salt-formula-maas
606 Develop the salt-formulas projects in the master branch and then submit pull
607 requests against a specific formula
Filip Pytlounc07d2352017-02-02 13:02:03 +0100608
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300609* #salt-formulas @ irc.freenode.net
610 Use this IRC channel in case of any questions or feedback which is always
611 welcome
Filip Pytlounc07d2352017-02-02 13:02:03 +0100612