blob: 87a06cf17083c1d1d2149baddbef5a2191158ab2 [file] [log] [blame]
Ales Komarekef982692016-02-21 14:56:07 +01001
OlgaGusarenkoa8b77152018-07-30 23:33:35 +03002=====
3Usage
4=====
Ales Komarekef982692016-02-21 14:56:07 +01005
OlgaGusarenkoa8b77152018-07-30 23:33:35 +03006Metal as a Service
Ales Komarekef982692016-02-21 14:56:07 +01007
8Sample pillars
9==============
10
OlgaGusarenkoa8b77152018-07-30 23:33:35 +030011Single maas service:
Ales Komarekef982692016-02-21 14:56:07 +010012
13.. code-block:: yaml
14
15 maas:
16 server:
17 enabled: true
18
OlgaGusarenkoa8b77152018-07-30 23:33:35 +030019Single MAAS region service [single UI/API]:
Ondrej Smola9af2b082016-08-25 17:37:29 +020020
21.. code-block:: yaml
22
Damian Szelugaa8248102017-03-16 08:48:51 +010023 maas:
Damian Szeluga336ff2e2017-03-30 11:19:34 +020024 salt_master_ip: 192.168.0.10
Damian Szelugaa8248102017-03-16 08:48:51 +010025 region:
Jiri Broulik0df14bc2017-08-07 10:01:55 +020026 upstream_proxy:
27 address: 10.0.0.1
28 port: 8080
Ondrej Smola3ffb6312017-09-22 17:13:10 +020029 user: username #OPTIONAL
30 password: password #OPTIONAL
Damian Szelugaa8248102017-03-16 08:48:51 +010031 theme: mirantis
32 bind:
33 host: 192.168.0.10:5240
34 port: 5240
35 admin:
36 username: exampleuser
37 password: examplepassword
38 email: email@example.com
39 database:
40 engine: null
41 host: localhost
42 name: maasdb
43 password: qwqwqw
44 username: maas
45 enabled: true
46 user: mirantis
47 token: "89EgtWkX45ddjMYpuL:SqVjxFG87Dr6kVf4Wp:5WLfbUgmm9XQtJxm3V2LUUy7bpCmqmnk"
48 fabrics:
azvyagintsevf3515c82018-06-26 18:59:05 +030049 fabric1:
50 name: 'tf2'
azvyagintsev06b71e72017-11-08 17:11:07 +020051 description: "Test fabric"
azvyagintsevf3515c82018-06-26 18:59:05 +030052 fabric2:
53 name: 'tf2'
azvyagintsev06b71e72017-11-08 17:11:07 +020054 description: "Test fabric2"
azvyagintsevf3515c82018-06-26 18:59:05 +030055 deploy_network:
56 name: 'deploy_network'
57 description: Fabric for deploy_network
58 vlans:
59 0:
60 name: 'vlan 0'
61 description: Deploy VLAN
Petr Ruzicka80471852018-07-13 14:08:27 +020062 mtu: 1500
azvyagintsevf3515c82018-06-26 18:59:05 +030063 dhcp: true
azvyagintsev6913e5e2018-07-05 11:42:53 +030064 # FIXME: after refactoring domain module, it should be
65 # fixed exactly for FQDN, not only 'hostname'
azvyagintsevf3515c82018-06-26 18:59:05 +030066 primary_rack: "${linux:network:hostname}"
67
Damian Szelugaa8248102017-03-16 08:48:51 +010068 subnets:
69 subnet1:
azvyagintsevf3515c82018-06-26 18:59:05 +030070 fabric: ${maas:region:fabrics:deploy_network:name}
Damian Szelugaa8248102017-03-16 08:48:51 +010071 cidr: 2.2.3.0/24
72 gateway_ip: 2.2.3.2
azvyagintsevf3515c82018-06-26 18:59:05 +030073 vlan: 150
74 ipranges:
75 1:
76 end: "2.2.3.40"
77 start: "2.2.3.20"
78 type: dynamic
79 2:
80 end: "2.2.3.250"
81 start: "2.2.3.45"
azvyagintsev87e68362018-07-23 09:21:38 +020082 type: reserved
Damian Szelugaa8248102017-03-16 08:48:51 +010083 dhcp_snippets:
84 test-snippet:
85 value: option bootfile-name "tftp://192.168.0.10/snippet";
86 description: Test snippet
87 enabled: true
88 subnet: subnet1
azvyagintsev3ff2ef12018-06-01 21:30:45 +030089 boot_sources_delete_all_others: true
Jiri Broulike30a60f2018-04-09 21:15:10 +020090 boot_sources:
azvyagintsev3ff2ef12018-06-01 21:30:45 +030091 resources_mirror:
92 url: http://images.maas.io/ephemeral-v3/
Jiri Broulike30a60f2018-04-09 21:15:10 +020093 keyring_file: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
azvyagintsev3ff2ef12018-06-01 21:30:45 +030094 boot_sources_selections:
95 xenial:
96 url: "http://images.maas.io/ephemeral-v3/" # should be same in boot_sources, or other already defined.
97 os: "ubuntu"
98 release: "xenial"
99 arches: "amd64"
100 subarches: '"*"'
101 labels: '"*"'
Damian Szelugaa8248102017-03-16 08:48:51 +0100102 package_repositories:
103 Saltstack:
104 url: http://repo.saltstack.com/apt/ubuntu/14.04/amd64/2016.3/
105 distributions:
106 - trusty
107 components:
108 - main
Damian Szelugaa8248102017-03-16 08:48:51 +0100109 arches: amd64
110 key: "-----BEGIN PGP PUBLIC KEY BLOCK-----
111 Version: GnuPG v2
Pavel Cizinsky5a6e2722016-08-31 15:58:13 +0200112
Damian Szelugaa8248102017-03-16 08:48:51 +0100113 mQENBFOpvpgBCADkP656H41i8fpplEEB8IeLhugyC2rTEwwSclb8tQNYtUiGdna9
azvyagintsev06b71e72017-11-08 17:11:07 +0200114 ......
Damian Szelugaa8248102017-03-16 08:48:51 +0100115 fuBmScum8uQTrEF5+Um5zkwC7EXTdH1co/+/V/fpOtxIg4XO4kcugZefVm5ERfVS
116 MA==
117 =dtMN
118 -----END PGP PUBLIC KEY BLOCK-----"
119 enabled: true
120 machines:
azvyagintsev06b71e72017-11-08 17:11:07 +0200121 machine1_new_schema:
122 pxe_interface_mac: "11:22:33:44:55:66" # Node will be identified by those mac
123 interfaces:
124 nic01: # could be any, used for iterate only
125 type: eth # NotImplemented
126 name: eth0 # Override default nic name. Interface to rename will be identified by mac
127 mac: "11:22:33:44:55:66"
128 mode: "static"
129 ip: "2.2.3.19" # ip should be out of reserved subnet range, but still in subnet range
130 subnet: "subnet1"
131 gateway: "2.2.3.2" # override default gateway from subnet
132 nic02:
133 type: eth # Not-implemented
134 mac: "11:22:33:44:55:78"
135 subnet: "subnet2"
136 mode: "dhcp"
Damian Szelugaa8248102017-03-16 08:48:51 +0100137 power_parameters:
138 power_type: ipmi
139 power_address: '192.168.10.10'
140 power_user: bmc_user
141 power_password: bmc_password
Ondrej Smola455003c2017-06-01 22:53:39 +0200142 #Optional (for legacy HW)
143 power_driver: LAN
azvyagintsev06b71e72017-11-08 17:11:07 +0200144 distro_series: xenial
145 hwe_kernel: hwe-16.04
146 machine1_old_schema:
147 interface:
148 mac: "11:22:33:44:55:88" # Node will be identified by those mac
149 mode: "static"
150 ip: "2.2.3.15"
151 subnet: "subnet1"
152 gateway: "2.2.3.2"
153 power_parameters:
154 power_type: ipmi
155 power_address: '192.168.10.10'
156 power_user: bmc_user
157 power_password: bmc_password
158 #Optional (for legacy HW)
159 power_driver: LAN
160 # FIXME: that's should be moved into another,livirt example.
Petr Ruzicka5fe96742017-11-10 14:22:24 +0100161 # Used in case of power_type: virsh
162 power_id: my_libvirt_vm_name
Maciej Relewicz37b12a22017-04-25 15:23:16 +0200163 distro_series: xenial
164 hwe_kernel: hwe-16.04
Damian Szelugaa8248102017-03-16 08:48:51 +0100165 devices:
166 machine1-ipmi:
167 interface:
168 ip_address: 192.168.10.10
169 subnet: cidr:192.168.10.0/24
170 mac: '66:55:44:33:22:11'
Damian Szeluga336ff2e2017-03-30 11:19:34 +0200171 commissioning_scripts:
azvyagintsevec61dd62017-11-16 19:12:05 +0200172 00-maas-05-simplify-network-interfaces: /etc/maas/files/commisioning_scripts/00-maas-05-simplify-network-interfaces
Damian Szeluga336ff2e2017-03-30 11:19:34 +0200173 maas_config:
azvyagintsev6913e5e2018-07-05 11:42:53 +0300174 # domain: mydomain.local # This function broken
Damian Szeluga336ff2e2017-03-30 11:19:34 +0200175 http_proxy: http://192.168.0.10:3142
176 commissioning_distro_series: xenial
177 default_distro_series: xenial
178 default_osystem: 'ubuntu'
179 default_storage_layout: lvm
180 disk_erase_with_secure_erase: true
181 dnssec_validation: 'no'
182 enable_third_party_drivers: true
183 maas_name: cfg01
184 network_discovery: 'enabled'
185 active_discovery_interval: '600'
186 ntp_external_only: true
187 ntp_servers: 10.10.11.23 10.10.11.24
188 upstream_dns: 192.168.12.13
189 enable_http_proxy: true
190 default_min_hwe_kernel: ''
191 sshprefs:
azvyagintsev06b71e72017-11-08 17:11:07 +0200192 - 'ssh-rsa ASD.........dfsadf blah@blah'
Ondrej Smola9af2b082016-08-25 17:37:29 +0200193
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300194Update VLAN:
Pavel Cizinsky8dd85b52018-06-18 21:40:13 +0200195
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300196.. note:: Vid 0 has default name untagged in the MaaS UI.
Pavel Cizinsky0995e8f2018-05-04 17:10:37 +0200197
198.. code-block:: yaml
199
200 maas:
201 region:
202 fabrics:
203 test-fabric:
204 description: "Test fabric"
205 vlan:
206 0:
207 description: "Your VLAN 0"
208 dhcp: True
209 13:
210 description: "Your VLAN 13"
211 dhcp: False
Ondrej Smola9af2b082016-08-25 17:37:29 +0200212
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300213Create disk schema per machine via ``maas/client.sls`` with
214default lvm schema + default values.
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100215
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300216..note:: This should be used mostly for custom root
217 partitioning and RAID configuration. For
218 not-root partitions, use ``salt-formula-linux``.
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100219
220.. code-block:: yaml
221
222 maas:
223 region:
224 machines:
225 server1:
226 disk_layout:
227 type: lvm
228 root_size: 20G
229 root_device: vda
230 volume_group: vg1
231 volume_name: root
232 volume_size: 8
233 bootable_device: vda
234
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300235FLAT layout with custom root size:
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100236
237.. code-block:: yaml
238
239 maas:
240 region:
241 machines:
242 server2:
243 disk_layout:
244 type: flat
245 root_size: 20
246 physical_device: vda
247 bootable_device: vda
248
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300249Size specification with ``%`` char used is not yet supported.
Petr Michalec16cc5c92018-05-17 09:56:35 +0200250
251.. code-block:: yaml
azvyagintsev80f9da72018-06-01 18:01:45 +0300252
Petr Michalec16cc5c92018-05-17 09:56:35 +0200253 maas:
254 region:
255 machines:
256 server3:
257 disk_layout:
258 type: flat
259 bootable_device: sda
260 disk:
261 sda:
262 type: physical
263 partition_schema:
264 part1:
265 size: 100%
266 type: ext4
267 mount: '/'
268
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300269Define more complex layout:
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100270
271.. code-block:: yaml
272
273 maas:
274 region:
275 machines:
276 server3:
277 disk_layout:
azvyagintsevbca1f462018-05-25 19:06:46 +0300278 type: custom
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100279 bootable_device: vda
280 disk:
281 vda:
282 type: physical
283 partition_schema:
284 part1:
285 size: 10G
286 type: ext4
287 mount: '/'
288 part2:
289 size: 2G
290 part3:
291 size: 3G
292 vdc:
293 type: physical
294 partition_schema:
295 part1:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200296 size: 100G
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100297 vdd:
298 type: physical
299 partition_schema:
300 part1:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200301 size: 100G
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100302 raid0:
303 type: raid
304 level: 10
305 devices:
306 - vde
307 - vdf
308 partition_schema:
309 part1:
310 size: 10G
311 part2:
312 size: 2G
313 part3:
314 size: 3G
315 raid1:
316 type: raid
317 level: 1
318 partitions:
319 - vdc-part1
320 - vdd-part1
321 volume_group2:
322 type: lvm
323 devices:
324 - raid1
325 volume:
326 tmp:
327 size: 5G
Ondrej Smola47b56752018-03-06 15:38:27 +0100328 type: ext4
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100329 mount: '/tmp'
330 log:
331 size: 7G
Ondrej Smola47b56752018-03-06 15:38:27 +0100332 type: ext4
Ondrej Smolab57a23b2018-01-24 11:18:24 +0100333 mount: '/var/log'
azvyagintsev7605a662017-11-03 19:05:04 +0200334
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300335Raid setup, 4x HDD:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200336
337.. code-block:: yaml
338
339 maas:
340 region:
341 machines:
342 serverWithRaidExample:
343 disk_layout:
azvyagintsevbca1f462018-05-25 19:06:46 +0300344 type: custom
345 bootable_device: sda
Petr Michalec16cc5c92018-05-17 09:56:35 +0200346 disk:
347 md0:
348 type: raid
349 level: 1
350 devices:
351 - sda
352 - sdb
353 partition_schema:
354 part1:
355 size: 230G
356 type: ext4
357 mount: /
358 md1:
359 type: raid
360 level: 1
361 devices:
362 - sdc
363 - sdd
364 partition_schema:
365 part1:
366 size: 1890G
367 type: ext4
368 mount: /var/lib/libvirt
369
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300370Raid + LVM setup, 2xSSD + 2xHDD:
Petr Michalec16cc5c92018-05-17 09:56:35 +0200371
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300372.. note:: This setup lacks the ability run state twice,
373 as of now when ``disk_partition_present`` is called,
374 it tries blindly to delete the partition and then
375 recreated. That fails as MAAS rejects remove
376 partition used in RAID/LVM.
Petr Michalec16cc5c92018-05-17 09:56:35 +0200377
378.. code-block:: yaml
379
380 maas:
381 region:
382 machines:
383 serverWithRaidExample2:
384 disk_layout:
azvyagintsevbca1f462018-05-25 19:06:46 +0300385 type: custom
Petr Michalec16cc5c92018-05-17 09:56:35 +0200386 #bootable_device: vgssd-root
387 disk:
388 sda: &maas_disk_physical_ssd
389 type: physical
390 partition_schema:
391 part1:
392 size: 239G
393 sdb: *maas_disk_physical_ssd
394 sdc: &maas_disk_physical_hdd
395 type: physical
396 partition_schema:
397 part1:
398 size: 1990G
399 sdd: *maas_disk_physical_hdd
400 md0:
401 type: raid
402 level: 1
403 partitions:
404 - sda-part1
405 - sdb-part1
406 md1:
407 type: raid
408 level: 1
409 partitions:
410 - sdc-part1
411 - sdd-part1
412 vgssd:
413 type: lvm
414 devices:
415 - md0
416 volume:
417 root:
418 size: 230G
419 type: ext4
420 mount: '/'
421 vghdd:
422 type: lvm
423 devices:
424 - md1
425 volume:
426 libvirt:
427 size: 1800G
428 type: ext4
429 mount: '/var/lib/libvirt'
430
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300431Setup image mirror (Maas boot resources):
Jiri Broulike30a60f2018-04-09 21:15:10 +0200432
433.. code-block:: yaml
434
435 maas:
436 mirror:
437 enabled: true
438 image:
azvyagintsev80f9da72018-06-01 18:01:45 +0300439 sections:
440 bootloaders:
441 keyring: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
442 upstream: http://images.maas.io/ephemeral-v3/daily/
443 local_dir: /var/www/html/maas/images/ephemeral-v3/daily
444 count: 1
445 # i386 need for pxe
446 filters: ['arch~(i386|amd64)', 'os~(grub*|pxelinux)']
Jiri Broulike30a60f2018-04-09 21:15:10 +0200447 xenial:
azvyagintsev80f9da72018-06-01 18:01:45 +0300448 keyring: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
449 upstream: http://images.maas.io/ephemeral-v3/daily/
450 local_dir: /var/www/html/maas/images/ephemeral-v3/daily
451 count: 1
452 filters: ['release~(xenial)', 'arch~(amd64)', 'subarch~(generic|hwe-16.04$|ga-16.04)']
Jiri Broulike30a60f2018-04-09 21:15:10 +0200453 count: 1
454
azvyagintsev80f9da72018-06-01 18:01:45 +0300455Usage of local deb repos
Richard Felklce118a22017-09-13 11:09:12 +0200456
457.. code-block:: yaml
azvyagintsev7605a662017-11-03 19:05:04 +0200458
Richard Felklce118a22017-09-13 11:09:12 +0200459 maas:
460 cluster:
461 enabled: true
462 region:
463 port: 80
464 host: localhost
465 saltstack_repo_key: |
466 -----BEGIN PGP PUBLIC KEY BLOCK-----
467 Version: GnuPG v2
468
469 mQENBFOpvpgBCADkP656H41i8fpplEEB8IeLhugyC2rTEwwSclb8tQNYtUiGdna9
azvyagintsev06b71e72017-11-08 17:11:07 +0200470 .....
Richard Felklce118a22017-09-13 11:09:12 +0200471 fuBmScum8uQTrEF5+Um5zkwC7EXTdH1co/+/V/fpOtxIg4XO4kcugZefVm5ERfVS
472 MA==
473 =dtMN
474 -----END PGP PUBLIC KEY BLOCK-----
azvyagintseva80fdfb2018-07-16 22:34:45 +0300475 saltstack_repo_xenial: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-xenial stable salt"
476 saltstack_repo_trusty: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-trusty stable salt"
Richard Felklce118a22017-09-13 11:09:12 +0200477
Ondrej Smola9af2b082016-08-25 17:37:29 +0200478Single MAAS cluster service [multiple racks]
479
480.. code-block:: yaml
481
482 maas:
483 cluster:
484 enabled: true
Jakub Pavlikf43512b2016-08-30 10:25:42 +0200485 role: master/slave
Ondrej Smola9af2b082016-08-25 17:37:29 +0200486
azvyagintsev7605a662017-11-03 19:05:04 +0200487.. code-block:: yaml
488
489 maas:
490 cluster:
491 enabled: true
492 role: master/slave
493
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300494MAAS region service with backup data:
Martin Polreich0764b762017-11-20 14:08:30 +0100495
496.. code-block:: yaml
azvyagintsev80f9da72018-06-01 18:01:45 +0300497
Martin Polreich0764b762017-11-20 14:08:30 +0100498 maas:
499 region:
500 database:
501 initial_data:
502 source: cfg01.local
503 host: 192.168.0.11
504
Petr Michalec8a0d52e2018-05-30 16:22:56 +0200505Test pillars
506==============
507
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300508Mind the PostgreSQL and rsyslog ``.sls``. Database and
509syslog service are required for MAAS to properly install
510and work.
Petr Michalec8a0d52e2018-05-30 16:22:56 +0200511
512* https://github.com/salt-formulas/salt-formula-rsyslog/tree/master/tests/pillar
513
514
azvyagintsev7605a662017-11-03 19:05:04 +0200515Module function's example:
516==========================
517
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300518Wait for status of selected machine's:
azvyagintsev7605a662017-11-03 19:05:04 +0200519
520.. code-block:: bash
521
522 > cat maas/machines/wait_for_machines_ready.sls
523
524 ...
525
526 wait_for_machines_ready:
527 module.run:
528 - name: maas.wait_for_machine_status
529 - kwargs:
530 machines:
531 - kvm01
532 - kvm02
533 timeout: 1200 # in seconds
534 req_status: "Ready"
535 - require:
536 - cmd: maas_login_admin
537 ...
538
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300539If module run w/\o any extra paremeters,
540``wait_for_machines_ready`` will wait for defined in salt
541machines. In this case, it is usefull to skip some machines:
azvyagintsev7605a662017-11-03 19:05:04 +0200542
543.. code-block:: bash
544
545 > cat maas/machines/wait_for_machines_deployed.sls
546
547 ...
548
549 wait_for_machines_ready:
550 module.run:
551 - name: maas.wait_for_machine_status
552 - kwargs:
553 timeout: 1200 # in seconds
Michael Polenchuke438bd32017-11-09 20:42:42 +0400554 req_status: "Deployed"
azvyagintsev7605a662017-11-03 19:05:04 +0200555 ignore_machines:
556 - kvm01 # in case it's broken or whatever
557 - require:
558 - cmd: maas_login_admin
559 ...
560
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300561List of available ``req_status`` defined in global variable:
azvyagintsev06b71e72017-11-08 17:11:07 +0200562
563.. code-block:: python
564
565 STATUS_NAME_DICT = dict([
566 (0, 'New'), (1, 'Commissioning'), (2, 'Failed commissioning'),
567 (3, 'Missing'), (4, 'Ready'), (5, 'Reserved'), (10, 'Allocated'),
568 (9, 'Deploying'), (6, 'Deployed'), (7, 'Retired'), (8, 'Broken'),
569 (11, 'Failed deployment'), (12, 'Releasing'),
570 (13, 'Releasing failed'), (14, 'Disk erasing'),
571 (15, 'Failed disk erasing')])
azvyagintsev7605a662017-11-03 19:05:04 +0200572
Ales Komarekef982692016-02-21 14:56:07 +0100573Read more
574=========
575
Roald Nefsc86d84a2017-10-12 21:19:50 +0200576* https://maas.io/
Filip Pytlounc07d2352017-02-02 13:02:03 +0100577
578Documentation and Bugs
579======================
580
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300581* http://salt-formulas.readthedocs.io/
582 Learn how to install and update salt-formulas
Filip Pytlounc07d2352017-02-02 13:02:03 +0100583
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300584* https://github.com/salt-formulas/salt-formula-maas/issues
585 In the unfortunate event that bugs are discovered, report the issue to the
586 appropriate issue tracker. Use the Github issue tracker for a specific salt
587 formula
Filip Pytlounc07d2352017-02-02 13:02:03 +0100588
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300589* https://launchpad.net/salt-formulas
590 For feature requests, bug reports, or blueprints affecting the entire
591 ecosystem, use the Launchpad salt-formulas project
Filip Pytlounc07d2352017-02-02 13:02:03 +0100592
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300593* https://launchpad.net/~salt-formulas-users
594 Join the salt-formulas-users team and subscribe to mailing list if required
Filip Pytlounc07d2352017-02-02 13:02:03 +0100595
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300596* https://github.com/salt-formulas/salt-formula-maas
597 Develop the salt-formulas projects in the master branch and then submit pull
598 requests against a specific formula
Filip Pytlounc07d2352017-02-02 13:02:03 +0100599
OlgaGusarenkoa8b77152018-07-30 23:33:35 +0300600* #salt-formulas @ irc.freenode.net
601 Use this IRC channel in case of any questions or feedback which is always
602 welcome
Filip Pytlounc07d2352017-02-02 13:02:03 +0100603