@drunk-pulumi/azure 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/Aks/Helper.d.ts +43 -0
  2. package/Aks/Helper.js +72 -0
  3. package/Aks/Identity.d.ts +14 -0
  4. package/Aks/Identity.js +32 -0
  5. package/Aks/VmSetAutoScale/index.d.ts +16 -0
  6. package/Aks/VmSetAutoScale/index.js +132 -0
  7. package/Aks/VmSetMonitor/index.d.ts +12 -0
  8. package/Aks/VmSetMonitor/index.js +67 -0
  9. package/Aks/index.d.ts +100 -0
  10. package/Aks/index.js +558 -0
  11. package/Apim/ApiProduct/Api.d.ts +35 -0
  12. package/Apim/ApiProduct/Api.js +131 -0
  13. package/Apim/ApiProduct/OpenApi.d.ts +85 -0
  14. package/Apim/ApiProduct/OpenApi.js +3 -0
  15. package/Apim/ApiProduct/PolicyBuilder.d.ts +79 -0
  16. package/Apim/ApiProduct/PolicyBuilder.js +361 -0
  17. package/Apim/ApiProduct/Product.d.ts +8 -0
  18. package/Apim/ApiProduct/Product.js +63 -0
  19. package/Apim/ApiProduct/SwaggerHelper.d.ts +6 -0
  20. package/Apim/ApiProduct/SwaggerHelper.js +44 -0
  21. package/Apim/ApiProduct/index.d.ts +9 -0
  22. package/Apim/ApiProduct/index.js +22 -0
  23. package/Apim/Helpers.d.ts +0 -0
  24. package/Apim/Helpers.js +2 -0
  25. package/Apim/HookProxy/index.d.ts +20 -0
  26. package/Apim/HookProxy/index.js +27 -0
  27. package/Apim/index.d.ts +22 -0
  28. package/Apim/index.js +118 -0
  29. package/Apps/LogicApp.d.ts +12 -0
  30. package/Apps/LogicApp.js +19 -0
  31. package/Automation/AutoAccount.d.ts +5 -0
  32. package/Automation/AutoAccount.js +20 -0
  33. package/AzAd/B2C.d.ts +9 -0
  34. package/AzAd/B2C.js +38 -0
  35. package/AzAd/ConditionalPolicies/index.d.ts +0 -0
  36. package/AzAd/ConditionalPolicies/index.js +2 -0
  37. package/AzAd/EnvRoles.d.ts +12 -0
  38. package/AzAd/EnvRoles.js +62 -0
  39. package/AzAd/GraphDefinition.d.ts +14 -0
  40. package/AzAd/GraphDefinition.js +5136 -0
  41. package/AzAd/Group.d.ts +29 -0
  42. package/AzAd/Group.js +70 -0
  43. package/AzAd/Helper.d.ts +18 -0
  44. package/AzAd/Helper.js +37 -0
  45. package/AzAd/Identities/AzDevOps.d.ts +23 -0
  46. package/AzAd/Identities/AzDevOps.js +61 -0
  47. package/AzAd/Identities/AzUserAdRevertSync.d.ts +14 -0
  48. package/AzAd/Identities/AzUserAdRevertSync.js +18 -0
  49. package/AzAd/Identity.d.ts +51 -0
  50. package/AzAd/Identity.js +133 -0
  51. package/AzAd/ManagedIdentity.d.ts +6 -0
  52. package/AzAd/ManagedIdentity.js +23 -0
  53. package/AzAd/Role.d.ts +19 -0
  54. package/AzAd/Role.js +25 -0
  55. package/AzAd/RoleAssignment.d.ts +79 -0
  56. package/AzAd/RoleAssignment.js +48 -0
  57. package/AzAd/RolesBuiltIn.d.ts +62 -0
  58. package/AzAd/RolesBuiltIn.js +13841 -0
  59. package/Cdn/index.d.ts +11 -0
  60. package/Cdn/index.js +47 -0
  61. package/Certificate/index.d.ts +41 -0
  62. package/Certificate/index.js +156 -0
  63. package/Certificate/p12.d.ts +5 -0
  64. package/Certificate/p12.js +37 -0
  65. package/Common/AppConfigs/dotnetConfig.d.ts +15 -0
  66. package/Common/AppConfigs/dotnetConfig.js +20 -0
  67. package/Common/AutoTags.d.ts +1 -0
  68. package/Common/AutoTags.js +24 -0
  69. package/Common/AzureEnv.d.ts +37 -0
  70. package/Common/AzureEnv.js +94 -0
  71. package/Common/ConfigHelper.d.ts +5 -0
  72. package/Common/ConfigHelper.js +14 -0
  73. package/Common/GlobalEnv.d.ts +14 -0
  74. package/Common/GlobalEnv.js +38 -0
  75. package/Common/Helpers.d.ts +10 -0
  76. package/Common/Helpers.js +30 -0
  77. package/Common/Location.d.ts +4 -0
  78. package/Common/Location.js +23 -0
  79. package/Common/LocationBuiltIn.d.ts +81 -0
  80. package/Common/LocationBuiltIn.js +1925 -0
  81. package/Common/Naming/index.d.ts +62 -0
  82. package/Common/Naming/index.js +146 -0
  83. package/Common/ResourceEnv.d.ts +16 -0
  84. package/Common/ResourceEnv.js +29 -0
  85. package/Common/StackEnv.d.ts +4 -0
  86. package/Common/StackEnv.js +22 -0
  87. package/Common/index.d.ts +5 -0
  88. package/Common/index.js +9 -0
  89. package/ContainerRegistry/Helper.d.ts +23 -0
  90. package/ContainerRegistry/Helper.js +47 -0
  91. package/ContainerRegistry/index.d.ts +28 -0
  92. package/ContainerRegistry/index.js +103 -0
  93. package/Core/Helper.d.ts +16 -0
  94. package/Core/Helper.js +37 -0
  95. package/Core/KeyGenetators.d.ts +33 -0
  96. package/Core/KeyGenetators.js +66 -0
  97. package/Core/Locker.d.ts +13 -0
  98. package/Core/Locker.js +14 -0
  99. package/Core/Random.d.ts +40 -0
  100. package/Core/Random.js +83 -0
  101. package/Core/ResourceCreator.d.ts +17 -0
  102. package/Core/ResourceCreator.js +48 -0
  103. package/Core/ResourceGroup.d.ts +13 -0
  104. package/Core/ResourceGroup.js +45 -0
  105. package/CosmosDb/index.d.ts +33 -0
  106. package/CosmosDb/index.js +129 -0
  107. package/CustomRoles/index.d.ts +5 -0
  108. package/CustomRoles/index.js +27 -0
  109. package/IOT/Hub/index.d.ts +32 -0
  110. package/IOT/Hub/index.js +208 -0
  111. package/KeyVault/CustomHelper.d.ts +35 -0
  112. package/KeyVault/CustomHelper.js +40 -0
  113. package/KeyVault/Helper.d.ts +33 -0
  114. package/KeyVault/Helper.js +58 -0
  115. package/KeyVault/VaultAccess.d.ts +15 -0
  116. package/KeyVault/VaultAccess.js +47 -0
  117. package/KeyVault/VaultPermissions.d.ts +26 -0
  118. package/KeyVault/VaultPermissions.js +169 -0
  119. package/KeyVault/index.d.ts +28 -0
  120. package/KeyVault/index.js +136 -0
  121. package/KubeX/AcrSecret.d.ts +15 -0
  122. package/KubeX/AcrSecret.js +31 -0
  123. package/KubeX/Apps/AstroPage.d.ts +12 -0
  124. package/KubeX/Apps/AstroPage.js +33 -0
  125. package/KubeX/Apps/KafKa.d.ts +6 -0
  126. package/KubeX/Apps/KafKa.js +13 -0
  127. package/KubeX/Apps/Nobelium.d.ts +13 -0
  128. package/KubeX/Apps/Nobelium.js +37 -0
  129. package/KubeX/Apps/Wikijs.d.ts +30 -0
  130. package/KubeX/Apps/Wikijs.js +54 -0
  131. package/KubeX/Apps/WordPress.d.ts +24 -0
  132. package/KubeX/Apps/WordPress.js +55 -0
  133. package/KubeX/Apps/YarpProxy/index.d.ts +17 -0
  134. package/KubeX/Apps/YarpProxy/index.js +107 -0
  135. package/KubeX/Apps/YarpProxy/type.d.ts +55 -0
  136. package/KubeX/Apps/YarpProxy/type.js +3 -0
  137. package/KubeX/CertHelper.d.ts +1 -0
  138. package/KubeX/CertHelper.js +9 -0
  139. package/KubeX/CertImports.d.ts +19 -0
  140. package/KubeX/CertImports.js +70 -0
  141. package/KubeX/CloudFlare/CertCreator.d.ts +19 -0
  142. package/KubeX/CloudFlare/CertCreator.js +90 -0
  143. package/KubeX/CloudFlare/CertImports.d.ts +17 -0
  144. package/KubeX/CloudFlare/CertImports.js +34 -0
  145. package/KubeX/CloudFlare/DynamicDns.d.ts +21 -0
  146. package/KubeX/CloudFlare/DynamicDns.js +39 -0
  147. package/KubeX/CloudFlare/Tunnel-Helm.d.ts +17 -0
  148. package/KubeX/CloudFlare/Tunnel-Helm.js +12 -0
  149. package/KubeX/CloudFlare/Tunnel.d.ts +23 -0
  150. package/KubeX/CloudFlare/Tunnel.js +54 -0
  151. package/KubeX/CloudFlare/index.d.ts +13 -0
  152. package/KubeX/CloudFlare/index.js +36 -0
  153. package/KubeX/Clusters/K3s/AutoUpgradeController/index.d.ts +6 -0
  154. package/KubeX/Clusters/K3s/AutoUpgradeController/index.js +60 -0
  155. package/KubeX/ConfigSecret.d.ts +24 -0
  156. package/KubeX/ConfigSecret.js +38 -0
  157. package/KubeX/Core/CertManager/index.d.ts +24 -0
  158. package/KubeX/Core/CertManager/index.js +96 -0
  159. package/KubeX/Core/KsCertSecret.d.ts +12 -0
  160. package/KubeX/Core/KsCertSecret.js +22 -0
  161. package/KubeX/Core/KsSecret.d.ts +9 -0
  162. package/KubeX/Core/KsSecret.js +12 -0
  163. package/KubeX/Core/LoadBalancer/MetalLB.d.ts +7 -0
  164. package/KubeX/Core/LoadBalancer/MetalLB.js +21 -0
  165. package/KubeX/Core/Monitoring/index.d.ts +22 -0
  166. package/KubeX/Core/Monitoring/index.js +322 -0
  167. package/KubeX/Core/Namespace.d.ts +12 -0
  168. package/KubeX/Core/Namespace.js +41 -0
  169. package/KubeX/Core/Nginx/index.d.ts +60 -0
  170. package/KubeX/Core/Nginx/index.js +109 -0
  171. package/KubeX/Core/OAuthProxy/index.d.ts +0 -0
  172. package/KubeX/Core/OAuthProxy/index.js +3 -0
  173. package/KubeX/Core/ResourceQuota.d.ts +12 -0
  174. package/KubeX/Core/ResourceQuota.js +13 -0
  175. package/KubeX/Core/SecurityRules.d.ts +34 -0
  176. package/KubeX/Core/SecurityRules.js +93 -0
  177. package/KubeX/Core/StorageClass/azureBlob.d.ts +20 -0
  178. package/KubeX/Core/StorageClass/azureBlob.js +77 -0
  179. package/KubeX/Core/StorageClass/azureFile.d.ts +17 -0
  180. package/KubeX/Core/StorageClass/azureFile.js +45 -0
  181. package/KubeX/Core/StorageClass/index.d.ts +13 -0
  182. package/KubeX/Core/StorageClass/index.js +25 -0
  183. package/KubeX/Core/index.d.ts +57 -0
  184. package/KubeX/Core/index.js +94 -0
  185. package/KubeX/Databases/MariaDb.d.ts +11 -0
  186. package/KubeX/Databases/MariaDb.js +39 -0
  187. package/KubeX/Databases/MySql.V2.d.ts +11 -0
  188. package/KubeX/Databases/MySql.V2.js +40 -0
  189. package/KubeX/Databases/MySql.d.ts +13 -0
  190. package/KubeX/Databases/MySql.js +55 -0
  191. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.d.ts +10 -0
  192. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.js +47 -0
  193. package/KubeX/Databases/PostgreSql/PostgreSQL.d.ts +10 -0
  194. package/KubeX/Databases/PostgreSql/PostgreSQL.js +51 -0
  195. package/KubeX/Databases/PostgreSql/PostgreSql.v1.d.ts +13 -0
  196. package/KubeX/Databases/PostgreSql/PostgreSql.v1.js +56 -0
  197. package/KubeX/Databases/PostgreSql/index.d.ts +17 -0
  198. package/KubeX/Databases/PostgreSql/index.js +6 -0
  199. package/KubeX/Databases/RedisCache.d.ts +14 -0
  200. package/KubeX/Databases/RedisCache.js +65 -0
  201. package/KubeX/Databases/SqlServer.d.ts +15 -0
  202. package/KubeX/Databases/SqlServer.js +77 -0
  203. package/KubeX/Deployment/PodAutoscaler.d.ts +14 -0
  204. package/KubeX/Deployment/PodAutoscaler.js +51 -0
  205. package/KubeX/Deployment/index.d.ts +136 -0
  206. package/KubeX/Deployment/index.js +306 -0
  207. package/KubeX/Helpers.d.ts +4 -0
  208. package/KubeX/Helpers.js +17 -0
  209. package/KubeX/Ingress/AppGatewayIngress.d.ts +2 -0
  210. package/KubeX/Ingress/AppGatewayIngress.js +4 -0
  211. package/KubeX/Ingress/Conts.d.ts +13 -0
  212. package/KubeX/Ingress/Conts.js +18 -0
  213. package/KubeX/Ingress/NginxIngress.d.ts +3 -0
  214. package/KubeX/Ingress/NginxIngress.js +186 -0
  215. package/KubeX/Ingress/NginxProxy.d.ts +21 -0
  216. package/KubeX/Ingress/NginxProxy.js +43 -0
  217. package/KubeX/Ingress/TraefikIngress/CustomHeader.d.ts +15 -0
  218. package/KubeX/Ingress/TraefikIngress/CustomHeader.js +15 -0
  219. package/KubeX/Ingress/TraefikIngress/index.d.ts +11 -0
  220. package/KubeX/Ingress/TraefikIngress/index.js +95 -0
  221. package/KubeX/Ingress/index.d.ts +5 -0
  222. package/KubeX/Ingress/index.js +12 -0
  223. package/KubeX/Ingress/type.d.ts +82 -0
  224. package/KubeX/Ingress/type.js +3 -0
  225. package/KubeX/Providers/index.d.ts +8 -0
  226. package/KubeX/Providers/index.js +15 -0
  227. package/KubeX/Storage/Longhorn/index.d.ts +15 -0
  228. package/KubeX/Storage/Longhorn/index.js +54 -0
  229. package/KubeX/Storage/index.d.ts +25 -0
  230. package/KubeX/Storage/index.js +79 -0
  231. package/KubeX/Tools/AWS/LocalStack.d.ts +7 -0
  232. package/KubeX/Tools/AWS/LocalStack.js +29 -0
  233. package/KubeX/Tools/AWS/S3.d.ts +6 -0
  234. package/KubeX/Tools/AWS/S3.js +44 -0
  235. package/KubeX/Tools/AWS/index.d.ts +7 -0
  236. package/KubeX/Tools/AWS/index.js +14 -0
  237. package/KubeX/Tools/AppHealthzMonitor.d.ts +18 -0
  238. package/KubeX/Tools/AppHealthzMonitor.js +52 -0
  239. package/KubeX/Tools/ArgoCD/index.d.ts +17 -0
  240. package/KubeX/Tools/ArgoCD/index.js +131 -0
  241. package/KubeX/Tools/Dapr/Storage.d.ts +66 -0
  242. package/KubeX/Tools/Dapr/Storage.js +70 -0
  243. package/KubeX/Tools/Dapr/index.d.ts +10 -0
  244. package/KubeX/Tools/Dapr/index.js +31 -0
  245. package/KubeX/Tools/Echo-App.d.ts +3 -0
  246. package/KubeX/Tools/Echo-App.js +21 -0
  247. package/KubeX/Tools/Gitea/GiteaRepo.d.ts +72 -0
  248. package/KubeX/Tools/Gitea/GiteaRepo.js +184 -0
  249. package/KubeX/Tools/Gitea/GiteaRunner.d.ts +11 -0
  250. package/KubeX/Tools/Gitea/GiteaRunner.js +37 -0
  251. package/KubeX/Tools/Gitea/GiteaRunner.v1.d.ts +11 -0
  252. package/KubeX/Tools/Gitea/GiteaRunner.v1.js +123 -0
  253. package/KubeX/Tools/HarborRepo.d.ts +29 -0
  254. package/KubeX/Tools/HarborRepo.js +78 -0
  255. package/KubeX/Tools/HelloWorld.d.ts +3 -0
  256. package/KubeX/Tools/HelloWorld.js +21 -0
  257. package/KubeX/Tools/KubeCleanup.d.ts +9 -0
  258. package/KubeX/Tools/KubeCleanup.js +34 -0
  259. package/KubeX/Tools/NoIp.d.ts +13 -0
  260. package/KubeX/Tools/NoIp.js +24 -0
  261. package/KubeX/Tools/OpenLDAP/index.d.ts +12 -0
  262. package/KubeX/Tools/OpenLDAP/index.js +56 -0
  263. package/KubeX/Tools/OutlineVpn/index.d.ts +25 -0
  264. package/KubeX/Tools/OutlineVpn/index.js +256 -0
  265. package/KubeX/Tools/SqlPad.d.ts +29 -0
  266. package/KubeX/Tools/SqlPad.js +133 -0
  267. package/KubeX/Tools/ToolPod.d.ts +10 -0
  268. package/KubeX/Tools/ToolPod.js +40 -0
  269. package/KubeX/Tools/UptimeKuma.d.ts +6 -0
  270. package/KubeX/Tools/UptimeKuma.js +38 -0
  271. package/KubeX/Tools/index.d.ts +27 -0
  272. package/KubeX/Tools/index.js +35 -0
  273. package/KubeX/VairableResolvers/index.d.ts +15 -0
  274. package/KubeX/VairableResolvers/index.js +49 -0
  275. package/KubeX/kx/index.d.ts +114 -0
  276. package/KubeX/kx/index.js +423 -0
  277. package/KubeX/types.d.ts +49 -0
  278. package/KubeX/types.js +3 -0
  279. package/Logs/AppInsight.d.ts +16 -0
  280. package/Logs/AppInsight.js +48 -0
  281. package/Logs/Helpers.d.ts +50 -0
  282. package/Logs/Helpers.js +95 -0
  283. package/Logs/LogAnalytics.d.ts +17 -0
  284. package/Logs/LogAnalytics.js +54 -0
  285. package/Logs/WebTest.d.ts +13 -0
  286. package/Logs/WebTest.js +68 -0
  287. package/Logs/index.d.ts +42 -0
  288. package/Logs/index.js +69 -0
  289. package/MySql/index.d.ts +20 -0
  290. package/MySql/index.js +93 -0
  291. package/Postgresql/index.d.ts +20 -0
  292. package/Postgresql/index.js +93 -0
  293. package/ReadMe.md +36 -0
  294. package/RedisCache/index.d.ts +9 -0
  295. package/RedisCache/index.js +79 -0
  296. package/ServiceBus/ServiceBusHelper.d.ts +21 -0
  297. package/ServiceBus/ServiceBusHelper.js +35 -0
  298. package/ServiceBus/index.d.ts +98 -0
  299. package/ServiceBus/index.js +396 -0
  300. package/SignalR/index.d.ts +20 -0
  301. package/SignalR/index.js +114 -0
  302. package/Sql/Auditing.d.ts +0 -0
  303. package/Sql/Auditing.js +2 -0
  304. package/Sql/Helper.d.ts +9 -0
  305. package/Sql/Helper.js +11 -0
  306. package/Sql/SqlDb.d.ts +14 -0
  307. package/Sql/SqlDb.js +42 -0
  308. package/Sql/index.d.ts +44 -0
  309. package/Sql/index.js +236 -0
  310. package/Storage/CdnEndpoint.d.ts +12 -0
  311. package/Storage/CdnEndpoint.js +62 -0
  312. package/Storage/CdnRules.d.ts +6 -0
  313. package/Storage/CdnRules.js +134 -0
  314. package/Storage/Helper.d.ts +28 -0
  315. package/Storage/Helper.js +66 -0
  316. package/Storage/ManagementRules.d.ts +70 -0
  317. package/Storage/ManagementRules.js +32 -0
  318. package/Storage/index.d.ts +55 -0
  319. package/Storage/index.js +264 -0
  320. package/VM/index.d.ts +37 -0
  321. package/VM/index.js +138 -0
  322. package/VNet/Bastion.d.ts +8 -0
  323. package/VNet/Bastion.js +30 -0
  324. package/VNet/Firewall.d.ts +27 -0
  325. package/VNet/Firewall.js +87 -0
  326. package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +20 -0
  327. package/VNet/FirewallPolicies/AksFirewallPolicy.js +241 -0
  328. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +14 -0
  329. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +303 -0
  330. package/VNet/FirewallPolicy.d.ts +28 -0
  331. package/VNet/FirewallPolicy.js +110 -0
  332. package/VNet/FirewallRules/AksFirewallRules.d.ts +24 -0
  333. package/VNet/FirewallRules/AksFirewallRules.js +250 -0
  334. package/VNet/FirewallRules/DefaultRules.d.ts +2 -0
  335. package/VNet/FirewallRules/DefaultRules.js +23 -0
  336. package/VNet/FirewallRules/types.d.ts +20 -0
  337. package/VNet/FirewallRules/types.js +5 -0
  338. package/VNet/GlobalNetworkPeering.d.ts +9 -0
  339. package/VNet/GlobalNetworkPeering.js +17 -0
  340. package/VNet/Helper.d.ts +33 -0
  341. package/VNet/Helper.js +86 -0
  342. package/VNet/IpAddress.d.ts +17 -0
  343. package/VNet/IpAddress.js +38 -0
  344. package/VNet/IpAddressPrefix.d.ts +22 -0
  345. package/VNet/IpAddressPrefix.js +42 -0
  346. package/VNet/NSGRules/AzADService.d.ts +10 -0
  347. package/VNet/NSGRules/AzADService.js +45 -0
  348. package/VNet/NetworkPeering.d.ts +10 -0
  349. package/VNet/NetworkPeering.js +29 -0
  350. package/VNet/PrivateDns.d.ts +33 -0
  351. package/VNet/PrivateDns.js +64 -0
  352. package/VNet/PrivateEndpoint.d.ts +9 -0
  353. package/VNet/PrivateEndpoint.js +71 -0
  354. package/VNet/PublicDns.d.ts +21 -0
  355. package/VNet/PublicDns.js +59 -0
  356. package/VNet/RouteTable.d.ts +13 -0
  357. package/VNet/RouteTable.js +23 -0
  358. package/VNet/SecurityGroup.d.ts +8 -0
  359. package/VNet/SecurityGroup.js +13 -0
  360. package/VNet/Subnet.d.ts +26 -0
  361. package/VNet/Subnet.js +48 -0
  362. package/VNet/VirtualWAN.d.ts +25 -0
  363. package/VNet/VirtualWAN.js +40 -0
  364. package/VNet/Vnet.d.ts +51 -0
  365. package/VNet/Vnet.js +196 -0
  366. package/VNet/index.d.ts +65 -0
  367. package/VNet/index.js +198 -0
  368. package/Web/AppCertOrder.d.ts +16 -0
  369. package/Web/AppCertOrder.js +34 -0
  370. package/Web/AppConfig.d.ts +16 -0
  371. package/Web/AppConfig.js +79 -0
  372. package/Web/AppGateway.d.ts +15 -0
  373. package/Web/AppGateway.js +32 -0
  374. package/Web/FuncApp.d.ts +12 -0
  375. package/Web/FuncApp.js +24 -0
  376. package/Web/Helpers.d.ts +6 -0
  377. package/Web/Helpers.js +36 -0
  378. package/Web/WebAppPlan.d.ts +7 -0
  379. package/Web/WebAppPlan.js +26 -0
  380. package/Web/types.d.ts +169 -0
  381. package/Web/types.js +3 -0
  382. package/package.json +34 -0
  383. package/types.d.ts +69 -0
  384. package/types.js +3 -0
  385. package/z_tests/_tools/Mocks.d.ts +2 -0
  386. package/z_tests/_tools/Mocks.js +47 -0
