Compare commits
1004 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dc601d2ad8 | ||
![]() |
f343102322 | ||
![]() |
32aaf3ff00 | ||
![]() |
2bad598b70 | ||
![]() |
0e236b9035 | ||
![]() |
6b503a1302 | ||
![]() |
6b5c659496 | ||
![]() |
d9ceb6ca3d | ||
![]() |
ccffe42995 | ||
![]() |
7435faa4df | ||
![]() |
f0715dcaf9 | ||
![]() |
ca06940643 | ||
![]() |
6623e166ef | ||
![]() |
d0a185d051 | ||
![]() |
da94aaabca | ||
![]() |
0b42c09bc4 | ||
![]() |
b73933a978 | ||
![]() |
a75d5d0f91 | ||
![]() |
19fb9b1d52 | ||
![]() |
53b548c81b | ||
![]() |
966d469033 | ||
![]() |
c02b5a1250 | ||
![]() |
3ee47f573a | ||
![]() |
1b0212fb94 | ||
![]() |
f4e809b02e | ||
![]() |
9609dc76d0 | ||
![]() |
5f96da2870 | ||
![]() |
9b1c5ecc01 | ||
![]() |
878ea2e7e3 | ||
![]() |
e6c148c0f4 | ||
![]() |
2e32ee6be9 | ||
![]() |
b6461f0599 | ||
![]() |
d425200e96 | ||
![]() |
7579e9323c | ||
![]() |
55754aaaf0 | ||
![]() |
3d3251c597 | ||
![]() |
0172bedb85 | ||
![]() |
107a79c353 | ||
![]() |
da0ce9597a | ||
![]() |
2d44157e36 | ||
![]() |
0b92e926ee | ||
![]() |
532e836b9f | ||
![]() |
818621e32a | ||
![]() |
68d322c177 | ||
![]() |
dd4d99549d | ||
![]() |
4c6f3bbf9f | ||
![]() |
1b2dc9120c | ||
![]() |
49dcdf9061 | ||
![]() |
52563b7e8d | ||
![]() |
5308037fab | ||
![]() |
b89db36bee | ||
![]() |
c3ecd139eb | ||
![]() |
7c6d6f9438 | ||
![]() |
181b34291c | ||
![]() |
1b713632d1 | ||
![]() |
96cd33dea4 | ||
![]() |
376f0a3732 | ||
![]() |
e07726ef45 | ||
![]() |
8c3f290e61 | ||
![]() |
3a6dd12ab9 | ||
![]() |
5192273700 | ||
![]() |
d2e47ddadd | ||
![]() |
96d88c3c41 | ||
![]() |
e405273660 | ||
![]() |
98f857a865 | ||
![]() |
b78468a5f9 | ||
![]() |
cac713bdbe | ||
![]() |
97bb7ed715 | ||
![]() |
e804ce599d | ||
![]() |
a78c75da3d | ||
![]() |
b59771f09e | ||
![]() |
bd1b747d29 | ||
![]() |
fca54cd397 | ||
![]() |
ffbe69fb79 | ||
![]() |
9fc000d897 | ||
![]() |
d1ad69c2a8 | ||
![]() |
d412c1b1e1 | ||
![]() |
2533be9495 | ||
![]() |
cc9a7a2908 | ||
![]() |
bec84abc97 | ||
![]() |
7af47dc643 | ||
![]() |
778c209d80 | ||
![]() |
ad0ac30100 | ||
![]() |
d1f7202666 | ||
![]() |
435555ac25 | ||
![]() |
2181c0e173 | ||
![]() |
6e14503e17 | ||
![]() |
286ef164dc | ||
![]() |
ae3c0933c3 | ||
![]() |
6d61deaee5 | ||
![]() |
c35766fb83 | ||
![]() |
d93a6bba20 | ||
![]() |
8e98c2eb21 | ||
![]() |
d6ee54a2ba | ||
![]() |
e25b4f02b0 | ||
![]() |
719693e7d9 | ||
![]() |
b482962a1b | ||
![]() |
ca492527f3 | ||
![]() |
9badce8c4f | ||
![]() |
f8057aea5e | ||
![]() |
869b6f6930 | ||
![]() |
5196ebf436 | ||
![]() |
07093a38f1 | ||
![]() |
76d27fa498 | ||
![]() |
04b859d108 | ||
![]() |
24b748736e | ||
![]() |
5b29b3c6ff | ||
![]() |
62e5708587 | ||
![]() |
6d2e266aec | ||
![]() |
47105169df | ||
![]() |
773a8bc32a | ||
![]() |
eb5d7cca9a | ||
![]() |
55688a5012 | ||
![]() |
e98d6e9583 | ||
![]() |
ecea4eb4c4 | ||
![]() |
20ed8541d9 | ||
![]() |
981e497396 | ||
![]() |
674f3d10c7 | ||
![]() |
6065e8c1a2 | ||
![]() |
c1bd8b8a27 | ||
![]() |
e9dfde8f88 | ||
![]() |
c20885dabc | ||
![]() |
15a19838ad | ||
![]() |
62f77281a0 | ||
![]() |
e442bda05b | ||
![]() |
84022f9adf | ||
![]() |
29e0406146 | ||
![]() |
b54a5ae10f | ||
![]() |
65acca1e0c | ||
![]() |
795c1b540a | ||
![]() |
b355126422 | ||
![]() |
64c9af27e2 | ||
![]() |
189718f6c1 | ||
![]() |
b56dda974f | ||
![]() |
0fd2a5d129 | ||
![]() |
bf2f1f5939 | ||
![]() |
7c29b17ca6 | ||
![]() |
bee854b03b | ||
![]() |
068cf2da3f | ||
![]() |
1bd62d28a8 | ||
![]() |
da5efce177 | ||
![]() |
5182c37a0f | ||
![]() |
6e7acfb695 | ||
![]() |
40be72ba42 | ||
![]() |
c015ce05d3 | ||
![]() |
db1dc1b5bb | ||
![]() |
de72279095 | ||
![]() |
d5c754a94b | ||
![]() |
cd38055ba3 | ||
![]() |
c15b0e61a3 | ||
![]() |
9df50ca6b2 | ||
![]() |
6d7c599850 | ||
![]() |
097321f7d5 | ||
![]() |
85af378d98 | ||
![]() |
2f17431ec7 | ||
![]() |
be4de1c357 | ||
![]() |
295e98af05 | ||
![]() |
757ad9785e | ||
![]() |
d7eb1aa3cc | ||
![]() |
50e642f10d | ||
![]() |
e589974a53 | ||
![]() |
ffa4aa614b | ||
![]() |
bb30e6465e | ||
![]() |
7ce10b04ff | ||
![]() |
b083b78cc3 | ||
![]() |
275036cf3c | ||
![]() |
af2f3b7866 | ||
![]() |
8a17dd2a7b | ||
![]() |
ae299a4355 | ||
![]() |
25aa1d089a | ||
![]() |
8c845be0a2 | ||
![]() |
c4bdeb74c0 | ||
![]() |
661af04fe8 | ||
![]() |
8039a0b4c9 | ||
![]() |
369cd83197 | ||
![]() |
3a15d1fc0d | ||
![]() |
1d574ee63d | ||
![]() |
89f82a6cd7 | ||
![]() |
095c904b90 | ||
![]() |
9083f1a72b | ||
![]() |
174d5fbb03 | ||
![]() |
6e33ab9696 | ||
![]() |
d80c430a56 | ||
![]() |
f6f2e9317a | ||
![]() |
8a7032349d | ||
![]() |
4958b3bdff | ||
![]() |
4c73d9da3b | ||
![]() |
d895942b25 | ||
![]() |
482e26632b | ||
![]() |
7e1008fa74 | ||
![]() |
5257f91911 | ||
![]() |
368ab4ff9b | ||
![]() |
0837a1275c | ||
![]() |
0083ff0a12 | ||
![]() |
c54e7eb73b | ||
![]() |
d3d6a90f20 | ||
![]() |
af2cfe9093 | ||
![]() |
8060a92890 | ||
![]() |
4e87d80177 | ||
![]() |
15bd1287bf | ||
![]() |
eb44e5afbe | ||
![]() |
feaac00db9 | ||
![]() |
207632c32b | ||
![]() |
2801b3b7a9 | ||
![]() |
b1559f83a9 | ||
![]() |
1b14401f4a | ||
![]() |
2ef49582eb | ||
![]() |
ae80f13644 | ||
![]() |
b1766a7fd6 | ||
![]() |
06cb83b693 | ||
![]() |
e009588b2e | ||
![]() |
c01be0474c | ||
![]() |
e47e43c578 | ||
![]() |
5b0751e2e3 | ||
![]() |
23326bb72c | ||
![]() |
efe99dbdb2 | ||
![]() |
fd52e1afed | ||
![]() |
846c40bdb7 | ||
![]() |
696a7c9089 | ||
![]() |
26a578a267 | ||
![]() |
f71b56e99a | ||
![]() |
22b2e39335 | ||
![]() |
b6d3ffd601 | ||
![]() |
7e2f19b6cb | ||
![]() |
cc391fef1f | ||
![]() |
bbaf15cce9 | ||
![]() |
9679e8d470 | ||
![]() |
5e1d8c38aa | ||
![]() |
9259270d0c | ||
![]() |
a39e09c2d5 | ||
![]() |
57a6577c0d | ||
![]() |
2c2775f299 | ||
![]() |
273f40246d | ||
![]() |
cb3d6100e0 | ||
![]() |
32e167c179 | ||
![]() |
c6c516ed9f | ||
![]() |
c0b2f8ea11 | ||
![]() |
0aa98ad322 | ||
![]() |
982855c02d | ||
![]() |
81dea1b7f3 | ||
![]() |
e2518d4322 | ||
![]() |
91b46e5a4c | ||
![]() |
11ad06e781 | ||
![]() |
73a62df59e | ||
![]() |
99037bb0e5 | ||
![]() |
5895b4f1c4 | ||
![]() |
3e66747328 | ||
![]() |
75c6fa2455 | ||
![]() |
2cfbc95445 | ||
![]() |
a9967b1afa | ||
![]() |
abe19919f1 | ||
![]() |
d76f364b81 | ||
![]() |
056c7928e1 | ||
![]() |
ea0802157a | ||
![]() |
d55380d2d4 | ||
![]() |
9edb2d544f | ||
![]() |
a09aa80fe9 | ||
![]() |
dcad1a24c3 | ||
![]() |
9037930ade | ||
![]() |
01f9c49cd0 | ||
![]() |
97c14ebe74 | ||
![]() |
2ca5b80520 | ||
![]() |
256f1edff2 | ||
![]() |
a09e5f225b | ||
![]() |
960d0719c4 | ||
![]() |
3d31e20518 | ||
![]() |
06730dbb45 | ||
![]() |
1eed1d2c56 | ||
![]() |
9ff4e9f95a | ||
![]() |
b15cfb14ad | ||
![]() |
aad151de90 | ||
![]() |
ca8ddca40e | ||
![]() |
3579842ada | ||
![]() |
773bba8680 | ||
![]() |
984e6bd413 | ||
![]() |
6e5cdfc2a6 | ||
![]() |
d136bbb5a1 | ||
![]() |
69d738882f | ||
![]() |
f72c62d2ad | ||
![]() |
757cdd7134 | ||
![]() |
72c7e787ec | ||
![]() |
161494719e | ||
![]() |
ba98f7c013 | ||
![]() |
4def5c4002 | ||
![]() |
61d807a87b | ||
![]() |
00b03117df | ||
![]() |
03dbc8db99 | ||
![]() |
f9eccadd36 | ||
![]() |
e8f70dc93c | ||
![]() |
89772f9027 | ||
![]() |
78d3aabd53 | ||
![]() |
7179c30bbf | ||
![]() |
3a91285ae3 | ||
![]() |
f069db857e | ||
![]() |
214f85247f | ||
![]() |
ec82d414d3 | ||
![]() |
1d14811509 | ||
![]() |
6330a303c7 | ||
![]() |
60bba8f8af | ||
![]() |
9a5792ab3f | ||
![]() |
6fd7056df5 | ||
![]() |
21c4654b2d | ||
![]() |
629a403870 | ||
![]() |
534bfe3c19 | ||
![]() |
c607e8db9e | ||
![]() |
fd8b296704 | ||
![]() |
1f19491026 | ||
![]() |
371cd6947e | ||
![]() |
708dbf9f80 | ||
![]() |
e24feee41a | ||
![]() |
deee58f798 | ||
![]() |
f436fad9ef | ||
![]() |
d2fe413a19 | ||
![]() |
67de624015 | ||
![]() |
f4a6a235e2 | ||
![]() |
6d957e8a99 | ||
![]() |
e25785c539 | ||
![]() |
3c051b5d19 | ||
![]() |
d389b6df65 | ||
![]() |
e80ace340d | ||
![]() |
477932520d | ||
![]() |
69a69c4969 | ||
![]() |
757c9646ae | ||
![]() |
44857345c7 | ||
![]() |
00d4ef3f0c | ||
![]() |
cf042efa84 | ||
![]() |
533b50d60f | ||
![]() |
9bf8cf38f8 | ||
![]() |
e13fcdbffa | ||
![]() |
acabdbdb34 | ||
![]() |
51abcf64bf | ||
![]() |
f46699d1f2 | ||
![]() |
efb8d0f25c | ||
![]() |
f82db3eb77 | ||
![]() |
e1e1f80f59 | ||
![]() |
78c37329b4 | ||
![]() |
ec8fa91e05 | ||
![]() |
e0c258c3d7 | ||
![]() |
295ee5a644 | ||
![]() |
06cb833672 | ||
![]() |
02691ea927 | ||
![]() |
eda163c0f7 | ||
![]() |
5c810c97a3 | ||
![]() |
4c0e3f6034 | ||
![]() |
d6cb019394 | ||
![]() |
a242f2310b | ||
![]() |
dcd3461cda | ||
![]() |
bf91a62e3b | ||
![]() |
c2ccaa2266 | ||
![]() |
445889b3ee | ||
![]() |
5eb79ccd6c | ||
![]() |
f2a6901f3f | ||
![]() |
bb15543608 | ||
![]() |
981578f540 | ||
![]() |
c6c6c9c678 | ||
![]() |
8659e09ccb | ||
![]() |
9a2f9b8af3 | ||
![]() |
8aa0c51a71 | ||
![]() |
382bc865d3 | ||
![]() |
7ec608cc1e | ||
![]() |
dd26a7d74f | ||
![]() |
40d6dc17fe | ||
![]() |
e46e9cec2c | ||
![]() |
ed29f3c468 | ||
![]() |
c1747083b4 | ||
![]() |
d1b9572df1 | ||
![]() |
bb9ca145b8 | ||
![]() |
435a067b5d | ||
![]() |
fee12df179 | ||
![]() |
e34f713c9e | ||
![]() |
2d6bb88c73 | ||
![]() |
9e77030272 | ||
![]() |
d13b385744 | ||
![]() |
300a1988aa | ||
![]() |
d0f95da522 | ||
![]() |
0cc90f4455 | ||
![]() |
e361ddd231 | ||
![]() |
58245fa62c | ||
![]() |
b405c2cce8 | ||
![]() |
3b05c31fd3 | ||
![]() |
aecb7d60e3 | ||
![]() |
7c224d76a1 | ||
![]() |
4a451dd9f7 | ||
![]() |
e9538db55e | ||
![]() |
f8b805db85 | ||
![]() |
7ccf04124f | ||
![]() |
ab98a8b09d | ||
![]() |
a966811863 | ||
![]() |
8fedbd9b92 | ||
![]() |
eb55df526f | ||
![]() |
2ee94c1116 | ||
![]() |
71252cd220 | ||
![]() |
47a204b73f | ||
![]() |
27c2712af1 | ||
![]() |
7a098d5ccc | ||
![]() |
fdb120086a | ||
![]() |
6ad93edac4 | ||
![]() |
47ddd8e1af | ||
![]() |
f0c6b0c4fc | ||
![]() |
862926c583 | ||
![]() |
e0c99d63b8 | ||
![]() |
1cec01890b | ||
![]() |
5777e4a8ae | ||
![]() |
d3f3a3c73b | ||
![]() |
998c8216ba | ||
![]() |
aae1a9af55 | ||
![]() |
5e5c122308 | ||
![]() |
dba97b976b | ||
![]() |
b2737b65a6 | ||
![]() |
69ef9452ff | ||
![]() |
c55631aea8 | ||
![]() |
e4ce8b240d | ||
![]() |
195aebd12b | ||
![]() |
2e4686f8e6 | ||
![]() |
75fdf6cddd | ||
![]() |
05bf429cba | ||
![]() |
99fa801597 | ||
![]() |
c3623b46bd | ||
![]() |
fe231e8d91 | ||
![]() |
d0a579d375 | ||
![]() |
48760f85d4 | ||
![]() |
6cab78c426 | ||
![]() |
9b5bab7df2 | ||
![]() |
88d524b952 | ||
![]() |
b316c4dd0d | ||
![]() |
36e167c702 | ||
![]() |
bc381cc73e | ||
![]() |
40ac990971 | ||
![]() |
c7bd6dc586 | ||
![]() |
0e669e82ec | ||
![]() |
435ce1451b | ||
![]() |
669f6c96c6 | ||
![]() |
71cee46b77 | ||
![]() |
b4d429be35 | ||
![]() |
3433d4d76d | ||
![]() |
3110ce9954 | ||
![]() |
7db7b5fa27 | ||
![]() |
d710a692c9 | ||
![]() |
0a323c07bc | ||
![]() |
a2b1d39edd | ||
![]() |
c31337ee74 | ||
![]() |
1c2b68b884 | ||
![]() |
817c23d293 | ||
![]() |
9550abf245 | ||
![]() |
43fb22bcaf | ||
![]() |
84e02fea91 | ||
![]() |
cb11824f70 | ||
![]() |
6113f340a6 | ||
![]() |
cdef177a64 | ||
![]() |
67452c3289 | ||
![]() |
f90f330230 | ||
![]() |
a74afd54bf | ||
![]() |
55b9a77434 | ||
![]() |
c23f636926 | ||
![]() |
6ac4eb3abf | ||
![]() |
8d0f0dd09d | ||
![]() |
5836e55603 | ||
![]() |
53a8eaf5b3 | ||
![]() |
3987ea0854 | ||
![]() |
27dba4b578 | ||
![]() |
12122dbf3d | ||
![]() |
9d84541646 | ||
![]() |
47b979e026 | ||
![]() |
665d3c64ee | ||
![]() |
08c275cf7a | ||
![]() |
a2c685bc3f | ||
![]() |
cf415bbf2b | ||
![]() |
30f1682c74 | ||
![]() |
a4ae7b817c | ||
![]() |
631c382fac | ||
![]() |
f3044799f3 | ||
![]() |
8074be48ec | ||
![]() |
bb3f78b7c6 | ||
![]() |
e6e6068127 | ||
![]() |
0806bf1677 | ||
![]() |
14b200bbba | ||
![]() |
298c56005b | ||
![]() |
51841010fa | ||
![]() |
355bb60f88 | ||
![]() |
73532b771a | ||
![]() |
fc577f6773 | ||
![]() |
690c7ee48f | ||
![]() |
566ede9f1e | ||
![]() |
bb54b1f836 | ||
![]() |
771442acd4 | ||
![]() |
35b3afaf63 | ||
![]() |
e6a85b7606 | ||
![]() |
819d49bdc9 | ||
![]() |
11eff2b14a | ||
![]() |
3fa3dc60a0 | ||
![]() |
2f73fa933f | ||
![]() |
87a654c36c | ||
![]() |
f8c0796ad4 | ||
![]() |
47483432a8 | ||
![]() |
c4d4d696a5 | ||
![]() |
513af170ca | ||
![]() |
3d1a3532c8 | ||
![]() |
3cc146daba | ||
![]() |
b9a16174f1 | ||
![]() |
8aa98d5569 | ||
![]() |
fcd4f1d54f | ||
![]() |
bf49ecaafd | ||
![]() |
03954463dc | ||
![]() |
74df43335e | ||
![]() |
2032651394 | ||
![]() |
1d00bbe97c | ||
![]() |
1e14200cda | ||
![]() |
39ecf96c67 | ||
![]() |
3d2e3e7ae5 | ||
![]() |
3047ab006f | ||
![]() |
33a3b48bb5 | ||
![]() |
2d84414f76 | ||
![]() |
ae25ed44ce | ||
![]() |
4c70e44527 | ||
![]() |
c3ff407cc9 | ||
![]() |
13e56f514d | ||
![]() |
2f367438a0 | ||
![]() |
700fa7921e | ||
![]() |
ce4ead51b5 | ||
![]() |
dc7eb43fc5 | ||
![]() |
562d51ac13 | ||
![]() |
40cd7a974e | ||
![]() |
042640b2df | ||
![]() |
800ed76ce6 | ||
![]() |
32196f0dd6 | ||
![]() |
3fd4b1b0a7 | ||
![]() |
5a1bf92dd1 | ||
![]() |
bdf176ca43 | ||
![]() |
cdc2e20046 | ||
![]() |
c7dcad203c | ||
![]() |
e9e0d03cc3 | ||
![]() |
327a771a19 | ||
![]() |
0b3252df72 | ||
![]() |
6f269e7869 | ||
![]() |
4264b769e8 | ||
![]() |
24f9f839b9 | ||
![]() |
c0efebc9f3 | ||
![]() |
5e48773198 | ||
![]() |
95a5b0cac4 | ||
![]() |
42921d4a1f | ||
![]() |
52ada02207 | ||
![]() |
452dac32c9 | ||
![]() |
7c06cacc7e | ||
![]() |
841ae58a2f | ||
![]() |
dfb496f340 | ||
![]() |
8dca60b848 | ||
![]() |
b32087dbf6 | ||
![]() |
819a4b141d | ||
![]() |
4b813f543c | ||
![]() |
a09536cbbe | ||
![]() |
082873b8e4 | ||
![]() |
33a101cd1d | ||
![]() |
190850d393 | ||
![]() |
2eba295342 | ||
![]() |
86ffc09726 | ||
![]() |
a543607bdd | ||
![]() |
4ada2e44f0 | ||
![]() |
b2d0dbc2e7 | ||
![]() |
2bbd727b41 | ||
![]() |
077374c7c6 | ||
![]() |
20d8beea6d | ||
![]() |
9deef32e75 | ||
![]() |
6f0c59c97f | ||
![]() |
eb63491dc1 | ||
![]() |
19d21ddcfa | ||
![]() |
dfcd06404e | ||
![]() |
93f6488941 | ||
![]() |
3028ca87db | ||
![]() |
3aa58b926f | ||
![]() |
343534d2ec | ||
![]() |
6e59008b91 | ||
![]() |
ef09110e94 | ||
![]() |
0ba1d6ae57 | ||
![]() |
4e0ad3a89c | ||
![]() |
559ba2cdf0 | ||
![]() |
30427c1bf9 | ||
![]() |
a198987b19 | ||
![]() |
1e7ae5e1c8 | ||
![]() |
a0db8af3a5 | ||
![]() |
ed79d1aa3b | ||
![]() |
30ab022102 | ||
![]() |
e6f76b868e | ||
![]() |
7afaf61150 | ||
![]() |
82ec8c1eab | ||
![]() |
5d3a3f367c | ||
![]() |
624d602345 | ||
![]() |
f4ddf1cd2e | ||
![]() |
c4d0e56052 | ||
![]() |
c5185847d9 | ||
![]() |
2705688717 | ||
![]() |
cf17d34de4 | ||
![]() |
87e15c5c8a | ||
![]() |
3e43a4eae0 | ||
![]() |
f3b13826b1 | ||
![]() |
40bbcd79d4 | ||
![]() |
def91ae46b | ||
![]() |
8d76264d99 | ||
![]() |
d8e9d4b7ae | ||
![]() |
66edc2e080 | ||
![]() |
d8c965a294 | ||
![]() |
99e0a341a1 | ||
![]() |
4d37eb18bf | ||
![]() |
07573fcb7a | ||
![]() |
e3525093f0 | ||
![]() |
d57838d056 | ||
![]() |
bef739cc06 | ||
![]() |
deeba27652 | ||
![]() |
c2a3a784d8 | ||
![]() |
5557a85e0b | ||
![]() |
911b419f25 | ||
![]() |
77c841daa2 | ||
![]() |
44e546e979 | ||
![]() |
e8f97f4e5d | ||
![]() |
f51789dfe5 | ||
![]() |
cab55217b4 | ||
![]() |
107616137c | ||
![]() |
f4a4eed225 | ||
![]() |
bbe290c906 | ||
![]() |
c7fcee840c | ||
![]() |
5ca09eaaf6 | ||
![]() |
da7427ee53 | ||
![]() |
031b021fae | ||
![]() |
3f692e024a | ||
![]() |
62fe33ce64 | ||
![]() |
cdd05cd894 | ||
![]() |
82a1bc5993 | ||
![]() |
a522c44462 | ||
![]() |
9a4284c545 | ||
![]() |
6baa9203b7 | ||
![]() |
dd30e9384e | ||
![]() |
aa014f1118 | ||
![]() |
62c65dcf48 | ||
![]() |
6ec09b5972 | ||
![]() |
141c927011 | ||
![]() |
adbdb46a71 | ||
![]() |
9c625d05b4 | ||
![]() |
1eb6e680f9 | ||
![]() |
a830531ca9 | ||
![]() |
06955e5e54 | ||
![]() |
0bc2f2b309 | ||
![]() |
b7d0d3fd2c | ||
![]() |
276af30347 | ||
![]() |
fb65ceaa11 | ||
![]() |
bf90566b86 | ||
![]() |
f40d33642c | ||
![]() |
664d1069b8 | ||
![]() |
d5a7e742a2 | ||
![]() |
eb6b615ae3 | ||
![]() |
497661a7aa | ||
![]() |
5e0b259c1e | ||
![]() |
eaa4dedbd4 | ||
![]() |
8d63bf55f2 | ||
![]() |
3ecb5bf13c | ||
![]() |
e2cb1d3cd2 | ||
![]() |
9ee8a53341 | ||
![]() |
431c9e062e | ||
![]() |
878ca149f9 | ||
![]() |
665947ee0e | ||
![]() |
a9d3c7dc30 | ||
![]() |
fb2d3928a9 | ||
![]() |
96afa1f2cd | ||
![]() |
e32966e242 | ||
![]() |
150b11b528 | ||
![]() |
a0ddf338d3 | ||
![]() |
d65c97c307 | ||
![]() |
ebf66eab0b | ||
![]() |
a165449f64 | ||
![]() |
063a26bb31 | ||
![]() |
329bfd1f6e | ||
![]() |
25a6da8b00 | ||
![]() |
66f805be99 | ||
![]() |
e70d967524 | ||
![]() |
f0587e9875 | ||
![]() |
15221652a1 | ||
![]() |
c370e76a95 | ||
![]() |
20eba75a88 | ||
![]() |
3226d364a8 | ||
![]() |
c008240f61 | ||
![]() |
24645b6398 | ||
![]() |
db43ecd3a5 | ||
![]() |
8a9f0ff064 | ||
![]() |
f4775c5bf6 | ||
![]() |
3b5aa1adc5 | ||
![]() |
079f82b656 | ||
![]() |
467e0a67f7 | ||
![]() |
4c228bd73e | ||
![]() |
4321812b10 | ||
![]() |
bfd9232a64 | ||
![]() |
373e9b1e09 | ||
![]() |
cfe7e1086d | ||
![]() |
8e632a3be6 | ||
![]() |
6bd1ba4c6e | ||
![]() |
5b72658397 | ||
![]() |
2633db1ff1 | ||
![]() |
ebaa5f71de | ||
![]() |
ec38ba616c | ||
![]() |
49b61b78a2 | ||
![]() |
22350913fd | ||
![]() |
cb17e827ba | ||
![]() |
5481663a4b | ||
![]() |
03f800dbe4 | ||
![]() |
71e54587eb | ||
![]() |
85f9e9a803 | ||
![]() |
7cf420ddb5 | ||
![]() |
0a1a441dc9 | ||
![]() |
62b49e2a91 | ||
![]() |
9072d1d114 | ||
![]() |
0016d17db4 | ||
![]() |
363738bfca | ||
![]() |
e3c66ca15d | ||
![]() |
65cb9c7f0e | ||
![]() |
dceafac08d | ||
![]() |
7305ee2a26 | ||
![]() |
bd27b46fdc | ||
![]() |
b6f52f38d3 | ||
![]() |
e866f8430d | ||
![]() |
0bb3ff10c1 | ||
![]() |
df14b6229d | ||
![]() |
7b46e0c27a | ||
![]() |
0419cad12a | ||
![]() |
9a26ecdd6c | ||
![]() |
1f4ae04892 | ||
![]() |
4832632b2c | ||
![]() |
1eb58101ba | ||
![]() |
1043acb836 | ||
![]() |
4a706b9f6d | ||
![]() |
32a23622d0 | ||
![]() |
de3b6a2a42 | ||
![]() |
26a919e903 | ||
![]() |
f303bd2b2f | ||
![]() |
40c33d528f | ||
![]() |
e0f9c4b8cc | ||
![]() |
aac920d615 | ||
![]() |
191572bc6b | ||
![]() |
e11e21b525 | ||
![]() |
45c260955b | ||
![]() |
7a63c76cec | ||
![]() |
aae3e0fbec | ||
![]() |
bd01573941 | ||
![]() |
742b875490 | ||
![]() |
5cf7ca9d66 | ||
![]() |
18b79a7eda | ||
![]() |
ffa78e6b67 | ||
![]() |
2978cf215b | ||
![]() |
b9b4d29725 | ||
![]() |
8e22a0f19d | ||
![]() |
a8f6580471 | ||
![]() |
88309de25b | ||
![]() |
b0bd81d8d2 | ||
![]() |
dbd45b1065 | ||
![]() |
5d0bc04169 | ||
![]() |
1d9cfd0aec | ||
![]() |
248ca2b267 | ||
![]() |
56b0d864b2 | ||
![]() |
d142476be6 | ||
![]() |
2d9a6c5bb6 | ||
![]() |
dc8d94b026 | ||
![]() |
9784b3a2d5 | ||
![]() |
3fcccfc376 | ||
![]() |
c644dcdafa | ||
![]() |
6643221681 | ||
![]() |
a2399f96b5 | ||
![]() |
b562c8a2fc | ||
![]() |
d0af975d18 | ||
![]() |
311ed006e3 | ||
![]() |
64aa77f9f8 | ||
![]() |
78da765a23 | ||
![]() |
23a2e2cb73 | ||
![]() |
7c4e2dd434 | ||
![]() |
9adb4bf7d7 | ||
![]() |
4950e13207 | ||
![]() |
1ba0df3660 | ||
![]() |
ac98d2cfbe | ||
![]() |
f4492d47ea | ||
![]() |
744613923a | ||
![]() |
e4a7a6e1f3 | ||
![]() |
742e4c7a5d | ||
![]() |
baa2ce42c7 | ||
![]() |
09f7f93885 | ||
![]() |
1c548de790 | ||
![]() |
e7300d5f62 | ||
![]() |
613ac38924 | ||
![]() |
62f0de1b76 | ||
![]() |
679c91f666 | ||
![]() |
8b536b44ef | ||
![]() |
3c2d766490 | ||
![]() |
3770c0b277 | ||
![]() |
af4a2cbdd5 | ||
![]() |
c25d0c2f2f | ||
![]() |
198b9bdd2f | ||
![]() |
c70498ea85 | ||
![]() |
7b381c92db | ||
![]() |
9b007da5d9 | ||
![]() |
2402916336 | ||
![]() |
ae358385cc | ||
![]() |
970894aa73 | ||
![]() |
112c5b5192 | ||
![]() |
ece38850c7 | ||
![]() |
85d82f8c72 | ||
![]() |
226c83b637 | ||
![]() |
7384552428 | ||
![]() |
7cb6c914d4 | ||
![]() |
30ed335f30 | ||
![]() |
be9fb6ff53 | ||
![]() |
a69ec0bec0 | ||
![]() |
ad42d646d8 | ||
![]() |
5fca0727aa | ||
![]() |
f8c986b4dc | ||
![]() |
f11c1958b6 | ||
![]() |
b49da51665 | ||
![]() |
95c7436033 | ||
![]() |
dbcd0a7415 | ||
![]() |
4dab10866f | ||
![]() |
48a25a1440 | ||
![]() |
f42bebeab3 | ||
![]() |
78c96d168b | ||
![]() |
057a0330ca | ||
![]() |
7aa93d44bc | ||
![]() |
91b12bb8b9 | ||
![]() |
a4f39d340c | ||
![]() |
b16eefa5ca | ||
![]() |
3de3a1242f | ||
![]() |
70ef1e48e5 | ||
![]() |
442a99009d | ||
![]() |
53417992c7 | ||
![]() |
fa746473ff | ||
![]() |
f851ebafdc | ||
![]() |
1d2ae575e2 | ||
![]() |
71b05cfc0e | ||
![]() |
3adc707d42 | ||
![]() |
0943dd0568 | ||
![]() |
e6cbe158b7 | ||
![]() |
8e503110f9 | ||
![]() |
a1d13658a3 | ||
![]() |
5808615b75 | ||
![]() |
2b9b074b9c | ||
![]() |
54355dcdc3 | ||
![]() |
7cfe24f0ff | ||
![]() |
e3d2f4db37 | ||
![]() |
32a9580ffb | ||
![]() |
fa0ee0bb58 | ||
![]() |
01c7abe31b | ||
![]() |
22cf568a9b | ||
![]() |
5219ad380e | ||
![]() |
2f2199f204 | ||
![]() |
7f015dd153 | ||
![]() |
b63853c77b | ||
![]() |
56b2b6deed | ||
![]() |
8559028099 | ||
![]() |
ac8b38f3dd | ||
![]() |
5c674c6100 | ||
![]() |
9fcd0f3fb2 | ||
![]() |
a8ba805c8b | ||
![]() |
a609b64fd1 | ||
![]() |
646c7f32a8 | ||
![]() |
71e22e1e3b | ||
![]() |
8d25835eab | ||
![]() |
0b18cf4739 | ||
![]() |
44955e3422 | ||
![]() |
e814b48966 | ||
![]() |
9a52e9aa55 | ||
![]() |
cb79cbc272 | ||
![]() |
fff24e257b | ||
![]() |
a2957c998d | ||
![]() |
37d13dbb19 | ||
![]() |
b5f97979db | ||
![]() |
bcd263ed5f | ||
![]() |
7c4abc8e7e | ||
![]() |
9d04bc247e | ||
![]() |
fdbb100df1 | ||
![]() |
2713f07c82 | ||
![]() |
ae58331e4e | ||
![]() |
5c6087899a | ||
![]() |
44679c877a | ||
![]() |
7a356afd12 | ||
![]() |
be2da81a47 | ||
![]() |
b52527ceb6 | ||
![]() |
1631260cd2 | ||
![]() |
00396b82eb | ||
![]() |
4f13164bde | ||
![]() |
8011d6b516 | ||
![]() |
9358a1cae3 | ||
![]() |
ce37d06206 | ||
![]() |
c272d2d0ea | ||
![]() |
a78a330a33 | ||
![]() |
c2ded7bfd4 | ||
![]() |
bb5e5893e7 | ||
![]() |
7973eb855d | ||
![]() |
a6a26c372f | ||
![]() |
3733966dfd | ||
![]() |
cc25a40362 | ||
![]() |
790fbc87d3 | ||
![]() |
5173414efe | ||
![]() |
a9b0bd794d | ||
![]() |
6a6b30681f | ||
![]() |
725e6e13f2 | ||
![]() |
40a0e273fa | ||
![]() |
a420a370b0 | ||
![]() |
a314cc5351 | ||
![]() |
a6baf22a68 | ||
![]() |
7cdb4d59e4 | ||
![]() |
4412fb6f00 | ||
![]() |
0c5c67244a | ||
![]() |
ca36cf3e5d | ||
![]() |
40caddf47c | ||
![]() |
38e62ab0ce | ||
![]() |
505f4238b5 | ||
![]() |
2fa2a3f754 | ||
![]() |
76decf7a31 | ||
![]() |
d42dcb167c | ||
![]() |
22055a70a0 | ||
![]() |
e3985c1024 | ||
![]() |
4223ffbb40 | ||
![]() |
20a846a0b4 | ||
![]() |
d814115559 | ||
![]() |
96075ca1ef | ||
![]() |
79449910c3 | ||
![]() |
d0bba2ea8d | ||
![]() |
f6733657bf | ||
![]() |
3cb80cebe4 | ||
![]() |
14b6c7c279 | ||
![]() |
2c79eb6a23 | ||
![]() |
abc1bd8bbe | ||
![]() |
bd3972caab | ||
![]() |
92dacc76d9 | ||
![]() |
8a9d0949f8 | ||
![]() |
8ec6339e99 | ||
![]() |
5e52a3836b | ||
![]() |
eeb9d1e303 | ||
![]() |
1ddd8fb226 | ||
![]() |
da2472a399 | ||
![]() |
c06f51bda0 | ||
![]() |
e120e52351 | ||
![]() |
d18741890d | ||
![]() |
8e5492e98f | ||
![]() |
20d7d8dd94 | ||
![]() |
54e5c9f9b7 | ||
![]() |
f0e2d41e89 | ||
![]() |
9f3049620f | ||
![]() |
f13f873692 | ||
![]() |
8e9fd86c2a | ||
![]() |
a7b8413823 | ||
![]() |
1bb60e6a06 | ||
![]() |
8d4c15722d | ||
![]() |
5ebe66c2fc | ||
![]() |
8a6ba16abd | ||
![]() |
b1b458ab50 | ||
![]() |
b4528513d2 | ||
![]() |
ef2d32ca99 | ||
![]() |
d699082efb | ||
![]() |
cefacf9966 | ||
![]() |
e932a95d27 | ||
![]() |
f21032933d | ||
![]() |
96f19bed11 | ||
![]() |
023dcf5201 | ||
![]() |
c5d39a4631 | ||
![]() |
25ab251ac1 | ||
![]() |
d05f030d03 | ||
![]() |
00d15e09c5 | ||
![]() |
e4e2b20dd5 | ||
![]() |
713cbfc0a7 | ||
![]() |
cc6b61aa3a | ||
![]() |
efb8caa590 | ||
![]() |
ef757830e6 | ||
![]() |
359f0633f8 | ||
![]() |
70eb0555e3 | ||
![]() |
9a88dd7a8c | ||
![]() |
a862be723e | ||
![]() |
91d4d99a37 | ||
![]() |
24455a9336 | ||
![]() |
74170d8203 | ||
![]() |
8d795d595b | ||
![]() |
a1f201a7b0 | ||
![]() |
ac6f9729b0 | ||
![]() |
452680862c | ||
![]() |
e4058efbd2 | ||
![]() |
a935d8bf5e | ||
![]() |
9dd87817cf | ||
![]() |
708a45ea5a | ||
![]() |
3328af0982 | ||
![]() |
7d4ee2d346 | ||
![]() |
378f92b8d7 | ||
![]() |
0b8f7162f4 | ||
![]() |
f607c17060 | ||
![]() |
5f390fa368 | ||
![]() |
415e3caa97 | ||
![]() |
fa82feccc7 | ||
![]() |
84e8f362fc | ||
![]() |
3ba339f80e | ||
![]() |
d5b9799f8d | ||
![]() |
3d6183de4b | ||
![]() |
8b65cc21c0 | ||
![]() |
e8d6b4f92c | ||
![]() |
eaef681e00 | ||
![]() |
3b18e78dcd | ||
![]() |
99ae52231c | ||
![]() |
ce248d03ef | ||
![]() |
649503b5e1 | ||
![]() |
e6612d2970 | ||
![]() |
1c4804a006 | ||
![]() |
dd927286fd | ||
![]() |
8004c17619 | ||
![]() |
9a78fe6869 | ||
![]() |
69b2da1921 |
26
.devcontainer/devcontainer.json
Normal file
26
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"image": "mcr.microsoft.com/azterraform:latest",
|
||||||
|
|
||||||
|
"runArgs": [
|
||||||
|
"--cap-add=SYS_PTRACE",
|
||||||
|
"--security-opt",
|
||||||
|
"seccomp=unconfined",
|
||||||
|
"--init",
|
||||||
|
"--network=host"
|
||||||
|
],
|
||||||
|
|
||||||
|
"mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ],
|
||||||
|
"customizations": {
|
||||||
|
"vscode": {
|
||||||
|
"settings": {
|
||||||
|
"go.toolsManagement.checkForUpdates": "local",
|
||||||
|
"go.useLanguageServer": true,
|
||||||
|
"go.goroot": "/usr/local/go"
|
||||||
|
},
|
||||||
|
"extensions": [
|
||||||
|
"hashicorp.terraform",
|
||||||
|
"golang.Go"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
.github/CODEOWNERS
vendored
Normal file
2
.github/CODEOWNERS
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.github/workflows/ @lonegunmanb @TomArcherMsft
|
||||||
|
.github/CODEOWNERS @lonegunmanb @TomArcherMsft
|
48
.github/ISSUE_TEMPLATE/1_feature.yml
vendored
Normal file
48
.github/ISSUE_TEMPLATE/1_feature.yml
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
name: 'Azure Terraform feature Ask'
|
||||||
|
description: Request a feature for Azure Terraform Verified Modules, Examples, AzAPI provider, Azure Terrafy, etc.
|
||||||
|
title: "<title>"
|
||||||
|
labels: [enhancement]
|
||||||
|
body:
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Is there an existing issue for this?
|
||||||
|
description: Please search to see if an issue already exists for the bug you encountered.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Where would you like this feature added?
|
||||||
|
description: Let us know what product or area you would like to see this feature added to.
|
||||||
|
multiple: false
|
||||||
|
options:
|
||||||
|
- "Verified Modules"
|
||||||
|
- "AzAPI Provider"
|
||||||
|
- "Azure Terrafy"
|
||||||
|
- "Examples (Quickstart, Samples, etc.)"
|
||||||
|
- "Other/Unknown"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Is this feature ask due to a problem that you are encountering?
|
||||||
|
description: If so, please provide a clear and concise description of what the problem is.
|
||||||
|
placeholder: I'm always frustrated when [...]
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Describe potential solutions.
|
||||||
|
description: Please provide a clear and concise description of what you want to happen.
|
||||||
|
placeholder: Add a way for me to [...]
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Anything that will give us more context about the feature you are requesting!
|
||||||
|
|
||||||
|
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||||
|
validations:
|
||||||
|
required: false
|
58
.github/ISSUE_TEMPLATE/2_example_bug.yml
vendored
Normal file
58
.github/ISSUE_TEMPLATE/2_example_bug.yml
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
name: 'Azure Terraform example Bug Report'
|
||||||
|
description: File a bug/issue for a configuration example (Quickstart, samples, etc.)
|
||||||
|
title: "<title>"
|
||||||
|
labels: [bug, example]
|
||||||
|
body:
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Is there an existing issue for this?
|
||||||
|
description: Please search to see if an issue already exists for the bug you encountered.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Example Name
|
||||||
|
description: The name of the example where you found the bug.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Terraform Version
|
||||||
|
description: |
|
||||||
|
What version of Terraform were you using when you encountered this issue?
|
||||||
|
|
||||||
|
`terraform --version
|
||||||
|
placeholder: 1.0.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Current Behavior
|
||||||
|
description: A concise description of what you're experiencing.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: A concise description of what you expected to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps To Reproduce
|
||||||
|
description: Steps to reproduce the behavior.
|
||||||
|
placeholder: |
|
||||||
|
1. Run '...'
|
||||||
|
2. See error...
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||||
|
|
||||||
|
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||||
|
validations:
|
||||||
|
required: false
|
73
.github/ISSUE_TEMPLATE/3_module_bug.yml
vendored
Normal file
73
.github/ISSUE_TEMPLATE/3_module_bug.yml
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
name: 'Azure Verified Module Bug Report'
|
||||||
|
description: File a bug/issue for a verified module
|
||||||
|
title: "<title>"
|
||||||
|
labels: [bug, module]
|
||||||
|
body:
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Is there an existing issue for this?
|
||||||
|
description: Please search to see if an issue already exists for the bug you encountered.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Module Name
|
||||||
|
description: The name of the module where you found the bug.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Terraform Version
|
||||||
|
description: |
|
||||||
|
What version of Terraform were you using when you encountered this issue?
|
||||||
|
|
||||||
|
`terraform --version
|
||||||
|
placeholder: 1.0.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Module Version
|
||||||
|
description: |
|
||||||
|
What version of the Azure module were you using when you encountered this issue?
|
||||||
|
placeholder: 0.1.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Current Behavior
|
||||||
|
description: A concise description of what you're experiencing.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: A concise description of what you expected to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Terraform configuration
|
||||||
|
description: Please provide the minimum Terraform configuration that is resulting in the bug / issue.
|
||||||
|
render: terraform
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps To Reproduce
|
||||||
|
description: Steps to reproduce the behavior.
|
||||||
|
placeholder: |
|
||||||
|
1. Run '...'
|
||||||
|
2. See error...
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||||
|
|
||||||
|
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||||
|
validations:
|
||||||
|
required: false
|
71
.github/ISSUE_TEMPLATE/4_azapi_bug.yml
vendored
Normal file
71
.github/ISSUE_TEMPLATE/4_azapi_bug.yml
vendored
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
name: 'AzAPI Provider Bug Report'
|
||||||
|
description: File a bug/issue for the AzAPI Terraform Provider
|
||||||
|
title: "<title>"
|
||||||
|
labels: [bug, azapi]
|
||||||
|
body:
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Is there an existing issue for this?
|
||||||
|
description: Please search to see if an issue already exists for the bug you encountered.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Terraform Version
|
||||||
|
description: |
|
||||||
|
What version of Terraform were you using when you encountered this issue?
|
||||||
|
Please include operating system when applicable.
|
||||||
|
|
||||||
|
`terraform --version`
|
||||||
|
placeholder: 1.0.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Provider Version
|
||||||
|
description: |
|
||||||
|
What version of the AzAPI provider were you using when you encountered this issue?
|
||||||
|
placeholder: 0.1.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Current Behavior
|
||||||
|
description: A concise description of what you're experiencing. Include Error output where applicable.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: A concise description of what you expected to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Terraform configuration
|
||||||
|
description: Please provide the minimum Terraform configuration that is resulting in the bug / issue.
|
||||||
|
render: terraform
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps To Reproduce
|
||||||
|
description: |
|
||||||
|
Steps to reproduce the behavior.
|
||||||
|
|
||||||
|
`terraform apply`
|
||||||
|
placeholder: |
|
||||||
|
1. Run '...'
|
||||||
|
2. See error...
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||||
|
|
||||||
|
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||||
|
validations:
|
||||||
|
required: false
|
43
.github/ISSUE_TEMPLATE/5_aztfy_bug.yml
vendored
Normal file
43
.github/ISSUE_TEMPLATE/5_aztfy_bug.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
name: 'Azure Terrafy Bug Report'
|
||||||
|
description: File a bug/issue for Azure Terrafy (aztfy)
|
||||||
|
title: "<title>"
|
||||||
|
labels: [bug, aztfy]
|
||||||
|
body:
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Is there an existing issue for this?
|
||||||
|
description: Please search to see if an issue already exists for the bug you encountered.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Current Behavior
|
||||||
|
description: A concise description of what you're experiencing. Include error output where applicable.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: A concise description of what you expected to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps To Reproduce
|
||||||
|
description: Steps to reproduce the behavior.
|
||||||
|
placeholder: |
|
||||||
|
1. In this environment...
|
||||||
|
2. Run '...'
|
||||||
|
3. See error...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||||
|
|
||||||
|
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||||
|
validations:
|
||||||
|
required: false
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
blank_issues_enabled: true
|
||||||
|
contact_links:
|
||||||
|
- name: AzureRM provider issues and Feature requests
|
||||||
|
url: https://github.com/hashicorp/terraform-provider-azurerm/issues
|
||||||
|
about: Please ask questions and report issues with the AzureRM provider and related resources here.
|
56
.github/workflows/e2e.yaml
vendored
Normal file
56
.github/workflows/e2e.yaml
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
name: E2E Test Check
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: ['opened', 'synchronize']
|
||||||
|
paths:
|
||||||
|
- '.github/**'
|
||||||
|
- '.github/workflows/**'
|
||||||
|
- 'quickstart/**'
|
||||||
|
- 'test/**'
|
||||||
|
- 'test/e2e/**'
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment:
|
||||||
|
name: test
|
||||||
|
steps:
|
||||||
|
- name: Checking for Fork
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$isFork = "${{ github.event.pull_request.head.repo.fork }}"
|
||||||
|
if($isFork -eq "true") {
|
||||||
|
echo "### WARNING: This workflow is disabled for forked repositories. Please follow the [release branch process](https://azure.github.io/Azure-Verified-Modules/contributing/terraform/terraform-contribution-flow/#5-create-a-pull-request-to-the-upstream-repository) if end to end tests are required." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
}
|
||||||
|
- name: checkout
|
||||||
|
if: github.event.pull_request.head.repo.fork == false
|
||||||
|
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3.6.0
|
||||||
|
- name: Get changed files
|
||||||
|
if: github.event.pull_request.head.repo.fork == false
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v45
|
||||||
|
with:
|
||||||
|
dir_names: true
|
||||||
|
separator: ","
|
||||||
|
dir_names_include_files: "quickstart/*"
|
||||||
|
files: "quickstart/**"
|
||||||
|
files_ignore: "**/TestRecord.md"
|
||||||
|
dir_names_max_depth: 2
|
||||||
|
- name: test pr
|
||||||
|
if: github.event.pull_request.head.repo.fork == false
|
||||||
|
env:
|
||||||
|
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
run: |
|
||||||
|
echo "change files" $ALL_CHANGED_FILES
|
||||||
|
export ARM_OIDC_REQUEST_TOKEN=$ACTIONS_ID_TOKEN_REQUEST_TOKEN
|
||||||
|
export ARM_OIDC_REQUEST_URL=$ACTIONS_ID_TOKEN_REQUEST_URL
|
||||||
|
export ARM_SUBSCRIPTION_ID=${{ secrets.ARM_SUBSCRIPTION_ID }}
|
||||||
|
export ARM_TENANT_ID=${{ secrets.ARM_TENANT_ID }}
|
||||||
|
export ARM_CLIENT_ID=${{ secrets.ARM_CLIENT_ID }}
|
||||||
|
export PACKER_VERSION=${{ vars.PACKER_VERSION }}
|
||||||
|
export CHANGED_FOLDERS="${{ steps.changed-files.outputs.all_changed_files }}"
|
||||||
|
docker run --rm -v $(pwd):/src -w /src/test --network=host -e ARM_SUBSCRIPTION_ID -e ARM_TENANT_ID -e ARM_CLIENT_ID -e ARM_OIDC_REQUEST_TOKEN -e ARM_OIDC_REQUEST_URL -e ARM_USE_OIDC=true -e CHANGED_FOLDERS mcr.microsoft.com/azterraform:latest sh -c "pkenv install $PACKER_VERSION && go mod tidy && go test -timeout=360m -v ./e2e"
|
31
.github/workflows/pr-check.yaml
vendored
Normal file
31
.github/workflows/pr-check.yaml
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
name: Pre Pull Request Check
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [ 'opened', 'synchronize' ]
|
||||||
|
paths:
|
||||||
|
- '.github/**'
|
||||||
|
- '.github/workflows/**'
|
||||||
|
- 'quickstart/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prepr-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3.6.0
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v45
|
||||||
|
with:
|
||||||
|
dir_names: true
|
||||||
|
separator: ","
|
||||||
|
dir_names_include_files: "quickstart/*"
|
||||||
|
files: "quickstart/**"
|
||||||
|
dir_names_max_depth: 2
|
||||||
|
- name: pr-check
|
||||||
|
run: |
|
||||||
|
export CHANGED_FOLDERS="${{ steps.changed-files.outputs.all_changed_files }}"
|
||||||
|
if [ -z "${{ github.event.number }}" ]; then
|
||||||
|
CHANGED_FOLDERS=$(find ./quickstart -maxdepth 1 -mindepth 1 -type d | tr '\n' ',')
|
||||||
|
fi
|
||||||
|
docker run --rm -v $(pwd):/src -w /src -e CHANGED_FOLDERS mcr.microsoft.com/azterraform:latest make pr-check
|
43
.github/workflows/weekly-e2e.yaml
vendored
Normal file
43
.github/workflows/weekly-e2e.yaml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
name: Weekly E2E Test Check
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * 0'
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
full-e2e-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 1440
|
||||||
|
environment:
|
||||||
|
name: crontests
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3.6.0
|
||||||
|
- name: test all examples
|
||||||
|
continue-on-error: true
|
||||||
|
timeout-minutes: 1440
|
||||||
|
run: |
|
||||||
|
git config --global --add safe.directory '*'
|
||||||
|
export ARM_OIDC_REQUEST_TOKEN=$ACTIONS_ID_TOKEN_REQUEST_TOKEN
|
||||||
|
export ARM_OIDC_REQUEST_URL=$ACTIONS_ID_TOKEN_REQUEST_URL
|
||||||
|
export ARM_SUBSCRIPTION_ID=${{ secrets.ARM_SUBSCRIPTION_ID }}
|
||||||
|
export ARM_TENANT_ID=${{ secrets.ARM_TENANT_ID }}
|
||||||
|
export ARM_CLIENT_ID=${{ secrets.ARM_CLIENT_ID_CRONTEST }}
|
||||||
|
export PACKER_VERSION=${{ vars.PACKER_VERSION }}
|
||||||
|
docker run --rm -v $(pwd):/src -w /src/test --network=host -e ARM_SUBSCRIPTION_ID -e ARM_CLIENT_ID -e ARM_TENANT_ID -e ARM_OIDC_REQUEST_TOKEN -e ARM_OIDC_REQUEST_URL -e ARM_USE_OIDC=true -e CHANGED_FOLDERS mcr.microsoft.com/azterraform sh -c "pkenv install $PACKER_VERSION && go mod tidy && go test -timeout=1440m -parallel 10 -v ./e2e"
|
||||||
|
- name: Update
|
||||||
|
run: |
|
||||||
|
docker run --rm -v $(pwd):/src -w /src mcr.microsoft.com/azterraform sh scripts/update-test-record.sh
|
||||||
|
cd .git
|
||||||
|
sudo chmod -R a+rwX .
|
||||||
|
sudo find . -type d -exec chmod g+s '{}' +
|
||||||
|
- name: Commit & Push changes
|
||||||
|
uses: actions-js/push@156f2b10c3aa000c44dbe75ea7018f32ae999772 #v1.4
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
message: 'Update TestRecord'
|
||||||
|
branch: ${{ env.default_branch }}
|
302
.gitignore
vendored
302
.gitignore
vendored
@ -1,288 +1,22 @@
|
|||||||
## Ignore Visual Studio temporary files, build results, and
|
log/
|
||||||
## files generated by popular Visual Studio add-ons.
|
obj/
|
||||||
##
|
_site/
|
||||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
.optemp/
|
||||||
|
_themes*/
|
||||||
# User-specific files
|
_repo.*/
|
||||||
*.suo
|
|
||||||
*.user
|
|
||||||
*.userosscache
|
|
||||||
*.sln.docstates
|
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
|
||||||
*.userprefs
|
|
||||||
|
|
||||||
# Build results
|
|
||||||
[Dd]ebug/
|
|
||||||
[Dd]ebugPublic/
|
|
||||||
[Rr]elease/
|
|
||||||
[Rr]eleases/
|
|
||||||
x64/
|
|
||||||
x86/
|
|
||||||
bld/
|
|
||||||
[Bb]in/
|
|
||||||
[Oo]bj/
|
|
||||||
[Ll]og/
|
|
||||||
|
|
||||||
# Visual Studio 2015 cache/options directory
|
|
||||||
.vs/
|
.vs/
|
||||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
.vscode/
|
||||||
#wwwroot/
|
.idea
|
||||||
|
.ionide/
|
||||||
|
.openpublishing.buildcore.ps1.vscode/
|
||||||
|
*.DS_Store
|
||||||
|
|
||||||
# MSTest test Results
|
.terraform
|
||||||
[Tt]est[Rr]esult*/
|
.terraform.lock.hcl
|
||||||
[Bb]uild[Ll]og.*
|
|
||||||
|
|
||||||
# NUNIT
|
|
||||||
*.VisualState.xml
|
|
||||||
TestResult.xml
|
|
||||||
|
|
||||||
# Build Results of an ATL Project
|
|
||||||
[Dd]ebugPS/
|
|
||||||
[Rr]eleasePS/
|
|
||||||
dlldata.c
|
|
||||||
|
|
||||||
# .NET Core
|
|
||||||
project.lock.json
|
|
||||||
project.fragment.lock.json
|
|
||||||
artifacts/
|
|
||||||
**/Properties/launchSettings.json
|
|
||||||
|
|
||||||
*_i.c
|
|
||||||
*_p.c
|
|
||||||
*_i.h
|
|
||||||
*.ilk
|
|
||||||
*.meta
|
|
||||||
*.obj
|
|
||||||
*.pch
|
|
||||||
*.pdb
|
|
||||||
*.pgc
|
|
||||||
*.pgd
|
|
||||||
*.rsp
|
|
||||||
*.sbr
|
|
||||||
*.tlb
|
|
||||||
*.tli
|
|
||||||
*.tlh
|
|
||||||
*.tmp
|
*.tmp
|
||||||
*.tmp_proj
|
go.sum
|
||||||
*.log
|
|
||||||
*.vspscc
|
|
||||||
*.vssscc
|
|
||||||
.builds
|
|
||||||
*.pidb
|
|
||||||
*.svclog
|
|
||||||
*.scc
|
|
||||||
|
|
||||||
# Chutzpah Test files
|
TestRecord
|
||||||
_Chutzpah*
|
**/TestRecord.md.tmp
|
||||||
|
terraform.tfstate
|
||||||
# Visual C++ cache files
|
terraform.tfstate.backup
|
||||||
ipch/
|
|
||||||
*.aps
|
|
||||||
*.ncb
|
|
||||||
*.opendb
|
|
||||||
*.opensdf
|
|
||||||
*.sdf
|
|
||||||
*.cachefile
|
|
||||||
*.VC.db
|
|
||||||
*.VC.VC.opendb
|
|
||||||
|
|
||||||
# Visual Studio profiler
|
|
||||||
*.psess
|
|
||||||
*.vsp
|
|
||||||
*.vspx
|
|
||||||
*.sap
|
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
|
||||||
$tf/
|
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
|
||||||
*.gpState
|
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
|
||||||
_ReSharper*/
|
|
||||||
*.[Rr]e[Ss]harper
|
|
||||||
*.DotSettings.user
|
|
||||||
|
|
||||||
# JustCode is a .NET coding add-in
|
|
||||||
.JustCode
|
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
|
||||||
_TeamCity*
|
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
|
||||||
*.dotCover
|
|
||||||
|
|
||||||
# Visual Studio code coverage results
|
|
||||||
*.coverage
|
|
||||||
*.coveragexml
|
|
||||||
|
|
||||||
# NCrunch
|
|
||||||
_NCrunch_*
|
|
||||||
.*crunch*.local.xml
|
|
||||||
nCrunchTemp_*
|
|
||||||
|
|
||||||
# MightyMoose
|
|
||||||
*.mm.*
|
|
||||||
AutoTest.Net/
|
|
||||||
|
|
||||||
# Web workbench (sass)
|
|
||||||
.sass-cache/
|
|
||||||
|
|
||||||
# Installshield output folder
|
|
||||||
[Ee]xpress/
|
|
||||||
|
|
||||||
# DocProject is a documentation generator add-in
|
|
||||||
DocProject/buildhelp/
|
|
||||||
DocProject/Help/*.HxT
|
|
||||||
DocProject/Help/*.HxC
|
|
||||||
DocProject/Help/*.hhc
|
|
||||||
DocProject/Help/*.hhk
|
|
||||||
DocProject/Help/*.hhp
|
|
||||||
DocProject/Help/Html2
|
|
||||||
DocProject/Help/html
|
|
||||||
|
|
||||||
# Click-Once directory
|
|
||||||
publish/
|
|
||||||
|
|
||||||
# Publish Web Output
|
|
||||||
*.[Pp]ublish.xml
|
|
||||||
*.azurePubxml
|
|
||||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
|
||||||
*.pubxml
|
|
||||||
*.publishproj
|
|
||||||
|
|
||||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
|
||||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
|
||||||
# in these scripts will be unencrypted
|
|
||||||
PublishScripts/
|
|
||||||
|
|
||||||
# NuGet Packages
|
|
||||||
*.nupkg
|
|
||||||
# The packages folder can be ignored because of Package Restore
|
|
||||||
**/packages/*
|
|
||||||
# except build/, which is used as an MSBuild target.
|
|
||||||
!**/packages/build/
|
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
|
||||||
#!**/packages/repositories.config
|
|
||||||
# NuGet v3's project.json files produces more ignorable files
|
|
||||||
*.nuget.props
|
|
||||||
*.nuget.targets
|
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
|
||||||
csx/
|
|
||||||
*.build.csdef
|
|
||||||
|
|
||||||
# Microsoft Azure Emulator
|
|
||||||
ecf/
|
|
||||||
rcf/
|
|
||||||
|
|
||||||
# Windows Store app package directories and files
|
|
||||||
AppPackages/
|
|
||||||
BundleArtifacts/
|
|
||||||
Package.StoreAssociation.xml
|
|
||||||
_pkginfo.txt
|
|
||||||
|
|
||||||
# Visual Studio cache files
|
|
||||||
# files ending in .cache can be ignored
|
|
||||||
*.[Cc]ache
|
|
||||||
# but keep track of directories ending in .cache
|
|
||||||
!*.[Cc]ache/
|
|
||||||
|
|
||||||
# Others
|
|
||||||
ClientBin/
|
|
||||||
~$*
|
|
||||||
*~
|
|
||||||
*.dbmdl
|
|
||||||
*.dbproj.schemaview
|
|
||||||
*.jfm
|
|
||||||
*.pfx
|
|
||||||
*.publishsettings
|
|
||||||
orleans.codegen.cs
|
|
||||||
|
|
||||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
|
||||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
|
||||||
#bower_components/
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
|
||||||
# because we have git ;-)
|
|
||||||
_UpgradeReport_Files/
|
|
||||||
Backup*/
|
|
||||||
UpgradeLog*.XML
|
|
||||||
UpgradeLog*.htm
|
|
||||||
|
|
||||||
# SQL Server files
|
|
||||||
*.mdf
|
|
||||||
*.ldf
|
|
||||||
*.ndf
|
|
||||||
|
|
||||||
# Business Intelligence projects
|
|
||||||
*.rdl.data
|
|
||||||
*.bim.layout
|
|
||||||
*.bim_*.settings
|
|
||||||
|
|
||||||
# Microsoft Fakes
|
|
||||||
FakesAssemblies/
|
|
||||||
|
|
||||||
# GhostDoc plugin setting file
|
|
||||||
*.GhostDoc.xml
|
|
||||||
|
|
||||||
# Node.js Tools for Visual Studio
|
|
||||||
.ntvs_analysis.dat
|
|
||||||
node_modules/
|
|
||||||
|
|
||||||
# Typescript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# Visual Studio 6 build log
|
|
||||||
*.plg
|
|
||||||
|
|
||||||
# Visual Studio 6 workspace options file
|
|
||||||
*.opt
|
|
||||||
|
|
||||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
|
||||||
*.vbw
|
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/ModelManifest.xml
|
|
||||||
**/*.Server/GeneratedArtifacts
|
|
||||||
**/*.Server/ModelManifest.xml
|
|
||||||
_Pvt_Extensions
|
|
||||||
|
|
||||||
# Paket dependency manager
|
|
||||||
.paket/paket.exe
|
|
||||||
paket-files/
|
|
||||||
|
|
||||||
# FAKE - F# Make
|
|
||||||
.fake/
|
|
||||||
|
|
||||||
# JetBrains Rider
|
|
||||||
.idea/
|
|
||||||
*.sln.iml
|
|
||||||
|
|
||||||
# CodeRush
|
|
||||||
.cr/
|
|
||||||
|
|
||||||
# Python Tools for Visual Studio (PTVS)
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# Cake - Uncomment if you are using it
|
|
||||||
# tools/**
|
|
||||||
# !tools/packages.config
|
|
||||||
|
|
||||||
# Telerik's JustMock configuration file
|
|
||||||
*.jmconfig
|
|
||||||
|
|
||||||
# BizTalk build output
|
|
||||||
*.btp.cs
|
|
||||||
*.btm.cs
|
|
||||||
*.odx.cs
|
|
||||||
*.xsd.cs
|
|
104
.gitmodules
vendored
Normal file
104
.gitmodules
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
[submodule "provider/terraform-provider-azurerm"]
|
||||||
|
path = provider/terraform-provider-azurerm
|
||||||
|
url = git@github.com:terraform-providers/terraform-provider-azurerm.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-compute"]
|
||||||
|
path = module/terraform-azurerm-compute
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-compute.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-network"]
|
||||||
|
path = module/terraform-azurerm-network
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-network.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-database"]
|
||||||
|
path = module/terraform-azurerm-database
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-database.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-loadbalancer"]
|
||||||
|
path = module/terraform-azurerm-loadbalancer
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-loadbalancer.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-computegroup"]
|
||||||
|
path = module/terraform-azurerm-computegroup
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-computegroup.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-network-security-group"]
|
||||||
|
path = module/terraform-azurerm-network-security-group
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-network-security-group.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-manageddisk"]
|
||||||
|
path = module/terraform-azurerm-manageddisk
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-manageddisk.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-vm"]
|
||||||
|
path = module/terraform-azurerm-vm
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-vm.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-vmss-cloudinit"]
|
||||||
|
path = module/terraform-azurerm-vmss-cloudinit
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-vmss-cloudinit.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-vnet"]
|
||||||
|
path = module/terraform-azurerm-vnet
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-vnet.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-encryptedmanageddisk"]
|
||||||
|
path = module/terraform-azurerm-encryptedmanageddisk
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-encryptedmanageddisk.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-diskencrypt"]
|
||||||
|
path = module/terraform-azurerm-diskencrypt
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-diskencrypt.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-postgresql"]
|
||||||
|
path = module/terraform-azurerm-postgresql
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-postgresql.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-storage-account"]
|
||||||
|
path = module/terraform-azurerm-storage-account
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-storage-account.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-routetable"]
|
||||||
|
path = module/terraform-azurerm-routetable
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-routetable.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-search-service"]
|
||||||
|
path = module/terraform-azurerm-search-service
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-search-service.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-vnetpeering"]
|
||||||
|
path = module/terraform-azurerm-vnetpeering
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-vnetpeering.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-aks"]
|
||||||
|
path = module/terraform-azurerm-aks
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-aks.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-consul"]
|
||||||
|
path = module/terraform-azurerm-consul
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-consul.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-aci"]
|
||||||
|
path = module/terraform-azurerm-aci
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-aci.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-disk-snapshot"]
|
||||||
|
path = module/terraform-azurerm-disk-snapshot
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-disk-snapshot.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-resource-group"]
|
||||||
|
path = module/terraform-azurerm-resource-group
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-resource-group.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-vm-extension-msi"]
|
||||||
|
path = module/terraform-azurerm-vm-extension-msi
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-vm-extension-msi.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-application-security-group"]
|
||||||
|
path = module/terraform-azurerm-application-security-group
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-application-security-group.git
|
||||||
|
branch = master
|
||||||
|
[submodule "module/terraform-azurerm-module-test-jenkins"]
|
||||||
|
path = module/terraform-azurerm-module-test-jenkins
|
||||||
|
url = git@github.com:Azure/terraform-azurerm-module-test-jenkins.git
|
||||||
|
branch = master
|
10
CODE_OF_CONDUCT.md
Normal file
10
CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Microsoft Open Source Code of Conduct
|
||||||
|
|
||||||
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
|
||||||
|
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
|
||||||
|
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
|
||||||
|
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
|
||||||
|
- Employees can reach out at [aka.ms/opensource/moderation-support](https://aka.ms/opensource/moderation-support)
|
90
GNUmakefile
Normal file
90
GNUmakefile
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
fmt:
|
||||||
|
@echo "==> Fixing source code with gofmt..."
|
||||||
|
# This logic should match the search logic in scripts/gofmtcheck.sh
|
||||||
|
find . -name '*.go' | grep -v vendor | xargs gofmt -s -w
|
||||||
|
|
||||||
|
fumpt:
|
||||||
|
@echo "==> Fixing source code with Gofumpt..."
|
||||||
|
# This logic should match the search logic in scripts/gofmtcheck.sh
|
||||||
|
find . -name '*.go' | grep -v vendor | xargs gofumpt -w
|
||||||
|
|
||||||
|
gosec:
|
||||||
|
@echo "==> Checking go code with gosec..."
|
||||||
|
cd test && gosec -tests ./...
|
||||||
|
|
||||||
|
tffmt:
|
||||||
|
@echo "==> Formatting terraform code..."
|
||||||
|
terraform fmt -recursive
|
||||||
|
|
||||||
|
tffmtcheck:
|
||||||
|
@sh "$(CURDIR)/scripts/terraform-fmt.sh"
|
||||||
|
|
||||||
|
tfvalidatecheck:
|
||||||
|
@sh "$(CURDIR)/scripts/terraform-validate.sh"
|
||||||
|
|
||||||
|
terrafmtcheck:
|
||||||
|
@sh "$(CURDIR)/scripts/terrafmt-check.sh"
|
||||||
|
|
||||||
|
gofmtcheck:
|
||||||
|
@sh "$(CURDIR)/scripts/gofmtcheck.sh"
|
||||||
|
@sh "$(CURDIR)/scripts/fumptcheck.sh"
|
||||||
|
|
||||||
|
golint:
|
||||||
|
@sh "$(CURDIR)/scripts/run-golangci-lint.sh"
|
||||||
|
|
||||||
|
tflint:
|
||||||
|
@sh "$(CURDIR)/scripts/run-tflint.sh"
|
||||||
|
|
||||||
|
lint: golint tflint gosec
|
||||||
|
|
||||||
|
checkovcheck:
|
||||||
|
@sh "$(CURDIR)/scripts/checkovcheck.sh"
|
||||||
|
|
||||||
|
checkovplancheck:
|
||||||
|
@sh "$(CURDIR)/scripts/checkovplancheck.sh"
|
||||||
|
|
||||||
|
fmtcheck: tfvalidatecheck # tffmtcheck terrafmtcheck
|
||||||
|
|
||||||
|
pr-check: fmtcheck
|
||||||
|
|
||||||
|
unit-test:
|
||||||
|
@sh "$(CURDIR)/scripts/run-unit-test.sh"
|
||||||
|
|
||||||
|
e2e-test:
|
||||||
|
@sh "$(CURDIR)/scripts/run-e2e-test.sh"
|
||||||
|
|
||||||
|
version-upgrade-test:
|
||||||
|
@sh "$(CURDIR)/scripts/version-upgrade-test.sh"
|
||||||
|
|
||||||
|
terrafmt:
|
||||||
|
@echo "==> Fixing test and document terraform blocks code with terrafmt..."
|
||||||
|
@find . -name '*.md' -o -name "*.go" | grep -v -e '.github' -e '.terraform' -e 'vendor' | while read f; do terrafmt fmt -f $$f; done
|
||||||
|
|
||||||
|
pre-commit: tffmt terrafmt depsensure fmt fumpt generate
|
||||||
|
|
||||||
|
depsensure:
|
||||||
|
@sh "$(CURDIR)/scripts/deps-ensure.sh"
|
||||||
|
|
||||||
|
depscheck:
|
||||||
|
@sh "$(CURDIR)/scripts/deps-check.sh"
|
||||||
|
|
||||||
|
generate:
|
||||||
|
@echo "--> Generating doc"
|
||||||
|
@rm -f .terraform.lock.hcl
|
||||||
|
@terraform-docs markdown table --output-file README.md --output-mode inject ./
|
||||||
|
@markdown-table-formatter README.md
|
||||||
|
|
||||||
|
gencheck:
|
||||||
|
@echo "==> Generating..."
|
||||||
|
@cp README.md README-generated.md
|
||||||
|
@terraform-docs markdown table --output-file README-generated.md --output-mode inject ./
|
||||||
|
@markdown-table-formatter README-generated.md
|
||||||
|
@echo "==> Comparing generated code to committed code..."
|
||||||
|
@diff -q README.md README-generated.md || \
|
||||||
|
(echo; echo "Unexpected difference in generated document. Run 'make pre-commit' to update the generated document and commit."; exit 1)
|
||||||
|
|
||||||
|
test: fmtcheck
|
||||||
|
@TEST=$(TEST) ./scripts/run-gradually-deprecated.sh
|
||||||
|
@TEST=$(TEST) ./scripts/run-test.sh
|
||||||
|
|
||||||
|
.PHONY: fmt fmtcheck pr-check
|
10
README.md
10
README.md
@ -1,3 +1,13 @@
|
|||||||
|
# Contributing
|
||||||
|
This project welcomes contributions and suggestions.
|
||||||
|
|
||||||
|
## Modules
|
||||||
|
Module summary
|
||||||
|
[Module contribution guide](./module/CONTRIBUTE.md)
|
||||||
|
|
||||||
|
## Providers
|
||||||
|
Provider summary
|
||||||
|
[Provider contribution guide](./provider/CONTRIBUTE.md)
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
|
41
SECURITY.md
Normal file
41
SECURITY.md
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.7 BLOCK -->
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
|
||||||
|
|
||||||
|
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
|
||||||
|
|
||||||
|
## Reporting Security Issues
|
||||||
|
|
||||||
|
**Please do not report security vulnerabilities through public GitHub issues.**
|
||||||
|
|
||||||
|
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
|
||||||
|
|
||||||
|
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
|
||||||
|
|
||||||
|
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
|
||||||
|
|
||||||
|
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
|
||||||
|
|
||||||
|
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
|
||||||
|
* Full paths of source file(s) related to the manifestation of the issue
|
||||||
|
* The location of the affected source code (tag/branch/commit or direct URL)
|
||||||
|
* Any special configuration required to reproduce the issue
|
||||||
|
* Step-by-step instructions to reproduce the issue
|
||||||
|
* Proof-of-concept or exploit code (if possible)
|
||||||
|
* Impact of the issue, including how an attacker might exploit the issue
|
||||||
|
|
||||||
|
This information will help us triage your report more quickly.
|
||||||
|
|
||||||
|
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
|
||||||
|
|
||||||
|
## Preferred Languages
|
||||||
|
|
||||||
|
We prefer all communications to be in English.
|
||||||
|
|
||||||
|
## Policy
|
||||||
|
|
||||||
|
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
|
||||||
|
|
||||||
|
<!-- END MICROSOFT SECURITY.MD BLOCK -->
|
37
module/CONTRIBUTE.md
Normal file
37
module/CONTRIBUTE.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Contribute to Terraform Modules Registry
|
||||||
|
This document describes the basic process of authoring and contributing re-usable, verifiable Terraform templates to Terraform Registry (https://registry.terraform.io). Terraform Registry serves as a centralized location to discover, learn and use Terraform artifacts to provision infrastructure into Azure, as well as into other cloud platforms.
|
||||||
|
|
||||||
|
## Basic Steps
|
||||||
|
Below are the basic steps to create and publish a verified Azure module into the Terraform Registry:
|
||||||
|
|
||||||
|
1. Following best practices for Terraform template authoring, create a template deploying infrastructure components into Azure.
|
||||||
|
2. Create a set of tests verifying correctness of Terraform template created in Step 1.
|
||||||
|
3. Set up a basic Azure DevOps pipeline for Continuous Integration and Deployment, including running the tests created in Step 2 above.
|
||||||
|
4. Using your GitHub credentials, sign into Terraform Registry and publish your module.
|
||||||
|
|
||||||
|
While Steps 2 and 3 are not a requirement for Terraform Registry, we strongly encourage all modules published as "Azure Verified" to include those steps.
|
||||||
|
|
||||||
|
### Step 1 - Creating Terraform template
|
||||||
|
While Terraform offers an easy-to-create, easy-to-understand template authoring language in the form HCL, creating components that could be re-usable is often a time-consuming art form. With Terraform Registry, you are forced to think about various customer scenarios a template could be deployed with, and the permutation of various use cases could be daunting. While it is impossible to anticipate all the scenarios, we recommend that you familiarize yourself with a [set of Terraform Best Practices] (https://www.terraform.io/docs/enterprise/guides/recommended-practices/index.html) published by HashiCorp. Then, think through the most common use cases your module would likely serve, and try to author it in such a way that it will accommodate a set of those scenarios (as opposed to being strongly coupled to a single use case).
|
||||||
|
|
||||||
|
We have [created and documented a tool](https://docs.microsoft.com/en-us/azure/terraform/terraform-vscode-module-generator) that builds basic scaffolding for an Azure module, including a sample test. You are also welcome to clone one of the [existing modules] (https://github.com/Azure/terraform-azurerm-postgresql), providing you a set of Terraform files that you can customize for your module.
|
||||||
|
|
||||||
|
### Step 2 - Create a set of tests
|
||||||
|
After experimenting with several approaches for testing Terraform modules, we have settled on using [Terratest](https://github.com/gruntwork-io/terratest). The benefits of Terratest are its ease of integration with CI/CD tooling, as well its similarity to native [Terraform acceptance testing](https://github.com/hashicorp/terraform/blob/master/.github/CONTRIBUTING.md#writing-an-acceptance-test) framework. You will, however, need to be familiar with Go to create tests using Terratest.
|
||||||
|
|
||||||
|
If you used [Module Generator](https://docs.microsoft.com/en-us/azure/terraform/terraform-vscode-module-generator) in Step 1, a default test using Terratest is created for you in the test folder. You will need to think through additional tests that you can create that verify correctness of your template.
|
||||||
|
|
||||||
|
### Step 3 - Integrate with Azure DevOps
|
||||||
|
As you introduce changes to the module, or approve pull requests, you'd like to be certain that new changes did not break the functionality the users have become dependent on. This is where CI/CD integration comes in. Integration with Azure DevOps is straightforward to setup - you will need to make sure you have an [azure-pipelines.yml](https://github.com/Azure/terraform-azurerm-postgresql/blob/master/azure-pipelines.yml) in your repo, as well as add the [test.sh](https://github.com/Azure/terraform-azurerm-postgresql/blob/master/test.sh) file to the root of the repo.
|
||||||
|
|
||||||
|
The pipelines file is very generic - it builds a docker container and then calls into test.sh for Terratest execution. The only thing you will change in that file is the imageName variable - this will be the docker image name that the pipeline will create. The test.sh file is generic and stays as is, calling all of the test methods that were authored in Step 2.
|
||||||
|
|
||||||
|
After your pipelines succeed, please send a request to Terraform on Azure distribution list to pull this pipeline into Terraform ADO environment.
|
||||||
|
|
||||||
|
### Step 4 - Publish Module to Terraform Registry
|
||||||
|
This is the easiest step of all. Simply sign into [Terraform Registry](https://registry.terraform.io) using your GitHub credentials, then click on Publish in the top right corner. Select the repo to publish, then click publish to complete the process.
|
||||||
|
|
||||||
|
After your module has been published, please send a request to Terraform on Azure distribution list to enusre we add an "Azure Verified" check box next to the module you've created.
|
||||||
|
|
||||||
|
|
||||||
|
|
0
module/README.md
Normal file
0
module/README.md
Normal file
1
module/terraform-azurerm-aci
Submodule
1
module/terraform-azurerm-aci
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 7778d5ae12848f37785be2b1fbb793179a0f62f4
|
1
module/terraform-azurerm-aks
Submodule
1
module/terraform-azurerm-aks
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 3c05c77a6e0a5ab4a7c65dcb1dbc4f733ae5d78e
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 82484c9a661fedbdeb3e65438db97068b0b63df4
|
1
module/terraform-azurerm-compute
Submodule
1
module/terraform-azurerm-compute
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit e9b43630cf0a36da3806bd3dbaf91063b016a047
|
1
module/terraform-azurerm-computegroup
Submodule
1
module/terraform-azurerm-computegroup
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c6b9a4031f6ba9e9ecfe06c5e30f08527b725afa
|
1
module/terraform-azurerm-consul
Submodule
1
module/terraform-azurerm-consul
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit a046262ebbc7c4771a69ba2661f7a03cc47987d5
|
1
module/terraform-azurerm-database
Submodule
1
module/terraform-azurerm-database
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 9e5038e2c3f0cbecb5cf4102144e7b04cf41acd8
|
1
module/terraform-azurerm-disk-snapshot
Submodule
1
module/terraform-azurerm-disk-snapshot
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 786868fedd22b6c850c7fddcf7898e66e5012439
|
1
module/terraform-azurerm-diskencrypt
Submodule
1
module/terraform-azurerm-diskencrypt
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit e7c145d784d6bdb80836c0c70470a9efa9c8776e
|
1
module/terraform-azurerm-encryptedmanageddisk
Submodule
1
module/terraform-azurerm-encryptedmanageddisk
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 0843a2b77b2e61a1dea6b7979d9e928226f72226
|
1
module/terraform-azurerm-loadbalancer
Submodule
1
module/terraform-azurerm-loadbalancer
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit ffb9ef9b710ff0e22a32d4405929e348d3080ac2
|
1
module/terraform-azurerm-manageddisk
Submodule
1
module/terraform-azurerm-manageddisk
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit ba09ddb60aa8033884baaeae4c65172f35ce03e5
|
1
module/terraform-azurerm-module-test-jenkins
Submodule
1
module/terraform-azurerm-module-test-jenkins
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 1cbfdfe3c7b2b286d9bec3ccd717e7c973107000
|
1
module/terraform-azurerm-network
Submodule
1
module/terraform-azurerm-network
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 0336beac0548330b690f3319c31d3cc8a4f71786
|
1
module/terraform-azurerm-network-security-group
Submodule
1
module/terraform-azurerm-network-security-group
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 2b53b511b38799f3e6e6919acfd44f6a9acfac32
|
1
module/terraform-azurerm-postgresql
Submodule
1
module/terraform-azurerm-postgresql
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 2c8caf978ba80032e3c9669a4986c136c8cd34a1
|
1
module/terraform-azurerm-resource-group
Submodule
1
module/terraform-azurerm-resource-group
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 58b98b34ee36f4a75af555b265b5508fcb2aff59
|
1
module/terraform-azurerm-routetable
Submodule
1
module/terraform-azurerm-routetable
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 999ef40f5a4b73cd9b9f44a878803f226cdf1851
|
1
module/terraform-azurerm-search-service
Submodule
1
module/terraform-azurerm-search-service
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 6e17afd471c7e2974df0aca21402155a7ca492d9
|
1
module/terraform-azurerm-storage-account
Submodule
1
module/terraform-azurerm-storage-account
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c34103ce658ad3a93e0316b25a771ff137ebdadf
|
1
module/terraform-azurerm-vm
Submodule
1
module/terraform-azurerm-vm
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 005ac3e84056fbdb021f12acad677ab6763e9430
|
1
module/terraform-azurerm-vm-extension-msi
Submodule
1
module/terraform-azurerm-vm-extension-msi
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit dc02d38c47e882e6c313842079b824ed907ee3c7
|
1
module/terraform-azurerm-vmss-cloudinit
Submodule
1
module/terraform-azurerm-vmss-cloudinit
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 4cbad8048bc11e699faab42baaf278751daa037c
|
1
module/terraform-azurerm-vnet
Submodule
1
module/terraform-azurerm-vnet
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 8a5b060d557bf1997149bdc9a13e6a57db4cf88f
|
1
module/terraform-azurerm-vnetpeering
Submodule
1
module/terraform-azurerm-vnetpeering
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 99af18dfe6f6d227fada8a652d37f9baa8d0d574
|
293
provider/CONTRIBUTE.md
Normal file
293
provider/CONTRIBUTE.md
Normal file
@ -0,0 +1,293 @@
|
|||||||
|
# Contribute to Terraform AzureRM provider
|
||||||
|
|
||||||
|
This document describe how you can get ready to contribute to the [AzureRM Terraform provider](https://github.com/terraform-providers/terraform-provider-azurerm).
|
||||||
|
We also recommend that you read the [README](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/README.md) on the AzureRM Terraform Provider repository.
|
||||||
|
|
||||||
|
## Setup your system
|
||||||
|
|
||||||
|
### Terraform
|
||||||
|
|
||||||
|
You need to install Terraform on your dev environment. You can downlaod it from [terraform](https://www.terraform.io/downloads.html).
|
||||||
|
|
||||||
|
### Go tools
|
||||||
|
|
||||||
|
Terraform is developed using Go Programming Language. You need to install Go Programming Language **1.x.x** to be able to build and debug the provider locally. You can check to see what version of Go is currently being used in the project by checking the [go.mod](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/go.mod) file in the root directory.
|
||||||
|
You can download it from [golang](https://golang.org/dl/) and find the installation instructions for your system [golang install](https://golang.org/doc/install#install)
|
||||||
|
|
||||||
|
Then you can test your environment following the instructions on [golang testing](https://golang.org/doc/install#testing).
|
||||||
|
|
||||||
|
### Check your environment variables
|
||||||
|
|
||||||
|
As with many Go project, AzureRM Terraform provider rely on your GOPATH environment variable. You may want to make sure it is well configured for your system, reading [golang setting go path](https://github.com/golang/go/wiki/SettingGOPATH).
|
||||||
|
|
||||||
|
### Visual Studio Code
|
||||||
|
|
||||||
|
You can use the IDE you love, but in this documentation we will describe how to contribute to the Terraform AzureRM provider using Visual Studio Code. You can download it for your system from [visual studio](https://code.visualstudio.com/Download).
|
||||||
|
|
||||||
|
Once installed, download the Go extension for VS Code:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Once installed, open VS Code and look for the `Go: Install/Update Tools` in the command palette, a select all the tools:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Specific requirements for Windows users
|
||||||
|
|
||||||
|
If you are running Windows, then you need to install Git Bash and Make for Windows. Check the dedicated section on Terraform on Azure repository [terraform developer requirements](https://github.com/terraform-providers/terraform-provider-azurerm#developer-requirements).
|
||||||
|
|
||||||
|
## Get the sources
|
||||||
|
|
||||||
|
First, go to the [AzureRM Terraform provider](https://github.com/terraform-providers/terraform-provider-azurerm) project page and fork the repository into your GitHub account.
|
||||||
|
|
||||||
|
As the provider uses go modules, you can clone the repository in any path.
|
||||||
|
|
||||||
|
## Build the sources
|
||||||
|
|
||||||
|
You can check that everything is OK by building the AzureRM provider:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd $GOPATH/src/github.com/terraform-providers/terraform-provider-azurerm
|
||||||
|
make build
|
||||||
|
```
|
||||||
|
|
||||||
|
Once completed, the binary of the AzureRM provider should be available in the `$GOPATH/bin` directory.
|
||||||
|
|
||||||
|
*Note: on Windows, you need to use Git Bash*
|
||||||
|
|
||||||
|
More information [here](https://github.com/terraform-providers/terraform-provider-azurerm#developing-the-provider).
|
||||||
|
|
||||||
|
## Work with your local build
|
||||||
|
|
||||||
|
Once you have built a new version of the AzureRM Terraform provider, you can use it locally.
|
||||||
|
|
||||||
|
First, you need to move your `terraform` binary which is in the `$GOPATH/bin` folder on your machine, to the third-party plugins folder which is located at `~/.terraform.d/plugins` on most operating systems and `%APPDATA%\terraform.d\plugins` on Windows.
|
||||||
|
|
||||||
|
Then you will need to go to your terraform test folder where the `main.tf` configuration file exists and initialize your terraform working directory by using the `terraform init` command.
|
||||||
|
|
||||||
|
If the third-party plugin folder is empty, the init operation will download the AzureRM Provider for you.
|
||||||
|
|
||||||
|
More information [here](https://www.terraform.io/docs/extend/how-terraform-works.html#plugin-locations).
|
||||||
|
|
||||||
|
`terraform init` will look for the providers in the folder where the `.tf` files are located, so it is possible to just copy the provider from `$GOPATH/bin` to your current folder and it will be used instead of getting downloaded.
|
||||||
|
|
||||||
|
|
||||||
|
## Debug the AzureRM provider using Visual Studio Code and Delve
|
||||||
|
|
||||||
|
It is possible to use Visual Studio Code and Delve (the Golang debugger) to debug the AzureRM provider.
|
||||||
|
The easiest way to debug Terraform AzureRM Provider is to execute the acceptances unit test with the Delve debugger attached. Acceptance tests are tests that are written for every resources and data sources and that will really execute the code to an Azure subscription, to validate everything is working well.
|
||||||
|
|
||||||
|
First, to be able to connect to Azure, you need to create a service principal using the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
az ad sp create-for-rbac --role=Contributor --scope=/subscriptions/<YOUR_SUBSCRIPTION_ID>
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, you need to create a `.launch.json` file inside the `.vscode` folder at the root of the Terraform AzureRM provider directory (create the `.vscode` folder if it does not exist).
|
||||||
|
|
||||||
|
Copy the following content into the file:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Launch test function",
|
||||||
|
"type": "go",
|
||||||
|
"request": "launch",
|
||||||
|
"mode": "test",
|
||||||
|
"program": "${workspaceRoot}/azurerm/resource_arm_container_registry_test.go",
|
||||||
|
"args": [
|
||||||
|
"-test.v",
|
||||||
|
"-test.run",
|
||||||
|
"TestAccAzureRMContainerRegistry_geoReplication"
|
||||||
|
],
|
||||||
|
"envFile": "${workspaceRoot}/.vscode/private.env",
|
||||||
|
"showLog": true
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The configuration above allows to start debugging a Terraform resource, by launching one or more acceptance test:
|
||||||
|
|
||||||
|
- The `program` property indicates the file you want to debug
|
||||||
|
- The last entry of the `args` property, here `TestAccAzureRMContainerRegistry_geoReplication` represents th test to launch. You can use regex to run multiple tests (ex: `TestAccAzureRMContainerRegistry_*`)
|
||||||
|
- The `envFile` property defines the path to get the environment variables file (mainly Azure credentials) that needs to be used to run the acceptance test.
|
||||||
|
|
||||||
|
Create the `private.env` file into the `.vscode` folder and fill it with the following environment variables:
|
||||||
|
|
||||||
|
```
|
||||||
|
ARM_CLIENT_ID=<YOUR_SERVICE_PRINCIPAL_CLIENT_ID>
|
||||||
|
ARM_CLIENT_SECRET=<YOUR_SERVICE_PRINCIPAL_CLIENT_SECRET>
|
||||||
|
ARM_SUBSCRIPTION_ID=<YOUR_AZURE_SUBSCRIPTION_ID>
|
||||||
|
ARM_TENANT_ID=<YOUR_AZURE_TENANT_ID>
|
||||||
|
ARM_TEST_LOCATION=<AZURE_LOCATION_1>
|
||||||
|
ARM_TEST_LOCATION_ALT=<AZURE_LOCATION_2>
|
||||||
|
TF_ACC=1
|
||||||
|
```
|
||||||
|
|
||||||
|
If you would preffer to use the UI to launch the tests, it is aso possible to specify the environment variables used by vscode integrated testing by modifying the settings.json. Two options are available
|
||||||
|
* Use the built in variables definition:
|
||||||
|
```json
|
||||||
|
"go.testEnvVars": {
|
||||||
|
"ARM_CLIENT_ID" : "<YOUR_SERVICE_PRINCIPAL_CLIENT_ID>"
|
||||||
|
...
|
||||||
|
...
|
||||||
|
},
|
||||||
|
```
|
||||||
|
* Use the contents of a file as `private.env`
|
||||||
|
```json
|
||||||
|
"go.testEnvFile": "${workspaceRoot}/.vscode/private.env"
|
||||||
|
```
|
||||||
|
|
||||||
|
*Note: it is possible to customize the logging level of Terraform. It might be super useful in some situations. It can be done by setting the `TF_LOG` environment variable. Refer to [the official debugging documentation](https://www.terraform.io/docs/internals/debugging.html) for more details.*
|
||||||
|
|
||||||
|
Once done, you can just press F5 and the debug will start! You can place breakpoints in your code to do step by step debugging:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
*Note: the first time your start the debug, it can take a while, you need to be patient :-)*
|
||||||
|
|
||||||
|
## How to contribute to the Azure RM provider
|
||||||
|
|
||||||
|
*Note: we also invite you to read the official documentation about developing a provider [here](https://www.terraform.io/docs/plugins/basics.html#developing-a-plugin)*
|
||||||
|
|
||||||
|
First you need to pick [an issue on the provider](https://github.com/terraform-providers/terraform-provider-azurerm/issues) by commenting the issue and saying that you're going to work on that, to make sure that the repo maintainers are aware that you are going to work on this issue.
|
||||||
|
We also strongly advise that you describe the work you are planning to do, like explaining your implementation, submitting the TF schema for new resources, to make sure the discussion start early as possible with the reviewers.
|
||||||
|
|
||||||
|
*Note: if there is no issue for the problem you are trying to solve, you can create one.*
|
||||||
|
|
||||||
|
If you are a new contributor, there is a [good first issue](https://github.com/terraform-providers/terraform-provider-azurerm/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) label that may help you to filter the issue and start with a simple one.
|
||||||
|
|
||||||
|
For each piece of code that you write into the provider, you need to make sure that you have:
|
||||||
|
|
||||||
|
- the implementations of the `data source` and/or `resource` definition
|
||||||
|
- acceptance test created or updated
|
||||||
|
- documentation created or updated
|
||||||
|
- example created or updated (optional)
|
||||||
|
|
||||||
|
Data sources, resources and tests are defined in the [azurerm/internal/services](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/azurerm/internal/services) folder of the repository.
|
||||||
|
|
||||||
|
Documentation for data sources is in the [website/docs/d](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/website/docs/d) folder and documentation for resources is in the [website/docs/r](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/website/docs/r) folder.
|
||||||
|
|
||||||
|
Finally, examples are located in the [examples](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/examples) folder.
|
||||||
|
|
||||||
|
AzureRM Terraform provider uses the [Azure SDK for Go](https://github.com/Azure/azure-sdk-for-go) to interact with Azure. It's important that you respect that rule. If you are trying to do something that is not available in the Azure SDK for Go, then you should check if the API is availble in [Azure Service Repository](https://github.com/Azure/azure-rest-api-specs) and open an issue in the **Azure SDK for Go** repository to have it added to a future release of the Azure SDK for Go.
|
||||||
|
|
||||||
|
We recommand that you start with fixing issues/patching an existing data source or resource to understand how it works in details before trying to implement a brand new one.
|
||||||
|
|
||||||
|
Don't forget that you are working on your own fork of the repository and that you need to open a pull request to the main repository to bring your update to the HashiCorp team, for review.
|
||||||
|
|
||||||
|
### Working with Azure SDK for Go
|
||||||
|
|
||||||
|
All the imports for the Azure for Go SDK services have to be done in the [client.go](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/clients/client.go) file. It exposes a top level struct, `Client` that exposes all the service clients that you may use in a data source or resource to interact with Azure. If the service already exist and you are just modifying an existing resource you can skip this step.
|
||||||
|
|
||||||
|
Then you need to register your subservice in `client.go` in your corresponding service folder.
|
||||||
|
|
||||||
|
For example, if you need to work on implementing Azure Batch Account support to the provider:
|
||||||
|
|
||||||
|
1. Check if the service `Batch` registered in service [client.go](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/clients/client.go). If not, you need to register your service.
|
||||||
|
2. Go to your corresponding service folder [batch](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/azurerm/internal/services/batch) and write a `client.go` in client folder. If the service folder does not exist, you will need to create one.
|
||||||
|
3. Add a variable `AccountClient` which is created by the service api `NewAccountClientWithBaseURI` from `"github.com/Azure/azure-sdk-for-go/services/batch/mgmt/2019-08-01/batch"`.
|
||||||
|
```go
|
||||||
|
type Client struct {
|
||||||
|
AccountClient *batch.AccountClient
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Register your client in the Terraform ResourceManagerAuthorizer:
|
||||||
|
|
||||||
|
```go
|
||||||
|
func NewClient(o *common.ClientOptions) *Client {
|
||||||
|
accountClient := batch.NewAccountClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
|
||||||
|
o.ConfigureClient(&accountClient.Client, o.ResourceManagerAuthorizer)
|
||||||
|
|
||||||
|
return &Client{
|
||||||
|
AccountClient: &accountClient,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
By doing the four steps above, you will make sure that when developping the data source or the resource, you can access the Azure SDK for Go clients that you need.
|
||||||
|
|
||||||
|
### Developing a Data Source
|
||||||
|
|
||||||
|
When naming a new data source file it should follow the below naming convention:
|
||||||
|
**name_of_the_data_source**_data_source.go
|
||||||
|
|
||||||
|
A data source is composed of two relevant functions:
|
||||||
|
|
||||||
|
- The function that creates a `schema.Resource` object that returns the schema (definition) of the data source,i.e. the property that compose the data source, and some rules about those properties. You only need to provide required properties to locate that resource, and mark all other properties returned from the service as `Computed`. This function is named by convention dataSourceArm*NAME_OF_THE_DATA_SOURCE*, for example `dataSourceArmBatchAccount` for a Batch Account.
|
||||||
|
- The function that retrieves the data from Azure using the Azure SDK for Go client and set all the values related to the data source. This function is named by convention dataSourceArm*NAME_OF_THE_DATA_SOURCE*Read, for example `dataSourceArmBatchAccountRead` for a Batch Account.
|
||||||
|
|
||||||
|
This function takes a `schema.ResourceData` in parameter. You can get the name of the object to retrieve and any property that is defined by the user on that object:
|
||||||
|
|
||||||
|
```go
|
||||||
|
resourceGroup := d.Get("resource_group_name").(string)
|
||||||
|
name := d.Get("name").(string)
|
||||||
|
```
|
||||||
|
|
||||||
|
You can get a reference on any Azure SDK for Go client registered in the `client.go` using:
|
||||||
|
|
||||||
|
```go
|
||||||
|
client := meta.(*clients.Client).Batch.AccountClient
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, you can set values retrieve from Azure on the same object, using the `Set` function:
|
||||||
|
|
||||||
|
```go
|
||||||
|
d.Set("account_endpoint", resp.AccountEndpoint)
|
||||||
|
```
|
||||||
|
|
||||||
|
You can check the whole definition of the Azure Batch Account data source [here](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/services/batch/batch_account_data_source.go).
|
||||||
|
|
||||||
|
Once your data source is defined, you need to register it into the data sources map in the `registration.go` file:
|
||||||
|
|
||||||
|
```go
|
||||||
|
func (r Registration) SupportedDataSources() map[string]*schema.Resource {
|
||||||
|
return map[string]*schema.Resource{
|
||||||
|
"azurerm_batch_account": dataSourceArmBatchAccount(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Developing a resource
|
||||||
|
|
||||||
|
Developing a resource is really similar to developing a data source. Instead of having only a function to read the data from Azure, it also offers the possibility to write functions to create, update and delete the resource. Apart from that, concepts are the same:
|
||||||
|
|
||||||
|
- The file is named using the convention: *name_of_resource*_resource.go
|
||||||
|
- One function to define the schema of the resource, named by convention resourceArm*NAME_OF_RESOURCE*, for example `resourceArmBatchAccount`.
|
||||||
|
- One function to create the resource, named by convention resourceArm*NAME_OF_RESOURCE*Create, for example `resourceArmBatchAccountCreate`.
|
||||||
|
- One function to read the resource, named by convention resourceArm*NAME_OF_RESOURCE*Read, for example `resourceArmBatchAccountRead`.
|
||||||
|
- One function to update the resource, named by convention resourceArm*NAME_OF_RESOURCE*Update, for example `resourceArmBatchAccountUpdate`.
|
||||||
|
- One function to delete the resource, named by convention resourceArm*NAME_OF_RESOURCE*Delete, for example `resourceArmBatchAccountDelete`.
|
||||||
|
|
||||||
|
The [Azure Batch Account resource](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/services/batch/batch_account_resource.go) is a good and simple example to understand the flow.
|
||||||
|
|
||||||
|
Once your resource is defined, you need to register it into the resources map in the `registration.go` file:
|
||||||
|
|
||||||
|
```go
|
||||||
|
func (r Registration) SupportedResources() map[string]*schema.Resource {
|
||||||
|
return map[string]*schema.Resource{
|
||||||
|
"azurerm_batch_account": resourceArmBatchAccount(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Acceptance tests
|
||||||
|
|
||||||
|
Acceptance tests are tests that will run live on your Azure subscription to validate that your resource/data source is working as expected. Each resource/data source should have its own set of acceptance tests that will run independently of each other.
|
||||||
|
|
||||||
|
All tests for a given resource/data source are located in the `test` folder which is a sub folder of the service folder. The file name for the tests will be exactly the same as the resource/data source with the addition of the `_test.go` suffix. For example, if you created a data source for `batch account`, the data source file would be named **batch_account_data_source.go** and the test file would have the name **batch_account_data_source_test.go**.
|
||||||
|
|
||||||
|
You can find examples of tests for Azure Batch Account data source [here](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/services/batch/batch_account_data_source_test.go) and Azure Batch Account resource [here](https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/services/batch/batch_account_resource_test.go).
|
||||||
|
|
||||||
|
Please refer to the above section to learn how to run the acceptance tests on your computer.
|
||||||
|
|
BIN
provider/assets/code-debug-breakpoint.png
Normal file
BIN
provider/assets/code-debug-breakpoint.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 208 KiB |
BIN
provider/assets/code-install-go-tools-all.png
Normal file
BIN
provider/assets/code-install-go-tools-all.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
BIN
provider/assets/code-install-go-tools-wait.png
Normal file
BIN
provider/assets/code-install-go-tools-wait.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
provider/assets/code-install-go-tools.png
Normal file
BIN
provider/assets/code-install-go-tools.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
BIN
provider/assets/ms-vscode-go.png
Normal file
BIN
provider/assets/ms-vscode-go.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 128 KiB |
1
provider/terraform-provider-azurerm
Submodule
1
provider/terraform-provider-azurerm
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 14c2a086f9d28b84a6ae0939d7606fa46400c9d7
|
1105
quickstart/101-aci-linuxcontainer-public-ip/TestRecord.md
Normal file
1105
quickstart/101-aci-linuxcontainer-public-ip/TestRecord.md
Normal file
File diff suppressed because it is too large
Load Diff
36
quickstart/101-aci-linuxcontainer-public-ip/main.tf
Normal file
36
quickstart/101-aci-linuxcontainer-public-ip/main.tf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
location = var.resource_group_location
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "container_name" {
|
||||||
|
length = 25
|
||||||
|
lower = true
|
||||||
|
upper = false
|
||||||
|
special = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_container_group" "container" {
|
||||||
|
name = "${var.container_group_name_prefix}-${random_string.container_name.result}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
ip_address_type = "Public"
|
||||||
|
os_type = "Linux"
|
||||||
|
restart_policy = var.restart_policy
|
||||||
|
|
||||||
|
container {
|
||||||
|
name = "${var.container_name_prefix}-${random_string.container_name.result}"
|
||||||
|
image = var.image
|
||||||
|
cpu = var.cpu_cores
|
||||||
|
memory = var.memory_in_gb
|
||||||
|
|
||||||
|
ports {
|
||||||
|
port = var.port
|
||||||
|
protocol = "TCP"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
quickstart/101-aci-linuxcontainer-public-ip/outputs.tf
Normal file
3
quickstart/101-aci-linuxcontainer-public-ip/outputs.tf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
output "container_ipv4_address" {
|
||||||
|
value = azurerm_container_group.container.ip_address
|
||||||
|
}
|
16
quickstart/101-aci-linuxcontainer-public-ip/providers.tf
Normal file
16
quickstart/101-aci-linuxcontainer-public-ip/providers.tf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">=1.0"
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
provider "azurerm" {
|
||||||
|
features {}
|
||||||
|
}
|
26
quickstart/101-aci-linuxcontainer-public-ip/readme.md
Normal file
26
quickstart/101-aci-linuxcontainer-public-ip/readme.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Azure Container Instance with public IP
|
||||||
|
|
||||||
|
This template deploys an Azure Container Instance with a public IP address.
|
||||||
|
|
||||||
|
## Terraform resource types
|
||||||
|
|
||||||
|
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
|
||||||
|
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
|
||||||
|
- [random_string](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string)
|
||||||
|
- [azurerm_container_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/container_group)
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default |
|
||||||
|
|-|-|-|
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
| `image` | Container image to deploy. | mcr.microsoft.com/azuredocs/aci-helloworld" |
|
||||||
|
| `port` | Port to open on the container and the public IP address. | 80 |
|
||||||
|
| `cpu_cores` | Quantity of CPU cores to allocate to the container. | 1 |
|
||||||
|
| `memory_in_gb` | Amount of memory to allocate to the container in gigabytes. | 2 |
|
||||||
|
| `restart_policy` | Behavior of Azure runtime if container has stopped. | Always |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
To see how to run this example, see [Create an Azure Container Instance with a public IP address using Terraform](https://learn.microsoft.com/azure/container-instances/container-instances-quickstart-terraform).
|
57
quickstart/101-aci-linuxcontainer-public-ip/variables.tf
Normal file
57
quickstart/101-aci-linuxcontainer-public-ip/variables.tf
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
variable "resource_group_location" {
|
||||||
|
type = string
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location for all resources."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "container_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
description = "Prefix of the container group name that's combined with a random value so name is unique in your Azure subscription."
|
||||||
|
default = "acigroup"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "container_name_prefix" {
|
||||||
|
type = string
|
||||||
|
description = "Prefix of the container name that's combined with a random value so name is unique in your Azure subscription."
|
||||||
|
default = "aci"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "image" {
|
||||||
|
type = string
|
||||||
|
description = "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
|
||||||
|
default = "mcr.microsoft.com/azuredocs/aci-helloworld"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "port" {
|
||||||
|
type = number
|
||||||
|
description = "Port to open on the container and the public IP address."
|
||||||
|
default = 80
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "cpu_cores" {
|
||||||
|
type = number
|
||||||
|
description = "The number of CPU cores to allocate to the container."
|
||||||
|
default = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "memory_in_gb" {
|
||||||
|
type = number
|
||||||
|
description = "The amount of memory to allocate to the container in gigabytes."
|
||||||
|
default = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "restart_policy" {
|
||||||
|
type = string
|
||||||
|
description = "The behavior of Azure runtime if container has stopped."
|
||||||
|
default = "Always"
|
||||||
|
validation {
|
||||||
|
condition = contains(["Always", "Never", "OnFailure"], var.restart_policy)
|
||||||
|
error_message = "The restart_policy must be one of the following: Always, Never, OnFailure."
|
||||||
|
}
|
||||||
|
}
|
45
quickstart/101-ai-studio/README.md
Normal file
45
quickstart/101-ai-studio/README.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# Azure AI Studio
|
||||||
|
|
||||||
|
This deployment configuration specifies an [Azure AI hub](https://learn.microsoft.com/en-us/azure/ai-studio/concepts/ai-resources),
|
||||||
|
and its associated resources including Azure Key Vault, Azure Storage. You can optionally provision and attach Azure Application Insights and Azure Container Registry.
|
||||||
|
|
||||||
|
This configuration describes the minimal set of resources you require to get started with Azure AI Studio.
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
| Terraform Resource Type | Description |
|
||||||
|
| - | - |
|
||||||
|
| `azurerm_resource_group` | The resource group all resources get deployed into. |
|
||||||
|
| `azurerm_key_vault` | An Azure Key Vault instance associated to the Azure Machine Learning workspace. |
|
||||||
|
| `azurerm_storage_account` | An Azure Storage instance associated to the Azure Machine Learning workspace. |
|
||||||
|
| `azurerm_application_insights` | An Azure Application Insights instance associated to the Azure Machine Learning workspace. |
|
||||||
|
| `azurerm_container_registry` | An Azure Container Registry instance associated to the Azure Machine Learning workspace. |
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default |
|
||||||
|
| ---- | ----------- | ------- |
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
| `prefix` | This variable is used to name the hub, project, and dependent resources. | ai |
|
||||||
|
| `sku` | The SKU for AI Services resources | S0
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
After git cloning the repo, run the following commands after having docker running on your machine.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
terraform init
|
||||||
|
|
||||||
|
az login
|
||||||
|
|
||||||
|
terraform plan -out demo.tfplan
|
||||||
|
|
||||||
|
terraform apply "demo.tfplan"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common mistakes
|
||||||
|
|
||||||
|
1. Make sure docker is running
|
||||||
|
1. Make sure to have logged into your Azure Subscription by running ```az login```.
|
||||||
|
1. Ensure that you have the correct RBAC permissions for in your subscription, hub, and project.
|
324
quickstart/101-ai-studio/TestRecord.md
Normal file
324
quickstart/101-ai-studio/TestRecord.md
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
## 03 Nov 24 02:22 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v2.0.1
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Oct 24 00:30 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v2.0.1
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 20 Oct 24 02:31 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13 Oct 24 02:02 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06 Oct 24 00:55 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 05:10 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 02:51 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 00:11 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Sep 24 07:07 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 22 Sep 24 00:15 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Sep 24 03:30 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 08 Sep 24 02:33 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Sep 24 02:35 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 25 Aug 24 02:22 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Aug 24 02:25 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11 Aug 24 02:09 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.14.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.115.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04 Aug 24 02:13 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.14.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.114.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Aug 24 03:14 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.14.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.113.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
160
quickstart/101-ai-studio/main.tf
Normal file
160
quickstart/101-ai-studio/main.tf
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
// RESOURCE GROUP
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
location = var.resource_group_location
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
}
|
||||||
|
|
||||||
|
data "azurerm_client_config" "current" {
|
||||||
|
}
|
||||||
|
|
||||||
|
// STORAGE ACCOUNT
|
||||||
|
resource "azurerm_storage_account" "default" {
|
||||||
|
name = "${var.prefix}storage${random_string.suffix.result}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
account_tier = "Standard"
|
||||||
|
account_replication_type = "GRS"
|
||||||
|
allow_nested_items_to_be_public = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// KEY VAULT
|
||||||
|
resource "azurerm_key_vault" "default" {
|
||||||
|
name = "${var.prefix}keyvault${random_string.suffix.result}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
tenant_id = data.azurerm_client_config.current.tenant_id
|
||||||
|
sku_name = "standard"
|
||||||
|
purge_protection_enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// AzAPI AIServices
|
||||||
|
resource "azapi_resource" "AIServicesResource"{
|
||||||
|
type = "Microsoft.CognitiveServices/accounts@2023-10-01-preview"
|
||||||
|
name = "AIServicesResource${random_string.suffix.result}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
parent_id = azurerm_resource_group.rg.id
|
||||||
|
|
||||||
|
identity {
|
||||||
|
type = "SystemAssigned"
|
||||||
|
}
|
||||||
|
|
||||||
|
body = jsonencode({
|
||||||
|
name = "AIServicesResource${random_string.suffix.result}"
|
||||||
|
properties = {
|
||||||
|
//restore = true
|
||||||
|
customSubDomainName = "${random_string.suffix.result}domain"
|
||||||
|
apiProperties = {
|
||||||
|
statisticsEnabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
kind = "AIServices"
|
||||||
|
sku = {
|
||||||
|
name = var.sku
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
response_export_values = ["*"]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Azure AI Hub
|
||||||
|
resource "azapi_resource" "hub" {
|
||||||
|
type = "Microsoft.MachineLearningServices/workspaces@2024-04-01-preview"
|
||||||
|
name = "${random_pet.rg_name.id}-aih"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
parent_id = azurerm_resource_group.rg.id
|
||||||
|
|
||||||
|
identity {
|
||||||
|
type = "SystemAssigned"
|
||||||
|
}
|
||||||
|
|
||||||
|
body = jsonencode({
|
||||||
|
properties = {
|
||||||
|
description = "This is my Azure AI hub"
|
||||||
|
friendlyName = "My Hub"
|
||||||
|
storageAccount = azurerm_storage_account.default.id
|
||||||
|
keyVault = azurerm_key_vault.default.id
|
||||||
|
|
||||||
|
/* Optional: To enable these field, the corresponding dependent resources need to be uncommented.
|
||||||
|
applicationInsight = azurerm_application_insights.default.id
|
||||||
|
containerRegistry = azurerm_container_registry.default.id
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*Optional: To enable Customer Managed Keys, the corresponding
|
||||||
|
encryption = {
|
||||||
|
status = var.encryption_status
|
||||||
|
keyVaultProperties = {
|
||||||
|
keyVaultArmId = azurerm_key_vault.default.id
|
||||||
|
keyIdentifier = var.cmk_keyvault_key_uri
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
kind = "hub"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Azure AI Project
|
||||||
|
resource "azapi_resource" "project" {
|
||||||
|
type = "Microsoft.MachineLearningServices/workspaces@2024-04-01-preview"
|
||||||
|
name = "my-ai-project${random_string.suffix.result}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
parent_id = azurerm_resource_group.rg.id
|
||||||
|
|
||||||
|
identity {
|
||||||
|
type = "SystemAssigned"
|
||||||
|
}
|
||||||
|
|
||||||
|
body = jsonencode({
|
||||||
|
properties = {
|
||||||
|
description = "This is my Azure AI PROJECT"
|
||||||
|
friendlyName = "My Project"
|
||||||
|
hubResourceId = azapi_resource.hub.id
|
||||||
|
}
|
||||||
|
kind = "project"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// AzAPI AI Services Connection
|
||||||
|
resource "azapi_resource" "AIServicesConnection" {
|
||||||
|
type = "Microsoft.MachineLearningServices/workspaces/connections@2024-04-01-preview"
|
||||||
|
name = "Default_AIServices${random_string.suffix.result}"
|
||||||
|
parent_id = azapi_resource.hub.id
|
||||||
|
|
||||||
|
body = jsonencode({
|
||||||
|
properties = {
|
||||||
|
category = "AIServices",
|
||||||
|
target = jsondecode(azapi_resource.AIServicesResource.output).properties.endpoint,
|
||||||
|
authType = "AAD",
|
||||||
|
isSharedToAll = true,
|
||||||
|
metadata = {
|
||||||
|
ApiType = "Azure",
|
||||||
|
ResourceId = azapi_resource.AIServicesResource.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
response_export_values = ["*"]
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The following resources are OPTIONAL.
|
||||||
|
// APPLICATION INSIGHTS
|
||||||
|
resource "azurerm_application_insights" "default" {
|
||||||
|
name = "${var.prefix}appinsights${random_string.suffix.result}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
application_type = "web"
|
||||||
|
}
|
||||||
|
|
||||||
|
// CONTAINER REGISTRY
|
||||||
|
resource "azurerm_container_registry" "default" {
|
||||||
|
name = "${var.prefix}contreg${random_string.suffix.result}"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
sku = "premium"
|
||||||
|
admin_enabled = true
|
||||||
|
}
|
||||||
|
*/
|
11
quickstart/101-ai-studio/outputs.tf
Normal file
11
quickstart/101-ai-studio/outputs.tf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
output "resource_group_name" {
|
||||||
|
value = azurerm_resource_group.rg.id
|
||||||
|
}
|
||||||
|
|
||||||
|
output "workspace_name" {
|
||||||
|
value = azapi_resource.project.id
|
||||||
|
}
|
||||||
|
|
||||||
|
output "endpoint" {
|
||||||
|
value = jsondecode(azapi_resource.AIServicesResource.output).properties.endpoint
|
||||||
|
}
|
33
quickstart/101-ai-studio/providers.tf
Normal file
33
quickstart/101-ai-studio/providers.tf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">= 1.0"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
azapi = {
|
||||||
|
source = "azure/azapi"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azurerm" {
|
||||||
|
features {
|
||||||
|
key_vault {
|
||||||
|
recover_soft_deleted_key_vaults = false
|
||||||
|
purge_soft_delete_on_destroy = false
|
||||||
|
purge_soft_deleted_keys_on_destroy = false
|
||||||
|
}
|
||||||
|
resource_group {
|
||||||
|
prevent_deletion_if_contains_resources = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azapi" {
|
||||||
|
}
|
40
quickstart/101-ai-studio/variables.tf
Normal file
40
quickstart/101-ai-studio/variables.tf
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
variable "resource_group_location" {
|
||||||
|
type = string
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location of the resource group."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "prefix" {
|
||||||
|
type = string
|
||||||
|
description="This variable is used to name the hub, project, and dependent resources."
|
||||||
|
default = "ai"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "sku" {
|
||||||
|
type = string
|
||||||
|
description = "The sku name of the Azure Analysis Services server to create. Choose from: B1, B2, D1, S0, S1, S2, S3, S4, S8, S9. Some skus are region specific. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region"
|
||||||
|
default = "S0"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "suffix" {
|
||||||
|
length = 4
|
||||||
|
special = false
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Optional: For Customer Managed Keys, uncomment this part AND the corresponding section in main.tf
|
||||||
|
variable "cmk_keyvault_key_uri" {
|
||||||
|
description = "Key vault uri to access the encryption key."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "encryption_status" {
|
||||||
|
description = "Indicates whether or not the encryption is enabled for the workspace."
|
||||||
|
default = "Enabled"
|
||||||
|
}
|
||||||
|
*/
|
25
quickstart/101-aks-cluster-windows/README.md
Normal file
25
quickstart/101-aks-cluster-windows/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Windows-based Azure Kubernetes Service (AKS) cluster
|
||||||
|
|
||||||
|
This template deploys an AKS cluster with Windows nodes.
|
||||||
|
|
||||||
|
## Terraform resource types
|
||||||
|
|
||||||
|
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
|
||||||
|
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
|
||||||
|
- [random_string](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string)
|
||||||
|
- [azurerm_virtual_network](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_network)
|
||||||
|
- [azurerm_kubernetes_cluster](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster)
|
||||||
|
- [azurerm_kubernetes_cluster_node_pool](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster_node_pool)
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default |
|
||||||
|
|-|-|-|
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
| `node_count_linux` | Initial quantity of Linux nodes for the node pool. | 1 |
|
||||||
|
| `node_count_windows` | Initial quantity of Windows nodes for the node pool. | 1 |
|
||||||
|
| `admin_username` | Admin username for the Windows node pool. | azureuser |
|
||||||
|
| `admin_password` | Admin password for the Windows node pool. | Passw0rd1234Us! |
|
||||||
|
|
||||||
|
## Example
|
306
quickstart/101-aks-cluster-windows/TestRecord.md
Normal file
306
quickstart/101-aks-cluster-windows/TestRecord.md
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
## 03 Nov 24 03:44 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Oct 24 00:39 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 20 Oct 24 02:22 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13 Oct 24 02:09 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06 Oct 24 00:58 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 05:14 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 02:51 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 00:11 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Sep 24 07:12 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 22 Sep 24 00:14 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Sep 24 03:30 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 08 Sep 24 02:31 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Sep 24 02:36 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 25 Aug 24 02:23 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Aug 24 02:30 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11 Aug 24 02:14 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.115.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04 Aug 24 02:27 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.114.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Aug 24 03:15 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.113.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
73
quickstart/101-aks-cluster-windows/main.tf
Normal file
73
quickstart/101-aks-cluster-windows/main.tf
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# Generate random resource group name
|
||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
location = var.resource_group_location
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_pet" "azurerm_kubernetes_cluster_name" {
|
||||||
|
prefix = "cluster"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_pet" "azurerm_kubernetes_cluster_dns_prefix" {
|
||||||
|
prefix = "dns"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "azurerm_kubernetes_cluster_node_pool" {
|
||||||
|
length = 6
|
||||||
|
special = false
|
||||||
|
numeric = false
|
||||||
|
lower = true
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_virtual_network" "vnet" {
|
||||||
|
name = "myvnet"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
address_space = ["10.1.0.0/16"]
|
||||||
|
|
||||||
|
subnet {
|
||||||
|
name = "subnet1"
|
||||||
|
address_prefix = "10.1.1.0/24"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_kubernetes_cluster" "aks" {
|
||||||
|
name = random_pet.azurerm_kubernetes_cluster_name.id
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
dns_prefix = random_pet.azurerm_kubernetes_cluster_dns_prefix.id
|
||||||
|
|
||||||
|
identity {
|
||||||
|
type = "SystemAssigned"
|
||||||
|
}
|
||||||
|
|
||||||
|
default_node_pool {
|
||||||
|
name = "agentpool"
|
||||||
|
vm_size = "Standard_D2_v2"
|
||||||
|
node_count = var.node_count_linux
|
||||||
|
vnet_subnet_id = element(tolist(azurerm_virtual_network.vnet.subnet), 0).id
|
||||||
|
}
|
||||||
|
|
||||||
|
windows_profile {
|
||||||
|
admin_username = var.admin_username
|
||||||
|
admin_password = var.admin_password
|
||||||
|
}
|
||||||
|
|
||||||
|
network_profile {
|
||||||
|
network_plugin = "azure"
|
||||||
|
load_balancer_sku = "standard"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_kubernetes_cluster_node_pool" "win" {
|
||||||
|
name = random_string.azurerm_kubernetes_cluster_node_pool.result
|
||||||
|
kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
|
||||||
|
vm_size = "Standard_D4s_v3"
|
||||||
|
node_count = var.node_count_windows
|
||||||
|
os_type = "Windows"
|
||||||
|
}
|
20
quickstart/101-aks-cluster-windows/outputs.tf
Normal file
20
quickstart/101-aks-cluster-windows/outputs.tf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
output "resource_group_name" {
|
||||||
|
value = azurerm_resource_group.rg.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "kubernetes_cluster_name" {
|
||||||
|
value = azurerm_kubernetes_cluster.aks.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "kubernetes_cluster_dns_prefix" {
|
||||||
|
value = azurerm_kubernetes_cluster.aks.dns_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
output "kubernetes_cluster_node_pool_name" {
|
||||||
|
value = azurerm_kubernetes_cluster_node_pool.win.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "kubernetes_cluster_kube_config_raw" {
|
||||||
|
value = azurerm_kubernetes_cluster.aks.kube_config_raw
|
||||||
|
sensitive = true
|
||||||
|
}
|
19
quickstart/101-aks-cluster-windows/providers.tf
Normal file
19
quickstart/101-aks-cluster-windows/providers.tf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">= 1.0"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azurerm" {
|
||||||
|
features {
|
||||||
|
}
|
||||||
|
}
|
35
quickstart/101-aks-cluster-windows/variables.tf
Normal file
35
quickstart/101-aks-cluster-windows/variables.tf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
variable "resource_group_location" {
|
||||||
|
type = string
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location of the resource group."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "node_count_linux" {
|
||||||
|
type = number
|
||||||
|
description = "The initial quantity of Linux nodes for the node pool."
|
||||||
|
default = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "node_count_windows" {
|
||||||
|
type = number
|
||||||
|
description = "The initial quantity of Windows nodes for the node pool."
|
||||||
|
default = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "admin_username" {
|
||||||
|
type = string
|
||||||
|
description = "The admin username for the Windows node pool."
|
||||||
|
default = "azureuser"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "admin_password" {
|
||||||
|
type = string
|
||||||
|
description = "The admin password for the Windows node pool."
|
||||||
|
default = "Passw0rd1234Us!"
|
||||||
|
}
|
19
quickstart/101-aks-standard-lb-and-vmss/README.md
Normal file
19
quickstart/101-aks-standard-lb-and-vmss/README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Aure Kubernetes Service (AKS) with standard load balancer and Virtual Machine Scale Sets (VMSS)
|
||||||
|
|
||||||
|
This template deploys an AKS cluster a standard load balancer and Virtual Machine Scale Sets (VMSS)
|
||||||
|
|
||||||
|
## Terraform resource types
|
||||||
|
|
||||||
|
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
|
||||||
|
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
|
||||||
|
- [random_string](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string)
|
||||||
|
- [azurerm_kubernetes_cluster](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster)
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default |
|
||||||
|
|-|-|-|
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
|
||||||
|
## Example
|
306
quickstart/101-aks-standard-lb-and-vmss/TestRecord.md
Normal file
306
quickstart/101-aks-standard-lb-and-vmss/TestRecord.md
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
## 03 Nov 24 02:19 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Oct 24 00:34 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 20 Oct 24 02:18 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13 Oct 24 01:57 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06 Oct 24 00:52 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 05:03 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 02:50 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 00:11 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Sep 24 07:08 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 22 Sep 24 00:13 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Sep 24 03:30 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 08 Sep 24 02:21 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Sep 24 02:15 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 25 Aug 24 02:16 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Aug 24 02:18 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11 Aug 24 02:04 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.115.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04 Aug 24 02:09 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.114.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Aug 24 03:08 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.113.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
48
quickstart/101-aks-standard-lb-and-vmss/main.tf
Normal file
48
quickstart/101-aks-standard-lb-and-vmss/main.tf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
location = var.resource_group_location
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "aks_cluster_name" {
|
||||||
|
length = 12
|
||||||
|
special = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_kubernetes_cluster" "aks_cluster" {
|
||||||
|
name = random_string.aks_cluster_name.result
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
dns_prefix = "myakscluster"
|
||||||
|
|
||||||
|
default_node_pool {
|
||||||
|
type = "VirtualMachineScaleSets"
|
||||||
|
name = "default"
|
||||||
|
node_count = 1
|
||||||
|
max_count = 3
|
||||||
|
min_count = 1
|
||||||
|
vm_size = "Standard_DS2_v2"
|
||||||
|
enable_auto_scaling = true
|
||||||
|
upgrade_settings {
|
||||||
|
drain_timeout_in_minutes = 90
|
||||||
|
max_surge = "10%"
|
||||||
|
node_soak_duration_in_minutes = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
network_profile {
|
||||||
|
network_plugin = "azure"
|
||||||
|
load_balancer_sku = "standard"
|
||||||
|
}
|
||||||
|
|
||||||
|
identity {
|
||||||
|
type = "SystemAssigned"
|
||||||
|
}
|
||||||
|
|
||||||
|
tags = {
|
||||||
|
Environment = "Production"
|
||||||
|
}
|
||||||
|
}
|
7
quickstart/101-aks-standard-lb-and-vmss/outputs.tf
Normal file
7
quickstart/101-aks-standard-lb-and-vmss/outputs.tf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
output "resource_group_name" {
|
||||||
|
value = azurerm_resource_group.rg.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "aks_cluster_name" {
|
||||||
|
value = azurerm_kubernetes_cluster.aks_cluster.name
|
||||||
|
}
|
16
quickstart/101-aks-standard-lb-and-vmss/providers.tf
Normal file
16
quickstart/101-aks-standard-lb-and-vmss/providers.tf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azurerm" {
|
||||||
|
features {}
|
||||||
|
}
|
11
quickstart/101-aks-standard-lb-and-vmss/variables.tf
Normal file
11
quickstart/101-aks-standard-lb-and-vmss/variables.tf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
variable "resource_group_location" {
|
||||||
|
type = string
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location of the resource group."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
|
||||||
|
}
|
1182
quickstart/101-analysis-services-create/TestRecord.md
Normal file
1182
quickstart/101-analysis-services-create/TestRecord.md
Normal file
File diff suppressed because it is too large
Load Diff
29
quickstart/101-analysis-services-create/main.tf
Normal file
29
quickstart/101-analysis-services-create/main.tf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
location = var.resource_group_location
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "azurerm_analysis_services_server_name" {
|
||||||
|
length = 25
|
||||||
|
upper = false
|
||||||
|
numeric = false
|
||||||
|
special = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_analysis_services_server" "server" {
|
||||||
|
name = random_string.azurerm_analysis_services_server_name.result
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
sku = var.sku
|
||||||
|
backup_blob_container_uri = var.backup_blob_container_uri
|
||||||
|
|
||||||
|
ipv4_firewall_rule {
|
||||||
|
name = "AllowFromAll"
|
||||||
|
range_start = "0.0.0.0"
|
||||||
|
range_end = "255.255.255.255"
|
||||||
|
}
|
||||||
|
}
|
7
quickstart/101-analysis-services-create/outputs.tf
Normal file
7
quickstart/101-analysis-services-create/outputs.tf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
output "resource_group_name" {
|
||||||
|
value = azurerm_resource_group.rg.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "analysis_services_server_name" {
|
||||||
|
value = azurerm_analysis_services_server.server.name
|
||||||
|
}
|
16
quickstart/101-analysis-services-create/providers.tf
Normal file
16
quickstart/101-analysis-services-create/providers.tf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">=0.12"
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
provider "azurerm" {
|
||||||
|
features {}
|
||||||
|
}
|
19
quickstart/101-analysis-services-create/readme.md
Normal file
19
quickstart/101-analysis-services-create/readme.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Azure Analysis Services server
|
||||||
|
|
||||||
|
This template deploys an Azure Analysis Services server.
|
||||||
|
|
||||||
|
## Terraform resource types
|
||||||
|
|
||||||
|
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
|
||||||
|
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
|
||||||
|
- [azurerm_analysis_services_server](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/analysis_services_server)
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default |
|
||||||
|
|-|-|-|
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
| `server_name` | Name of the Azure Analysis Services server. | |
|
||||||
|
| `sku` | SKU name of the Azure Analysis Services server to create. | S0 |
|
||||||
|
| `backup_blob_container_uri` | SAS URI to a private Azure Blob Storage container with read, write and list permissions. | null |
|
23
quickstart/101-analysis-services-create/variables.tf
Normal file
23
quickstart/101-analysis-services-create/variables.tf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
variable "resource_group_location" {
|
||||||
|
type = string
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location for all resources."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "sku" {
|
||||||
|
type = string
|
||||||
|
description = "The sku name of the Azure Analysis Services server to create. Choose from: B1, B2, D1, S0, S1, S2, S3, S4, S8, S9. Some skus are region specific. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region"
|
||||||
|
default = "S0"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "backup_blob_container_uri" {
|
||||||
|
type = string
|
||||||
|
description = "The SAS URI to a private Azure Blob Storage container with read, write and list permissions. Required only if you intend to use the backup/restore functionality. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-backup"
|
||||||
|
default = null
|
||||||
|
}
|
22
quickstart/101-app-service-backup/README.md
Normal file
22
quickstart/101-app-service-backup/README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Azure Windows Web App with Backup
|
||||||
|
|
||||||
|
This template deploys an Azure Windows Web App with a backup configured.
|
||||||
|
|
||||||
|
## Terraform resource types
|
||||||
|
|
||||||
|
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
|
||||||
|
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
|
||||||
|
- [random_string](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string)
|
||||||
|
- [azurerm_storage_account](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account)
|
||||||
|
- [azurerm_storage_container](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_container)
|
||||||
|
- [azurerm_service_plan](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/service_plan)
|
||||||
|
- [azurerm_windows_web_app](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/windows_web_app)
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default value |
|
||||||
|
|-|-|-|
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
|
||||||
|
## Example
|
306
quickstart/101-app-service-backup/TestRecord.md
Normal file
306
quickstart/101-app-service-backup/TestRecord.md
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
## 03 Nov 24 02:00 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Oct 24 00:25 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 20 Oct 24 01:23 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13 Oct 24 01:53 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06 Oct 24 00:43 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 05:00 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 02:51 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 00:11 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Sep 24 06:58 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 22 Sep 24 00:13 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Sep 24 03:29 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 08 Sep 24 02:17 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Sep 24 02:17 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 25 Aug 24 02:11 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Aug 24 02:13 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11 Aug 24 01:55 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.115.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04 Aug 24 01:59 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.114.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Aug 24 03:04 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.113.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
121
quickstart/101-app-service-backup/main.tf
Normal file
121
quickstart/101-app-service-backup/main.tf
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
location = var.resource_group_location
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "storage_account_name" {
|
||||||
|
length = 8
|
||||||
|
lower = true
|
||||||
|
numeric = false
|
||||||
|
special = false
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_storage_account" "example" {
|
||||||
|
name = random_string.storage_account_name.result
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
account_tier = "Standard"
|
||||||
|
account_replication_type = "LRS"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "storage_container_name" {
|
||||||
|
length = 8
|
||||||
|
lower = true
|
||||||
|
numeric = false
|
||||||
|
special = false
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_storage_container" "example" {
|
||||||
|
name = random_string.storage_container_name.result
|
||||||
|
storage_account_name = azurerm_storage_account.example.name
|
||||||
|
container_access_type = "private"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "service_plan_name" {
|
||||||
|
length = 8
|
||||||
|
lower = true
|
||||||
|
numeric = false
|
||||||
|
special = false
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_service_plan" "example" {
|
||||||
|
name = random_string.service_plan_name.result
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
os_type = "Windows"
|
||||||
|
sku_name = "S1"
|
||||||
|
}
|
||||||
|
|
||||||
|
data "azurerm_storage_account_sas" "example" {
|
||||||
|
connection_string = azurerm_storage_account.example.primary_connection_string
|
||||||
|
https_only = true
|
||||||
|
|
||||||
|
resource_types {
|
||||||
|
service = false
|
||||||
|
container = false
|
||||||
|
object = true
|
||||||
|
}
|
||||||
|
|
||||||
|
services {
|
||||||
|
blob = true
|
||||||
|
queue = false
|
||||||
|
table = false
|
||||||
|
file = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Please change the start_date variable (in variables.tf) to the appropriate
|
||||||
|
# value for your environment.
|
||||||
|
start = formatdate(var.start_date, timestamp())
|
||||||
|
expiry = formatdate(var.start_date, timeadd(timestamp(), "8765h"))
|
||||||
|
|
||||||
|
permissions {
|
||||||
|
read = false
|
||||||
|
write = true
|
||||||
|
delete = false
|
||||||
|
list = false
|
||||||
|
add = false
|
||||||
|
create = false
|
||||||
|
update = false
|
||||||
|
process = false
|
||||||
|
tag = false
|
||||||
|
filter = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "windows_web_app_name" {
|
||||||
|
length = 8
|
||||||
|
lower = true
|
||||||
|
numeric = false
|
||||||
|
special = false
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_windows_web_app" "example" {
|
||||||
|
name = random_string.windows_web_app_name.result
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
service_plan_id = azurerm_service_plan.example.id
|
||||||
|
|
||||||
|
backup {
|
||||||
|
name = "Example"
|
||||||
|
storage_account_url = "https://${azurerm_storage_account.example.name}.blob.core.windows.net/${azurerm_storage_container.example.name}${data.azurerm_storage_account_sas.example.sas}&sr=b"
|
||||||
|
schedule {
|
||||||
|
frequency_interval = 30
|
||||||
|
frequency_unit = "Day"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
site_config {
|
||||||
|
application_stack {
|
||||||
|
dotnet_version = "v6.0"
|
||||||
|
current_stack = "dotnet"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
23
quickstart/101-app-service-backup/outputs.tf
Normal file
23
quickstart/101-app-service-backup/outputs.tf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
output "resource_group_name" {
|
||||||
|
value = azurerm_resource_group.rg.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "storage_account_name" {
|
||||||
|
value = azurerm_storage_account.example.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "storage_container_name" {
|
||||||
|
value = azurerm_storage_container.example.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "service_plan_name" {
|
||||||
|
value = azurerm_service_plan.example.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "windows_web_app_name" {
|
||||||
|
value = azurerm_windows_web_app.example.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "windows_web_app_default_hostname" {
|
||||||
|
value = azurerm_windows_web_app.example.default_hostname
|
||||||
|
}
|
18
quickstart/101-app-service-backup/providers.tf
Normal file
18
quickstart/101-app-service-backup/providers.tf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">=1.0"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azurerm" {
|
||||||
|
features {}
|
||||||
|
}
|
18
quickstart/101-app-service-backup/variables.tf
Normal file
18
quickstart/101-app-service-backup/variables.tf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
type = string
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_location" {
|
||||||
|
type = string
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location of the resource group."
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
variable "start_date" {
|
||||||
|
type = string
|
||||||
|
default = "2024-06-01"
|
||||||
|
description = "Start date."
|
||||||
|
}
|
1255
quickstart/101-application-gateway/TestRecord.md
Normal file
1255
quickstart/101-application-gateway/TestRecord.md
Normal file
File diff suppressed because it is too large
Load Diff
166
quickstart/101-application-gateway/main.tf
Normal file
166
quickstart/101-application-gateway/main.tf
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
resource "random_string" "rg" {
|
||||||
|
length = 8
|
||||||
|
upper = false
|
||||||
|
special = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
name = "101-application-gateway-${random_string.rg.result}"
|
||||||
|
location = "eastus"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_virtual_network" "vnet" {
|
||||||
|
name = "myVNet"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
address_space = ["10.21.0.0/16"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_subnet" "frontend" {
|
||||||
|
name = "myAGSubnet"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
virtual_network_name = azurerm_virtual_network.vnet.name
|
||||||
|
address_prefixes = ["10.21.0.0/24"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_subnet" "backend" {
|
||||||
|
name = "myBackendSubnet"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
virtual_network_name = azurerm_virtual_network.vnet.name
|
||||||
|
address_prefixes = ["10.21.1.0/24"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_public_ip" "pip" {
|
||||||
|
name = "myAGPublicIPAddress"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
allocation_method = "Static"
|
||||||
|
sku = "Standard"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resource "azurerm_application_gateway" "main" {
|
||||||
|
name = "myAppGateway"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
|
||||||
|
sku {
|
||||||
|
name = "Standard_v2"
|
||||||
|
tier = "Standard_v2"
|
||||||
|
capacity = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
gateway_ip_configuration {
|
||||||
|
name = "my-gateway-ip-configuration"
|
||||||
|
subnet_id = azurerm_subnet.frontend.id
|
||||||
|
}
|
||||||
|
|
||||||
|
frontend_port {
|
||||||
|
name = var.frontend_port_name
|
||||||
|
port = 80
|
||||||
|
}
|
||||||
|
|
||||||
|
frontend_ip_configuration {
|
||||||
|
name = var.frontend_ip_configuration_name
|
||||||
|
public_ip_address_id = azurerm_public_ip.pip.id
|
||||||
|
}
|
||||||
|
|
||||||
|
backend_address_pool {
|
||||||
|
name = var.backend_address_pool_name
|
||||||
|
}
|
||||||
|
|
||||||
|
backend_http_settings {
|
||||||
|
name = var.http_setting_name
|
||||||
|
cookie_based_affinity = "Disabled"
|
||||||
|
port = 80
|
||||||
|
protocol = "Http"
|
||||||
|
request_timeout = 60
|
||||||
|
}
|
||||||
|
|
||||||
|
http_listener {
|
||||||
|
name = var.listener_name
|
||||||
|
frontend_ip_configuration_name = var.frontend_ip_configuration_name
|
||||||
|
frontend_port_name = var.frontend_port_name
|
||||||
|
protocol = "Http"
|
||||||
|
}
|
||||||
|
|
||||||
|
request_routing_rule {
|
||||||
|
name = var.request_routing_rule_name
|
||||||
|
rule_type = "Basic"
|
||||||
|
http_listener_name = var.listener_name
|
||||||
|
backend_address_pool_name = var.backend_address_pool_name
|
||||||
|
backend_http_settings_name = var.http_setting_name
|
||||||
|
priority = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_network_interface" "nic" {
|
||||||
|
count = 2
|
||||||
|
name = "nic-${count.index+1}"
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
|
||||||
|
ip_configuration {
|
||||||
|
name = "nic-ipconfig-${count.index+1}"
|
||||||
|
subnet_id = azurerm_subnet.backend.id
|
||||||
|
private_ip_address_allocation = "Dynamic"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_network_interface_application_gateway_backend_address_pool_association" "nic-assoc" {
|
||||||
|
count = 2
|
||||||
|
network_interface_id = azurerm_network_interface.nic[count.index].id
|
||||||
|
ip_configuration_name = "nic-ipconfig-${count.index+1}"
|
||||||
|
backend_address_pool_id = one(azurerm_application_gateway.main.backend_address_pool).id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_password" "password" {
|
||||||
|
length = 16
|
||||||
|
special = true
|
||||||
|
lower = true
|
||||||
|
upper = true
|
||||||
|
numeric = true
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_windows_virtual_machine" "vm" {
|
||||||
|
count = 2
|
||||||
|
name = "myVM${count.index+1}"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
size = "Standard_DS1_v2"
|
||||||
|
admin_username = "azureadmin"
|
||||||
|
admin_password = random_password.password.result
|
||||||
|
|
||||||
|
network_interface_ids = [
|
||||||
|
azurerm_network_interface.nic[count.index].id,
|
||||||
|
]
|
||||||
|
|
||||||
|
os_disk {
|
||||||
|
caching = "ReadWrite"
|
||||||
|
storage_account_type = "Standard_LRS"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
source_image_reference {
|
||||||
|
publisher = "MicrosoftWindowsServer"
|
||||||
|
offer = "WindowsServer"
|
||||||
|
sku = "2019-Datacenter"
|
||||||
|
version = "latest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_virtual_machine_extension" "vm-extensions" {
|
||||||
|
count = 2
|
||||||
|
name = "vm${count.index+1}-ext"
|
||||||
|
virtual_machine_id = azurerm_windows_virtual_machine.vm[count.index].id
|
||||||
|
publisher = "Microsoft.Compute"
|
||||||
|
type = "CustomScriptExtension"
|
||||||
|
type_handler_version = "1.10"
|
||||||
|
|
||||||
|
settings = <<SETTINGS
|
||||||
|
{
|
||||||
|
"commandToExecute": "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"
|
||||||
|
}
|
||||||
|
SETTINGS
|
||||||
|
|
||||||
|
}
|
3
quickstart/101-application-gateway/outputs.tf
Normal file
3
quickstart/101-application-gateway/outputs.tf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
output "gateway_frontend_ip" {
|
||||||
|
value = "http://${azurerm_public_ip.pip.ip_address}"
|
||||||
|
}
|
18
quickstart/101-application-gateway/providers.tf
Normal file
18
quickstart/101-application-gateway/providers.tf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">=1.2"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~> 3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~> 3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azurerm" {
|
||||||
|
features {}
|
||||||
|
}
|
382
quickstart/101-application-gateway/readme.md
Normal file
382
quickstart/101-application-gateway/readme.md
Normal file
@ -0,0 +1,382 @@
|
|||||||
|
# Azure Application Gateway
|
||||||
|
|
||||||
|
This template deploys an [Azure Application Gateway](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/application_gateway) v2 and two Windows Server 2019 Datacenter test servers for the backend pool.
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
| Terraform Resource Type | Description |
|
||||||
|
| - | - |
|
||||||
|
| `azurerm_resource_group` | The resource group all the deployed resources.|
|
||||||
|
| `azurerm_virtual_network` | The virtual network for the application gateway. |
|
||||||
|
| `azurerm_subnet` |The application gateway subnets.|
|
||||||
|
| `azurerm_public_ip` | The application gateway public IP address. |
|
||||||
|
| `azurerm_application_gateway` | The v2 Azure Application Gateway. |
|
||||||
|
| `azurerm_network_interface` | The network interfaces for the test servers. |
|
||||||
|
| `azurerm_network_interface_application_gateway_backend_address_pool_association` | The network interface association to the backend pool. |
|
||||||
|
| `azurerm_virtual_machine_extension` | The VM extension for the test servers to install the Web server. |
|
||||||
|
| `azurerm_windows_virtual_machine` | The VM test servers. |
|
||||||
|
| `random_password` | Random password for the VM test servers. |
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description |
|
||||||
|
|-|-|
|
||||||
|
| `backend_address_pool_name` | Backend pool name |
|
||||||
|
| `frontend_port_name` | Frontend port name|
|
||||||
|
| `frontend_ip_configuration_name` | Frontend IP configuration name |
|
||||||
|
| `http_setting_name` | HTTP setting name |
|
||||||
|
| `listener_name` | Listener name |
|
||||||
|
| `request_routing_rule_name` | Routing rule name|
|
||||||
|
| `redirect_configuration_name` | Redirection configuration name |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ terraform plan -out main.tfplan
|
||||||
|
|
||||||
|
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
|
||||||
|
+ create
|
||||||
|
|
||||||
|
Terraform will perform the following actions:
|
||||||
|
|
||||||
|
# azurerm_application_gateway.network will be created
|
||||||
|
+ resource "azurerm_application_gateway" "network" {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ name = "myAppGateway"
|
||||||
|
+ private_endpoint_connection = (known after apply)
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
|
||||||
|
+ backend_address_pool {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myBackendPool"
|
||||||
|
}
|
||||||
|
|
||||||
|
+ backend_http_settings {
|
||||||
|
+ cookie_based_affinity = "Disabled"
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myHTTPsetting"
|
||||||
|
+ pick_host_name_from_backend_address = false
|
||||||
|
+ port = 80
|
||||||
|
+ probe_id = (known after apply)
|
||||||
|
+ protocol = "Http"
|
||||||
|
+ request_timeout = 60
|
||||||
|
}
|
||||||
|
|
||||||
|
+ frontend_ip_configuration {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myAGIPConfig"
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_address_allocation = (known after apply)
|
||||||
|
+ private_link_configuration_id = (known after apply)
|
||||||
|
+ public_ip_address_id = (known after apply)
|
||||||
|
+ subnet_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
+ frontend_port {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myFrontendPort"
|
||||||
|
+ port = 80
|
||||||
|
}
|
||||||
|
|
||||||
|
+ gateway_ip_configuration {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "my-gateway-ip-configuration"
|
||||||
|
+ subnet_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
+ http_listener {
|
||||||
|
+ frontend_ip_configuration_id = (known after apply)
|
||||||
|
+ frontend_ip_configuration_name = "myAGIPConfig"
|
||||||
|
+ frontend_port_id = (known after apply)
|
||||||
|
+ frontend_port_name = "myFrontendPort"
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myListener"
|
||||||
|
+ protocol = "Http"
|
||||||
|
+ ssl_certificate_id = (known after apply)
|
||||||
|
+ ssl_profile_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
+ request_routing_rule {
|
||||||
|
+ backend_address_pool_id = (known after apply)
|
||||||
|
+ backend_address_pool_name = "myBackendPool"
|
||||||
|
+ backend_http_settings_id = (known after apply)
|
||||||
|
+ backend_http_settings_name = "myHTTPsetting"
|
||||||
|
+ http_listener_id = (known after apply)
|
||||||
|
+ http_listener_name = "myListener"
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myRoutingRule"
|
||||||
|
+ redirect_configuration_id = (known after apply)
|
||||||
|
+ rewrite_rule_set_id = (known after apply)
|
||||||
|
+ rule_type = "Basic"
|
||||||
|
+ url_path_map_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
+ sku {
|
||||||
|
+ capacity = 2
|
||||||
|
+ name = "Standard_v2"
|
||||||
|
+ tier = "Standard_v2"
|
||||||
|
}
|
||||||
|
|
||||||
|
+ ssl_policy {
|
||||||
|
+ cipher_suites = (known after apply)
|
||||||
|
+ disabled_protocols = (known after apply)
|
||||||
|
+ min_protocol_version = (known after apply)
|
||||||
|
+ policy_name = (known after apply)
|
||||||
|
+ policy_type = (known after apply)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_network_interface.nic[0] will be created
|
||||||
|
+ resource "azurerm_network_interface" "nic" {
|
||||||
|
+ applied_dns_servers = (known after apply)
|
||||||
|
+ dns_servers = (known after apply)
|
||||||
|
+ enable_accelerated_networking = false
|
||||||
|
+ enable_ip_forwarding = false
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ internal_dns_name_label = (known after apply)
|
||||||
|
+ internal_domain_name_suffix = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ mac_address = (known after apply)
|
||||||
|
+ name = "nic-1"
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_addresses = (known after apply)
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ virtual_machine_id = (known after apply)
|
||||||
|
|
||||||
|
+ ip_configuration {
|
||||||
|
+ gateway_load_balancer_frontend_ip_configuration_id = (known after apply)
|
||||||
|
+ name = "nic-ipconfig-1"
|
||||||
|
+ primary = (known after apply)
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_address_allocation = "Dynamic"
|
||||||
|
+ private_ip_address_version = "IPv4"
|
||||||
|
+ subnet_id = (known after apply)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_network_interface.nic[1] will be created
|
||||||
|
+ resource "azurerm_network_interface" "nic" {
|
||||||
|
+ applied_dns_servers = (known after apply)
|
||||||
|
+ dns_servers = (known after apply)
|
||||||
|
+ enable_accelerated_networking = false
|
||||||
|
+ enable_ip_forwarding = false
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ internal_dns_name_label = (known after apply)
|
||||||
|
+ internal_domain_name_suffix = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ mac_address = (known after apply)
|
||||||
|
+ name = "nic-2"
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_addresses = (known after apply)
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ virtual_machine_id = (known after apply)
|
||||||
|
|
||||||
|
+ ip_configuration {
|
||||||
|
+ gateway_load_balancer_frontend_ip_configuration_id = (known after apply)
|
||||||
|
+ name = "nic-ipconfig-2"
|
||||||
|
+ primary = (known after apply)
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_address_allocation = "Dynamic"
|
||||||
|
+ private_ip_address_version = "IPv4"
|
||||||
|
+ subnet_id = (known after apply)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_network_interface_application_gateway_backend_address_pool_association.nic-assoc01[0] will be created
|
||||||
|
+ resource "azurerm_network_interface_application_gateway_backend_address_pool_association" "nic-assoc01" {
|
||||||
|
+ backend_address_pool_id = (known after apply)
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ ip_configuration_name = "nic-ipconfig-1"
|
||||||
|
+ network_interface_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_network_interface_application_gateway_backend_address_pool_association.nic-assoc01[1] will be created
|
||||||
|
+ resource "azurerm_network_interface_application_gateway_backend_address_pool_association" "nic-assoc01" {
|
||||||
|
+ backend_address_pool_id = (known after apply)
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ ip_configuration_name = "nic-ipconfig-2"
|
||||||
|
+ network_interface_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_public_ip.pip1 will be created
|
||||||
|
+ resource "azurerm_public_ip" "pip1" {
|
||||||
|
+ allocation_method = "Static"
|
||||||
|
+ availability_zone = (known after apply)
|
||||||
|
+ fqdn = (known after apply)
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ idle_timeout_in_minutes = 4
|
||||||
|
+ ip_address = (known after apply)
|
||||||
|
+ ip_version = "IPv4"
|
||||||
|
+ location = "eastus"
|
||||||
|
+ name = "myAGPublicIPAddress"
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ sku = "Standard"
|
||||||
|
+ sku_tier = "Regional"
|
||||||
|
+ zones = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_resource_group.rg1 will be created
|
||||||
|
+ resource "azurerm_resource_group" "rg1" {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ name = "myResourceGroupAG"
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_subnet.backend will be created
|
||||||
|
+ resource "azurerm_subnet" "backend" {
|
||||||
|
+ address_prefix = (known after apply)
|
||||||
|
+ address_prefixes = [
|
||||||
|
+ "10.21.1.0/24",
|
||||||
|
]
|
||||||
|
+ enforce_private_link_endpoint_network_policies = false
|
||||||
|
+ enforce_private_link_service_network_policies = false
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myBackendSubnet"
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ virtual_network_name = "myVNet"
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_subnet.frontend will be created
|
||||||
|
+ resource "azurerm_subnet" "frontend" {
|
||||||
|
+ address_prefix = (known after apply)
|
||||||
|
+ address_prefixes = [
|
||||||
|
+ "10.21.0.0/24",
|
||||||
|
]
|
||||||
|
+ enforce_private_link_endpoint_network_policies = false
|
||||||
|
+ enforce_private_link_service_network_policies = false
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "myAGSubnet"
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ virtual_network_name = "myVNet"
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_virtual_machine_extension.vm-extensions[0] will be created
|
||||||
|
+ resource "azurerm_virtual_machine_extension" "vm-extensions" {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "vm1-ext"
|
||||||
|
+ publisher = "Microsoft.Compute"
|
||||||
|
+ settings = jsonencode(
|
||||||
|
{
|
||||||
|
+ commandToExecute = "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
+ type = "CustomScriptExtension"
|
||||||
|
+ type_handler_version = "1.10"
|
||||||
|
+ virtual_machine_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_virtual_machine_extension.vm-extensions[1] will be created
|
||||||
|
+ resource "azurerm_virtual_machine_extension" "vm-extensions" {
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ name = "vm2-ext"
|
||||||
|
+ publisher = "Microsoft.Compute"
|
||||||
|
+ settings = jsonencode(
|
||||||
|
{
|
||||||
|
+ commandToExecute = "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
+ type = "CustomScriptExtension"
|
||||||
|
+ type_handler_version = "1.10"
|
||||||
|
+ virtual_machine_id = (known after apply)
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_virtual_network.vnet1 will be created
|
||||||
|
+ resource "azurerm_virtual_network" "vnet1" {
|
||||||
|
+ address_space = [
|
||||||
|
+ "10.21.0.0/16",
|
||||||
|
]
|
||||||
|
+ dns_servers = (known after apply)
|
||||||
|
+ guid = (known after apply)
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ name = "myVNet"
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ subnet = (known after apply)
|
||||||
|
+ vm_protection_enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_windows_virtual_machine.vm[0] will be created
|
||||||
|
+ resource "azurerm_windows_virtual_machine" "vm" {
|
||||||
|
+ admin_password = (sensitive value)
|
||||||
|
+ admin_username = "azureadmin"
|
||||||
|
+ allow_extension_operations = true
|
||||||
|
+ computer_name = (known after apply)
|
||||||
|
+ enable_automatic_updates = true
|
||||||
|
+ extensions_time_budget = "PT1H30M"
|
||||||
|
+ hotpatching_enabled = false
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ max_bid_price = -1
|
||||||
|
+ name = "myVM1"
|
||||||
|
+ network_interface_ids = (known after apply)
|
||||||
|
+ patch_mode = "AutomaticByOS"
|
||||||
|
+ platform_fault_domain = -1
|
||||||
|
+ priority = "Regular"
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_addresses = (known after apply)
|
||||||
|
+ provision_vm_agent = true
|
||||||
|
+ public_ip_address = (known after apply)
|
||||||
|
+ public_ip_addresses = (known after apply)
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ size = "Standard_DS1_v2"
|
||||||
|
+ virtual_machine_id = (known after apply)
|
||||||
|
+ zone = (known after apply)
|
||||||
|
|
||||||
|
+ os_disk {
|
||||||
|
+ caching = "ReadWrite"
|
||||||
|
+ disk_size_gb = (known after apply)
|
||||||
|
+ name = (known after apply)
|
||||||
|
+ storage_account_type = "Standard_LRS"
|
||||||
|
+ write_accelerator_enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
+ source_image_reference {
|
||||||
|
+ offer = "WindowsServer"
|
||||||
|
+ publisher = "MicrosoftWindowsServer"
|
||||||
|
+ sku = "2019-Datacenter"
|
||||||
|
+ version = "latest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# azurerm_windows_virtual_machine.vm[1] will be created
|
||||||
|
+ resource "azurerm_windows_virtual_machine" "vm" {
|
||||||
|
+ admin_password = (sensitive value)
|
||||||
|
+ admin_username = "azureadmin"
|
||||||
|
+ allow_extension_operations = true
|
||||||
|
+ computer_name = (known after apply)
|
||||||
|
+ enable_automatic_updates = true
|
||||||
|
+ extensions_time_budget = "PT1H30M"
|
||||||
|
+ hotpatching_enabled = false
|
||||||
|
+ id = (known after apply)
|
||||||
|
+ location = "eastus"
|
||||||
|
+ max_bid_price = -1
|
||||||
|
+ name = "myVM2"
|
||||||
|
+ network_interface_ids = (known after apply)
|
||||||
|
+ patch_mode = "AutomaticByOS"
|
||||||
|
+ platform_fault_domain = -1
|
||||||
|
+ priority = "Regular"
|
||||||
|
+ private_ip_address = (known after apply)
|
||||||
|
+ private_ip_addresses = (known after apply)
|
||||||
|
+ provision_vm_agent = true
|
||||||
|
+ public_ip_address = (known after apply)
|
||||||
|
+ public_ip_addresses = (known after apply)
|
||||||
|
+ resource_group_name = "myResourceGroupAG"
|
||||||
|
+ size = "Standard_DS1_v2"
|
||||||
|
+ virtual_machine_id = (known after apply)
|
||||||
|
+ zone = (known after apply)
|
||||||
|
|
||||||
|
+ os_disk {
|
||||||
|
+ lower = true
|
||||||
|
+ min_lower = 0
|
||||||
|
+ min_numeric = 0
|
||||||
|
+ min_special = 0
|
||||||
|
+ min_upper = 0
|
||||||
|
+ number = true
|
||||||
|
+ result = (sensitive value)
|
||||||
|
+ special = true
|
||||||
|
+ upper = true
|
||||||
|
}
|
||||||
|
|
||||||
|
Plan: 15 to add, 0 to change, 0 to destroy.
|
||||||
|
```
|
23
quickstart/101-application-gateway/variables.tf
Normal file
23
quickstart/101-application-gateway/variables.tf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
variable "backend_address_pool_name" {
|
||||||
|
default = "myBackendPool"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "frontend_port_name" {
|
||||||
|
default = "myFrontendPort"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "frontend_ip_configuration_name" {
|
||||||
|
default = "myAGIPConfig"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "http_setting_name" {
|
||||||
|
default = "myHTTPsetting"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "listener_name" {
|
||||||
|
default = "myListener"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "request_routing_rule_name" {
|
||||||
|
default = "myRoutingRule"
|
||||||
|
}
|
1259
quickstart/101-attestation-provider/TestRecord.md
Normal file
1259
quickstart/101-attestation-provider/TestRecord.md
Normal file
File diff suppressed because it is too large
Load Diff
52
quickstart/101-attestation-provider/main.tf
Normal file
52
quickstart/101-attestation-provider/main.tf
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
resource "random_pet" "rg_name" {
|
||||||
|
prefix = var.resource_group_name_prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_resource_group" "rg" {
|
||||||
|
location = var.resource_group_location
|
||||||
|
name = random_pet.rg_name.id
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
create_signing_cert = try(!fileexists(var.cert_path), true)
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "tls_private_key" "signing_cert" {
|
||||||
|
count = local.create_signing_cert ? 1 : 0
|
||||||
|
|
||||||
|
algorithm = "RSA"
|
||||||
|
rsa_bits = 4096
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "tls_self_signed_cert" "attestation" {
|
||||||
|
count = local.create_signing_cert ? 1 : 0
|
||||||
|
|
||||||
|
private_key_pem = tls_private_key.signing_cert[0].private_key_pem
|
||||||
|
validity_period_hours = 12
|
||||||
|
allowed_uses = [
|
||||||
|
"cert_signing",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_string" "attestation_suffix" {
|
||||||
|
length = 8
|
||||||
|
numeric = false
|
||||||
|
special = false
|
||||||
|
upper = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "azurerm_attestation_provider" "corp_attestation" {
|
||||||
|
location = azurerm_resource_group.rg.location
|
||||||
|
name = "${var.attestation_provider_name}${random_string.attestation_suffix.result}"
|
||||||
|
resource_group_name = azurerm_resource_group.rg.name
|
||||||
|
policy_signing_certificate_data = try(tls_self_signed_cert.attestation[0].cert_pem, file(var.cert_path))
|
||||||
|
#https://github.com/hashicorp/terraform-provider-azurerm/issues/21998#issuecomment-1573312297
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
"open_enclave_policy_base64",
|
||||||
|
"sev_snp_policy_base64",
|
||||||
|
"sgx_enclave_policy_base64",
|
||||||
|
"tpm_policy_base64",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
3
quickstart/101-attestation-provider/outputs.tf
Normal file
3
quickstart/101-attestation-provider/outputs.tf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
output "resource_group_name" {
|
||||||
|
value = azurerm_resource_group.rg.name
|
||||||
|
}
|
22
quickstart/101-attestation-provider/providers.tf
Normal file
22
quickstart/101-attestation-provider/providers.tf
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">=0.12"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
azurerm = {
|
||||||
|
source = "hashicorp/azurerm"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "~>3.0"
|
||||||
|
}
|
||||||
|
tls = {
|
||||||
|
source = "hashicorp/tls"
|
||||||
|
version = "4.0.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "azurerm" {
|
||||||
|
features {}
|
||||||
|
}
|
21
quickstart/101-attestation-provider/readme.md
Normal file
21
quickstart/101-attestation-provider/readme.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Azure attestation provider
|
||||||
|
|
||||||
|
This template deploys an [Attestation provider](/azure/attestation/overview) on Azure.
|
||||||
|
|
||||||
|
## Terraform resource types
|
||||||
|
|
||||||
|
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
|
||||||
|
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
|
||||||
|
- [azurerm_attestation_provider](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/attestation)
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
| Name | Description | Default |
|
||||||
|
|-|-|-|
|
||||||
|
| `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg |
|
||||||
|
| `resource_group_location` | Location of the resource group. | eastus |
|
||||||
|
| `attestation_provider_name` | Name of the Attestation provider | attestationprovider007 |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
To see how to run this example, see [Configure an Azure Attestation provider using Terraform](https://docs.microsoft.com/en-us/azure/developer/terraform/create-attestation-provider).
|
17
quickstart/101-attestation-provider/variables.tf
Normal file
17
quickstart/101-attestation-provider/variables.tf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
variable "attestation_provider_name" {
|
||||||
|
default = "attestation"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "cert_path" {
|
||||||
|
default = "~/.certs/cert.pem"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_location" {
|
||||||
|
default = "eastus"
|
||||||
|
description = "Location of the resource group."
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "resource_group_name_prefix" {
|
||||||
|
default = "rg"
|
||||||
|
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
|
||||||
|
}
|
324
quickstart/101-authn-managed-identity/TestRecord.md
Normal file
324
quickstart/101-authn-managed-identity/TestRecord.md
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
## 03 Nov 24 01:58 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Oct 24 00:27 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 20 Oct 24 01:18 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13 Oct 24 01:33 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 06 Oct 24 00:37 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v3.116.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 04:48 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 02:50 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 29 Sep 24 00:11 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 27 Sep 24 06:53 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 22 Sep 24 00:12 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Sep 24 03:29 UTC
|
||||||
|
|
||||||
|
Success: false
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.3
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 08 Sep 24 02:16 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Sep 24 02:04 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 25 Aug 24 02:09 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 18 Aug 24 02:11 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.15.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11 Aug 24 01:52 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.14.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 04 Aug 24 01:55 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.14.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 01 Aug 24 02:58 UTC
|
||||||
|
|
||||||
|
Success: true
|
||||||
|
|
||||||
|
### Versions
|
||||||
|
|
||||||
|
Terraform v1.9.3
|
||||||
|
on linux_amd64
|
||||||
|
+ provider registry.terraform.io/azure/azapi v1.14.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/azurerm v2.99.0
|
||||||
|
+ provider registry.terraform.io/hashicorp/random v3.6.2
|
||||||
|
|
||||||
|
### Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user