@@ -0,0 +1,70 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import * as storage from '@pulumi/azure-native/storage';
3
+ import { ResourceGroupInfo } from '../types';
4
+ interface DateAfterModificationArgs {
5
+ /**
6
+ * Value indicating the age in days after last blob access. This property can only be used in conjunction with last access time tracking policy
7
+ */
8
+ daysAfterLastAccessTimeGreaterThan?: pulumi.Input<number>;
9
+ /**
10
+ * Value indicating the age in days after last modification
11
+ */
12
+ daysAfterModificationGreaterThan?: pulumi.Input<number>;
13
+ }
14
+ interface DateAfterCreationArgs {
15
+ /**
16
+ * Value indicating the age in days after creation
17
+ */
18
+ daysAfterCreationGreaterThan: pulumi.Input<number>;
19
+ }
20
+ interface PolicyVersionArgs {
21
+ /**
22
+ * The function to delete the blob version
23
+ */
24
+ delete?: pulumi.Input<DateAfterCreationArgs>;
25
+ /**
26
+ * The function to tier blob version to archive storage. Support blob version currently at Hot or Cool tier
27
+ */
28
+ tierToArchive?: pulumi.Input<DateAfterCreationArgs>;
29
+ /**
30
+ * The function to tier blob version to cool storage. Support blob version currently at Hot tier
31
+ */
32
+ tierToCool?: pulumi.Input<DateAfterCreationArgs>;
33
+ }
34
+ type ManagementRuleActions = {
35
+ baseBlob?: {
36
+ delete?: DateAfterModificationArgs;
37
+ tierToArchive?: DateAfterModificationArgs;
38
+ tierToCool?: DateAfterModificationArgs;
39
+ enableAutoTierToHotFromCool?: boolean;
40
+ };
41
+ snapshot?: PolicyVersionArgs;
42
+ version?: PolicyVersionArgs;
43
+ };
44
+ type ManagementRuleFilters = {
45
+ blobTypes: Array<'blockBlob' | 'appendBlob'>;
46
+ tagFilters?: pulumi.Input<{
47
+ name: pulumi.Input<string>;
48
+ op: '==';
49
+ value: pulumi.Input<string>;
50
+ }>[];
51
+ };
52
+ interface DefaultManagementRuleFilters extends ManagementRuleFilters {
53
+ containerNames?: pulumi.Input<string>[];
54
+ }
55
+ export type DefaultManagementRules = {
56
+ actions: ManagementRuleActions;
57
+ filters?: DefaultManagementRuleFilters;
58
+ };
59
+ export type ManagementRules = {
60
+ actions: ManagementRuleActions;
61
+ filters?: ManagementRuleFilters;
62
+ };
63
+ export declare const createManagementRules: ({ name, storageAccount, group, rules, containerNames, }: {
64
+ name: string;
65
+ group: ResourceGroupInfo;
66
+ storageAccount: storage.StorageAccount;
67
+ containerNames?: pulumi.Input<string>[] | undefined;
68
+ rules: Array<ManagementRules | DefaultManagementRules>;
69
+ }) => import("@pulumi/azure-native/storage/managementPolicy").ManagementPolicy;
70
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createManagementRules = void 0;
4
+ const storage = require("@pulumi/azure-native/storage");
5
+ const createManagementRules = ({ name, storageAccount, group, rules, containerNames, }) => {
6
+ name = `${name}-mnp`;
7
+ return new storage.ManagementPolicy(name, {
8
+ managementPolicyName: name,
9
+ accountName: storageAccount.name,
10
+ ...group,
11
+ policy: {
12
+ rules: rules.map((m, i) => ({
13
+ enabled: true,
14
+ name: `${name}-${i}`,
15
+ type: 'Lifecycle',
16
+ definition: {
17
+ actions: m.actions,
18
+ filters: m.filters
19
+ ? {
20
+ blobTypes: m.filters.blobTypes,
21
+ prefixMatch: containerNames ??
22
+ m.filters.containerNames,
23
+ blobIndexMatch: m.filters.tagFilters,
24
+ }
25
+ : undefined,
26
+ },
27
+ })),
28
+ },
29
+ }, { dependsOn: storageAccount });
30
+ };
31
+ exports.createManagementRules = createManagementRules;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuYWdlbWVudFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JhZ2UvTWFuYWdlbWVudFJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdEQUF3RDtBQW9FakQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBQ3BDLElBQUksRUFDSixjQUFjLEVBQ2QsS0FBSyxFQUNMLEtBQUssRUFDTCxjQUFjLEdBT2YsRUFBRSxFQUFFO0lBQ0gsSUFBSSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDakMsSUFBSSxFQUNKO1FBQ0Usb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixXQUFXLEVBQUUsY0FBYyxDQUFDLElBQUk7UUFDaEMsR0FBRyxLQUFLO1FBRVIsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFO2dCQUNwQixJQUFJLEVBQUUsV0FBVztnQkFDakIsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztvQkFFbEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNoQixDQUFDLENBQUM7NEJBQ0UsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUzs0QkFDOUIsV0FBVyxFQUNULGNBQWM7Z0NBQ2IsQ0FBQyxDQUFDLE9BQXdDLENBQUMsY0FBYzs0QkFDNUQsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVTt5QkFDckM7d0JBQ0gsQ0FBQyxDQUFDLFNBQVM7aUJBQ2Q7YUFDRixDQUFDLENBQUM7U0FDSjtLQUNGLEVBQ0QsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQzlCLENBQUM7QUFDSixDQUFDLENBQUM7QUE1Q1csUUFBQSxxQkFBcUIseUJBNENoQyJ9
@@ -0,0 +1,55 @@
1
+ import { KeyVaultInfo, BasicResourceArgs } from '../types';
2
+ import { Input } from '@pulumi/pulumi';
3
+ import { DefaultManagementRules, ManagementRules } from './ManagementRules';
4
+ type ContainerProps = {
5
+ name: string;
6
+ public?: boolean;
7
+ /** The management rule applied to Container level*/
8
+ managementRules?: Array<ManagementRules>;
9
+ };
10
+ interface StorageProps extends BasicResourceArgs {
11
+ customDomain?: string;
12
+ allowsCors?: string[];
13
+ vaultInfo: KeyVaultInfo;
14
+ /** The management rule applied to Storage level (all containers)*/
15
+ defaultManagementRules?: Array<DefaultManagementRules>;
16
+ containers?: Array<ContainerProps>;
17
+ queues?: Array<string>;
18
+ fileShares?: Array<string>;
19
+ featureFlags?: {
20
+ allowSharedKeyAccess?: boolean;
21
+ /** Enable this storage as static website. */
22
+ enableStaticWebsite?: boolean;
23
+ /**Only available when static site using CDN*/
24
+ includesDefaultResponseHeaders?: boolean;
25
+ /** The CDN is automatic enabled when the customDomain is provided. However, turn this on to force to enable CDN regardless to customDomain. */
26
+ forceUseCdn?: boolean;
27
+ /** This option only able to enable once Account is created, and the Principal added to the Key Vault Read Permission Group */
28
+ enableKeyVaultEncryption?: boolean;
29
+ };
30
+ policies?: {
31
+ keyExpirationPeriodInDays?: number;
32
+ isBlobVersioningEnabled?: boolean;
33
+ blobSoftDeleteDays?: number;
34
+ allowBlobPublicAccess?: boolean;
35
+ containerSoftDeleteDays?: number;
36
+ fileShareSoftDeleteDays?: number;
37
+ };
38
+ network?: {
39
+ subnetId?: Input<string>;
40
+ ipAddresses?: Array<string>;
41
+ };
42
+ lock?: boolean;
43
+ }
44
+ /** Storage Creator */
45
+ declare const _default: ({ name, group, customDomain, allowsCors, vaultInfo, defaultManagementRules, containers, queues, fileShares, network, featureFlags, policies, lock, }: StorageProps) => {
46
+ storage: import("@pulumi/azure-native/storage/storageAccount").StorageAccount;
47
+ vaultNames: {
48
+ primaryKeyName: string;
49
+ secondaryKeyName: string;
50
+ primaryConnectionKeyName: string;
51
+ secondConnectionKeyName: string;
52
+ };
53
+ getConnectionString: (name?: string) => Promise<import("@azure/keyvault-secrets").KeyVaultSecret | undefined> | undefined;
54
+ };
55
+ export default _default;
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const storage = require("@pulumi/azure-native/storage");
4
+ const pulumi_1 = require("@pulumi/pulumi");
5
+ const Helpers_1 = require("../Logs/Helpers");
6
+ const Helper_1 = require("../KeyVault/Helper");
7
+ const AzureEnv_1 = require("../Common/AzureEnv");
8
+ const CdnEndpoint_1 = require("./CdnEndpoint");
9
+ const Naming_1 = require("../Common/Naming");
10
+ const CustomHelper_1 = require("../KeyVault/CustomHelper");
11
+ const Locker_1 = require("../Core/Locker");
12
+ const ManagementRules_1 = require("./ManagementRules");
13
+ const KeyVaultBase_1 = require("@drunk-pulumi/azure-providers/AzBase/KeyVaultBase");
14
+ const getEncryptionKey = (name, vaultInfo) => {
15
+ const n = `${name}-encrypt-key`;
16
+ return (0, pulumi_1.output)((0, KeyVaultBase_1.getKeyVaultBase)(vaultInfo.name).getOrCreateKey(n));
17
+ };
18
+ /** Storage Creator */
19
+ exports.default = ({ name, group, customDomain, allowsCors, vaultInfo, defaultManagementRules, containers = [], queues = [], fileShares = [],
20
+ //appInsight,
21
+ network, featureFlags = {}, policies = { keyExpirationPeriodInDays: 365 }, lock = true, }) => {
22
+ name = (0, Naming_1.getStorageName)(name);
23
+ const primaryKeyName = (0, Naming_1.getKeyName)(name, 'primary');
24
+ const secondaryKeyName = (0, Naming_1.getKeyName)(name, 'secondary');
25
+ const primaryConnectionKeyName = (0, Naming_1.getConnectionName)(name, 'primary');
26
+ const secondConnectionKeyName = (0, Naming_1.getConnectionName)(name, 'secondary');
27
+ const encryptionKey = featureFlags.enableKeyVaultEncryption
28
+ ? getEncryptionKey(name, vaultInfo)
29
+ : undefined;
30
+ //To fix identity issue then using this approach https://github.com/pulumi/pulumi-azure-native/blob/master/examples/keyvault/index.ts
31
+ const stg = new storage.StorageAccount(name, {
32
+ accountName: name,
33
+ ...group,
34
+ kind: storage.Kind.StorageV2,
35
+ sku: {
36
+ name: AzureEnv_1.isPrd
37
+ ? storage.SkuName.Standard_ZRS //Zone redundant in PRD
38
+ : storage.SkuName.Standard_LRS,
39
+ },
40
+ accessTier: 'Hot',
41
+ isHnsEnabled: true,
42
+ enableHttpsTrafficOnly: true,
43
+ allowBlobPublicAccess: policies?.allowBlobPublicAccess,
44
+ allowSharedKeyAccess: featureFlags.allowSharedKeyAccess,
45
+ identity: { type: 'SystemAssigned' },
46
+ minimumTlsVersion: 'TLS1_2',
47
+ //1 Year Months
48
+ keyPolicy: {
49
+ keyExpirationPeriodInDays: policies.keyExpirationPeriodInDays || 365,
50
+ },
51
+ encryption: encryptionKey
52
+ ? {
53
+ services: {
54
+ blob: {
55
+ enabled: true,
56
+ keyType: storage.KeyType.Account,
57
+ },
58
+ file: {
59
+ enabled: true,
60
+ keyType: storage.KeyType.Account,
61
+ },
62
+ },
63
+ keySource: storage.KeySource.Microsoft_Keyvault,
64
+ keyVaultProperties: encryptionKey.apply((k) => ({
65
+ keyName: k.name,
66
+ keyVaultUri: k.properties.vaultUrl,
67
+ })),
68
+ }
69
+ : undefined,
70
+ sasPolicy: {
71
+ expirationAction: storage.ExpirationAction.Log,
72
+ sasExpirationPeriod: '00.00:30:00',
73
+ },
74
+ customDomain: customDomain && !featureFlags.enableStaticWebsite
75
+ ? { name: customDomain, useSubDomainName: true }
76
+ : undefined,
77
+ // routingPreference: {
78
+ // routingChoice: enableStaticWebsite
79
+ // ? native.storage.RoutingChoice.InternetRouting
80
+ // : native.storage.RoutingChoice.MicrosoftRouting,
81
+ // publishInternetEndpoints: false,
82
+ // publishMicrosoftEndpoints: false,
83
+ // },
84
+ networkRuleSet: network
85
+ ? {
86
+ bypass: 'Logging, Metrics',
87
+ defaultAction: 'Allow',
88
+ virtualNetworkRules: network.subnetId
89
+ ? [{ virtualNetworkResourceId: network.subnetId }]
90
+ : undefined,
91
+ ipRules: network.ipAddresses
92
+ ? network.ipAddresses.map((i) => ({
93
+ iPAddressOrRange: i,
94
+ action: 'Allow',
95
+ }))
96
+ : undefined,
97
+ }
98
+ : { defaultAction: 'Allow' },
99
+ tags: AzureEnv_1.defaultTags,
100
+ });
101
+ //Soft Delete
102
+ if (policies) {
103
+ // new storage.BlobServiceProperties(
104
+ // `${name}-Blob-Props`,
105
+ // {
106
+ // accountName: stg.name,
107
+ // ...group,
108
+ //
109
+ // deleteRetentionPolicy: policies.blobSoftDeleteDays
110
+ // ? {
111
+ // enabled: policies.blobSoftDeleteDays > 0,
112
+ // days: policies.blobSoftDeleteDays,
113
+ // }
114
+ // : undefined,
115
+ // isVersioningEnabled: policies.isBlobVersioningEnabled,
116
+ // },
117
+ // { dependsOn: stg }
118
+ // );
119
+ //
120
+ // new storage.FileServiceProperties(
121
+ // `${name}-File-Props`,
122
+ // {
123
+ // accountName: stg.name,
124
+ // ...group,
125
+ //
126
+ // shareDeleteRetentionPolicy: policies.fileShareSoftDeleteDays
127
+ // ? {
128
+ // enabled: policies.fileShareSoftDeleteDays > 0,
129
+ // days: policies.fileShareSoftDeleteDays,
130
+ // }
131
+ // : undefined,
132
+ // },
133
+ // { dependsOn: stg }
134
+ // );
135
+ }
136
+ //Life Cycle Management
137
+ if (defaultManagementRules) {
138
+ (0, ManagementRules_1.createManagementRules)({
139
+ name,
140
+ storageAccount: stg,
141
+ group,
142
+ rules: defaultManagementRules,
143
+ });
144
+ }
145
+ if (lock) {
146
+ (0, Locker_1.default)({ name, resourceId: stg.id, dependsOn: stg });
147
+ }
148
+ //Enable Static Website for SPA
149
+ if (featureFlags.enableStaticWebsite) {
150
+ new storage.StorageAccountStaticWebsite(name, {
151
+ accountName: stg.name,
152
+ ...group,
153
+ indexDocument: 'index.html',
154
+ error404Document: 'index.html',
155
+ }, { dependsOn: stg });
156
+ // if (appInsight && customDomain) {
157
+ // addInsightMonitor({ name, appInsight, url: customDomain });
158
+ // }
159
+ }
160
+ else if (AzureEnv_1.isPrd)
161
+ (0, Helpers_1.createThreatProtection)({ name, targetResourceId: stg.id });
162
+ //Create Azure CDN if customDomain provided
163
+ if ((featureFlags.enableStaticWebsite && customDomain) ||
164
+ featureFlags.forceUseCdn) {
165
+ const origin = stg.name.apply((n) => `${n}.z23.web.core.windows.net`);
166
+ (0, CdnEndpoint_1.default)({
167
+ name,
168
+ domainName: customDomain,
169
+ origin,
170
+ cors: allowsCors,
171
+ httpsEnabled: true,
172
+ includesDefaultResponseHeaders: featureFlags.includesDefaultResponseHeaders,
173
+ });
174
+ }
175
+ //Create Containers
176
+ containers.map((c) => {
177
+ const container = new storage.BlobContainer(c.name, {
178
+ containerName: c.name.toLowerCase(),
179
+ ...group,
180
+ accountName: stg.name,
181
+ //denyEncryptionScopeOverride: true,
182
+ publicAccess: c.public ? 'Blob' : 'None',
183
+ });
184
+ if (c.managementRules) {
185
+ (0, ManagementRules_1.createManagementRules)({
186
+ name,
187
+ storageAccount: stg,
188
+ group,
189
+ containerNames: [container.name],
190
+ rules: c.managementRules,
191
+ });
192
+ }
193
+ return container;
194
+ });
195
+ //Create Queues
196
+ queues.map((q) => {
197
+ new storage.Queue(q, {
198
+ queueName: q.toLowerCase(),
199
+ accountName: stg.name,
200
+ ...group,
201
+ });
202
+ });
203
+ //File Share
204
+ fileShares.map((s) => {
205
+ new storage.FileShare(s, {
206
+ shareName: s.toLowerCase(),
207
+ accountName: stg.name,
208
+ ...group,
209
+ });
210
+ });
211
+ //Add Key to
212
+ stg.id.apply(async (id) => {
213
+ if (!id)
214
+ return;
215
+ stg.identity.apply((i) => console.log('Add this ID into Key Vault ReadOnly Group to allows custom key encryption:', i.principalId));
216
+ const keys = (await storage.listStorageAccountKeys({
217
+ accountName: name,
218
+ resourceGroupName: group.resourceGroupName,
219
+ })).keys.map((k) => ({
220
+ name: k.keyName,
221
+ key: k.value,
222
+ connectionString: `DefaultEndpointsProtocol=https;AccountName=${name};AccountKey=${k.value};EndpointSuffix=core.windows.net`,
223
+ }));
224
+ if (vaultInfo) {
225
+ //Keys
226
+ (0, CustomHelper_1.addCustomSecrets)({
227
+ vaultInfo,
228
+ contentType: 'Storage',
229
+ formattedName: true,
230
+ items: [
231
+ {
232
+ name: primaryKeyName,
233
+ value: keys[0].key,
234
+ },
235
+ {
236
+ name: secondaryKeyName,
237
+ value: keys[1].key,
238
+ },
239
+ {
240
+ name: primaryConnectionKeyName,
241
+ value: keys[0].connectionString,
242
+ },
243
+ {
244
+ name: secondConnectionKeyName,
245
+ value: keys[1].connectionString,
246
+ },
247
+ ],
248
+ });
249
+ }
250
+ });
251
+ return {
252
+ storage: stg,
253
+ vaultNames: {
254
+ primaryKeyName,
255
+ secondaryKeyName,
256
+ primaryConnectionKeyName,
257
+ secondConnectionKeyName,
258
+ },
259
+ getConnectionString: (name = primaryConnectionKeyName) => vaultInfo
260
+ ? (0, Helper_1.getSecret)({ name, nameFormatted: true, vaultInfo })
261
+ : undefined,
262
+ };
263
+ };
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdEQUF3RDtBQUd4RCwyQ0FBK0M7QUFDL0MsNkNBQXlEO0FBQ3pELCtDQUErQztBQUMvQyxpREFBd0Q7QUFDeEQsK0NBQXVDO0FBRXZDLDZDQUkwQjtBQUMxQiwyREFBNEQ7QUFDNUQsMkNBQW9DO0FBQ3BDLHVEQUkyQjtBQUMzQixvRkFBb0Y7QUF1RHBGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsU0FBdUIsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQUM7SUFDaEMsT0FBTyxJQUFBLGVBQU0sRUFBQyxJQUFBLDhCQUFlLEVBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLHNCQUFzQjtBQUN0QixrQkFBZSxDQUFDLEVBQ2QsSUFBSSxFQUNKLEtBQUssRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsVUFBVSxHQUFHLEVBQUUsRUFDZixNQUFNLEdBQUcsRUFBRSxFQUNYLFVBQVUsR0FBRyxFQUFFO0FBQ2YsYUFBYTtBQUNiLE9BQU8sRUFDUCxZQUFZLEdBQUcsRUFBRSxFQUNqQixRQUFRLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxHQUFHLEVBQUUsRUFDN0MsSUFBSSxHQUFHLElBQUksR0FDRSxFQUFFLEVBQUU7SUFDakIsSUFBSSxHQUFHLElBQUEsdUJBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUU1QixNQUFNLGNBQWMsR0FBRyxJQUFBLG1CQUFVLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxtQkFBVSxFQUFDLElBQUksRUFBRSxXQUFXLENB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
package/VM/index.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ import { Input, Resource } from "@pulumi/pulumi";
2
+ import * as native from "@pulumi/azure-native";
3
+ import { BasicResourceArgs, KeyVaultInfo } from "../types";
4
+ interface Props extends BasicResourceArgs {
5
+ subnetId: Input<string>;
6
+ storageAccountType?: native.compute.StorageAccountTypes;
7
+ vmSize?: Input<string>;
8
+ login: {
9
+ userName: Input<string>;
10
+ password?: Input<string>;
11
+ };
12
+ windows?: {
13
+ offer: "WindowsServer";
14
+ publisher: "MicrosoftWindowsServer";
15
+ sku: "2019-Datacenter";
16
+ };
17
+ linux?: {
18
+ offer: "UbuntuServer";
19
+ publisher: "Canonical";
20
+ sku: "18.04-LTS";
21
+ };
22
+ vaultInfo?: KeyVaultInfo;
23
+ /**The time zone ID: https://stackoverflow.com/questions/7908343/list-of-timezone-ids-for-use-with-findtimezonebyid-in-c*/
24
+ timeZone?: Input<string>;
25
+ osDiskSizeGB?: number;
26
+ dataDiskSizeGB?: number;
27
+ schedule?: {
28
+ autoShutdownTime: Input<string>;
29
+ };
30
+ lock?: boolean;
31
+ tags?: {
32
+ [key: string]: Input<string>;
33
+ };
34
+ dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
35
+ }
36
+ declare const _default: ({ name, group, subnetId, vmSize, timeZone, storageAccountType, osDiskSizeGB, dataDiskSizeGB, schedule, login, windows, linux, lock, tags, dependsOn, ...others }: Props) => import("@pulumi/azure-native/compute/virtualMachine").VirtualMachine;
37
+ export default _default;
package/VM/index.js ADDED
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const native = require("@pulumi/azure-native");
4
+ const Naming_1 = require("../Common/Naming");
5
+ const AzureEnv_1 = require("../Common/AzureEnv");
6
+ const Locker_1 = require("../Core/Locker");
7
+ exports.default = ({ name, group, subnetId, vmSize = "Standard_B2s", timeZone = "Singapore Standard Time",
8
+ //licenseType = 'None',
9
+ storageAccountType = native.compute.StorageAccountTypes.Premium_LRS, osDiskSizeGB = 128, dataDiskSizeGB, schedule, login, windows, linux,
10
+ //vaultInfo,
11
+ lock = true, tags = {}, dependsOn, ...others }) => {
12
+ const vmName = (0, Naming_1.getVMName)(name);
13
+ const nicName = (0, Naming_1.getNICName)(name);
14
+ const nic = new native.network.NetworkInterface(nicName, {
15
+ networkInterfaceName: nicName,
16
+ ...group,
17
+ ipConfigurations: [
18
+ { name: "ipconfig", subnet: { id: subnetId }, primary: true },
19
+ ],
20
+ nicType: native.network.NetworkInterfaceNicType.Standard,
21
+ });
22
+ const vm = new native.compute.VirtualMachine(vmName, {
23
+ vmName,
24
+ ...group,
25
+ ...others,
26
+ hardwareProfile: { vmSize },
27
+ identity: { type: "SystemAssigned" },
28
+ licenseType: "None",
29
+ networkProfile: {
30
+ networkInterfaces: [{ id: nic.id, primary: true }],
31
+ },
32
+ osProfile: {
33
+ computerName: name,
34
+ adminUsername: login.userName,
35
+ adminPassword: login.password,
36
+ allowExtensionOperations: true,
37
+ //Need to be enabled at subscription level
38
+ //requireGuestProvisionSignal: true,
39
+ linuxConfiguration: linux
40
+ ? {
41
+ //ssh: { publicKeys: [{ keyData: linux.sshPublicKey! }] },
42
+ disablePasswordAuthentication: false,
43
+ provisionVMAgent: true,
44
+ patchSettings: {
45
+ //assessmentMode: "AutomaticByPlatform",
46
+ patchMode: "AutomaticByPlatform",
47
+ },
48
+ }
49
+ : undefined,
50
+ windowsConfiguration: windows
51
+ ? {
52
+ enableAutomaticUpdates: true,
53
+ provisionVMAgent: true,
54
+ timeZone,
55
+ patchSettings: {
56
+ enableHotpatching: false,
57
+ //Need to be enabled at subscription level
58
+ //assessmentMode: 'AutomaticByPlatform',
59
+ patchMode: "AutomaticByPlatform",
60
+ },
61
+ }
62
+ : undefined,
63
+ },
64
+ storageProfile: {
65
+ imageReference: {
66
+ ...(windows || linux),
67
+ version: "latest",
68
+ },
69
+ osDisk: {
70
+ name: `${name}osdisk`,
71
+ diskSizeGB: osDiskSizeGB,
72
+ caching: "ReadWrite",
73
+ createOption: "FromImage",
74
+ osType: windows ? "Windows" : "Linux",
75
+ managedDisk: {
76
+ //Changes storage account type need to be done manually through portal.
77
+ storageAccountType,
78
+ },
79
+ },
80
+ dataDisks: dataDiskSizeGB
81
+ ? [
82
+ {
83
+ name: `${name}datadisk`,
84
+ diskSizeGB: dataDiskSizeGB,
85
+ createOption: native.compute.DiskCreateOptionTypes.Empty,
86
+ lun: 1,
87
+ },
88
+ ]
89
+ : [],
90
+ },
91
+ diagnosticsProfile: { bootDiagnostics: { enabled: true } },
92
+ // securityProfile: {
93
+ // //Need to be enabled at subscription level
94
+ // encryptionAtHost: false,
95
+ // //securityType: native.compute.SecurityTypes.TrustedLaunch,
96
+ // },
97
+ tags: { ...AzureEnv_1.defaultTags, ...tags },
98
+ }, {
99
+ dependsOn,
100
+ ignoreChanges: [
101
+ "storageProfile.osDisk.managedDisk.storageAccountType",
102
+ "storageProfile.osDisk.managedDisk.id",
103
+ ],
104
+ });
105
+ if (lock) {
106
+ (0, Locker_1.default)({ name: vmName, resourceId: vm.id, dependsOn: vm });
107
+ }
108
+ if (schedule) {
109
+ new native.devtestlab.GlobalSchedule(`shutdown-computevm-${vmName}`, {
110
+ name: `shutdown-computevm-${vmName}`,
111
+ ...group,
112
+ dailyRecurrence: { time: schedule.autoShutdownTime },
113
+ timeZoneId: timeZone,
114
+ status: "Enabled",
115
+ targetResourceId: vm.id,
116
+ taskType: "ComputeVmShutdownTask",
117
+ notificationSettings: {
118
+ status: "Disabled",
119
+ emailRecipient: "",
120
+ notificationLocale: "en",
121
+ timeInMinutes: 30,
122
+ webhookUrl: "",
123
+ },
124
+ }, { dependsOn: vm });
125
+ // if (schedule.autoStartupTime) {
126
+ // new native.devtestlab.GlobalSchedule(`${vmName}-auto-startup`, {
127
+ // name: `${vmName}-auto-startup`,
128
+ // ...group,
129
+ // dailyRecurrence: { time: schedule.autoStartupTime },
130
+ // timeZoneId: timeZone,
131
+ // targetResourceId: vm.id,
132
+ // taskType: 'LabVmAutoStart',
133
+ // });
134
+ // }
135
+ }
136
+ return vm;
137
+ };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVk0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwrQ0FBK0M7QUFFL0MsNkNBQXlEO0FBQ3pELGlEQUFpRDtBQUNqRCwyQ0FBb0M7QUFvQ3BDLGtCQUFlLENBQUMsRUFDZCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEdBQUcsY0FBYyxFQUN2QixRQUFRLEdBQUcseUJBQXlCO0FBQ3BDLHVCQUF1QjtBQUN2QixrQkFBa0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFDbkUsWUFBWSxHQUFHLEdBQUcsRUFDbEIsY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBQ0wsT0FBTyxFQUNQLEtBQUs7QUFFTCxZQUFZO0FBQ1osSUFBSSxHQUFHLElBQUksRUFDWCxJQUFJLEdBQUcsRUFBRSxFQUNULFNBQVMsRUFDVCxHQUFHLE1BQU0sRUFDSCxFQUFFLEVBQUU7SUFDVixNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBQSxtQkFBVSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7UUFDdkQsb0JBQW9CLEVBQUUsT0FBTztRQUM3QixHQUFHLEtBQUs7UUFDUixnQkFBZ0IsRUFBRTtZQUNoQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7U0FDOUQ7UUFDRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRO0tBQ3pELENBQUMsQ0FBQztJQUVILE1BQU0sRUFBRSxHQUFHLElBQUksTUFB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
@@ -0,0 +1,8 @@
1
+ import { BasicResourceArgs } from "../types";
2
+ import { Input, Resource } from "@pulumi/pulumi";
3
+ interface Props extends BasicResourceArgs {
4
+ subnetId: Input<string>;
5
+ dependsOn?: Input<Resource> | Input<Input<Resource>[]>;
6
+ }
7
+ declare const _default: ({ name, group, subnetId, dependsOn }: Props) => import("@pulumi/azure-native/network/bastionHost").BastionHost;
8
+ export default _default;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const IpAddress_1 = require("./IpAddress");
4
+ const network = require("@pulumi/azure-native/network");
5
+ const Naming_1 = require("../Common/Naming");
6
+ const AzureEnv_1 = require("../Common/AzureEnv");
7
+ exports.default = ({ name, group, subnetId, dependsOn }) => {
8
+ name = (0, Naming_1.getBastionName)(name);
9
+ const ipAddress = (0, IpAddress_1.default)({
10
+ name,
11
+ group,
12
+ sku: { name: "Standard", tier: "Regional" },
13
+ lock: false,
14
+ });
15
+ return new network.BastionHost(name, {
16
+ bastionHostName: name,
17
+ ...group,
18
+ //dnsName: name,
19
+ ipConfigurations: [
20
+ {
21
+ name: "IpConfig",
22
+ publicIPAddress: { id: ipAddress.id },
23
+ subnet: { id: subnetId },
24
+ privateIPAllocationMethod: network.IPAllocationMethod.Dynamic,
25
+ },
26
+ ],
27
+ tags: AzureEnv_1.defaultTags,
28
+ }, { dependsOn: dependsOn || ipAddress, deleteBeforeReplace: true });
29
+ };
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WTmV0L0Jhc3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyQ0FBb0M7QUFDcEMsd0RBQXdEO0FBRXhELDZDQUFrRDtBQUNsRCxpREFBaUQ7QUFPakQsa0JBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBUyxFQUFFLEVBQUU7SUFDN0QsSUFBSSxHQUFHLElBQUEsdUJBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUU1QixNQUFNLFNBQVMsR0FBRyxJQUFBLG1CQUFTLEVBQUM7UUFDMUIsSUFBSTtRQUNKLEtBQUs7UUFDTCxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7UUFDM0MsSUFBSSxFQUFFLEtBQUs7S0FDWixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FDNUIsSUFBSSxFQUNKO1FBQ0UsZUFBZSxFQUFFLElBQUk7UUFDckIsR0FBRyxLQUFLO1FBQ1IsZ0JBQWdCO1FBRWhCLGdCQUFnQixFQUFFO1lBQ2hCO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRTtnQkFDeEIseUJBQXlCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE9BQU87YUFDOUQ7U0FDRjtRQUVELElBQUksRUFBRSxzQkFBVztLQUNsQixFQUNELEVBQUUsU0FBUyxFQUFFLFNBQVMsSUFBSSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQ2pFLENBQUM7QUFDSixDQUFDLENBQUMifQ==