Browse code
init
Ed Langley authored on 09/03/2018 19:17:06
Showing 6 changed files
Showing 6 changed files
0 | 14 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,24 @@ |
1 |
+# Change Log |
|
2 |
+All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/). |
|
3 |
+ |
|
4 |
+## [Unreleased] |
|
5 |
+### Changed |
|
6 |
+- Add a new arity to `make-widget-async` to provide a different widget shape. |
|
7 |
+ |
|
8 |
+## [0.1.1] - 2018-02-22 |
|
9 |
+### Changed |
|
10 |
+- Documentation on how to make the widgets. |
|
11 |
+ |
|
12 |
+### Removed |
|
13 |
+- `make-widget-sync` - we're all async, all the time. |
|
14 |
+ |
|
15 |
+### Fixed |
|
16 |
+- Fixed widget maker to keep working when daylight savings switches over. |
|
17 |
+ |
|
18 |
+## 0.1.0 - 2018-02-22 |
|
19 |
+### Added |
|
20 |
+- Files from the new template. |
|
21 |
+- Widget maker public API - `make-widget-sync`. |
|
22 |
+ |
|
23 |
+[Unreleased]: https://github.com/your-name/my-infra/compare/0.1.1...HEAD |
|
24 |
+[0.1.1]: https://github.com/your-name/my-infra/compare/0.1.0...0.1.1 |
0 | 25 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,214 @@ |
1 |
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC |
|
2 |
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM |
|
3 |
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. |
|
4 |
+ |
|
5 |
+1. DEFINITIONS |
|
6 |
+ |
|
7 |
+"Contribution" means: |
|
8 |
+ |
|
9 |
+a) in the case of the initial Contributor, the initial code and |
|
10 |
+documentation distributed under this Agreement, and |
|
11 |
+ |
|
12 |
+b) in the case of each subsequent Contributor: |
|
13 |
+ |
|
14 |
+i) changes to the Program, and |
|
15 |
+ |
|
16 |
+ii) additions to the Program; |
|
17 |
+ |
|
18 |
+where such changes and/or additions to the Program originate from and are |
|
19 |
+distributed by that particular Contributor. A Contribution 'originates' from |
|
20 |
+a Contributor if it was added to the Program by such Contributor itself or |
|
21 |
+anyone acting on such Contributor's behalf. Contributions do not include |
|
22 |
+additions to the Program which: (i) are separate modules of software |
|
23 |
+distributed in conjunction with the Program under their own license |
|
24 |
+agreement, and (ii) are not derivative works of the Program. |
|
25 |
+ |
|
26 |
+"Contributor" means any person or entity that distributes the Program. |
|
27 |
+ |
|
28 |
+"Licensed Patents" mean patent claims licensable by a Contributor which are |
|
29 |
+necessarily infringed by the use or sale of its Contribution alone or when |
|
30 |
+combined with the Program. |
|
31 |
+ |
|
32 |
+"Program" means the Contributions distributed in accordance with this |
|
33 |
+Agreement. |
|
34 |
+ |
|
35 |
+"Recipient" means anyone who receives the Program under this Agreement, |
|
36 |
+including all Contributors. |
|
37 |
+ |
|
38 |
+2. GRANT OF RIGHTS |
|
39 |
+ |
|
40 |
+a) Subject to the terms of this Agreement, each Contributor hereby grants |
|
41 |
+Recipient a non-exclusive, worldwide, royalty-free copyright license to |
|
42 |
+reproduce, prepare derivative works of, publicly display, publicly perform, |
|
43 |
+distribute and sublicense the Contribution of such Contributor, if any, and |
|
44 |
+such derivative works, in source code and object code form. |
|
45 |
+ |
|
46 |
+b) Subject to the terms of this Agreement, each Contributor hereby grants |
|
47 |
+Recipient a non-exclusive, worldwide, royalty-free patent license under |
|
48 |
+Licensed Patents to make, use, sell, offer to sell, import and otherwise |
|
49 |
+transfer the Contribution of such Contributor, if any, in source code and |
|
50 |
+object code form. This patent license shall apply to the combination of the |
|
51 |
+Contribution and the Program if, at the time the Contribution is added by the |
|
52 |
+Contributor, such addition of the Contribution causes such combination to be |
|
53 |
+covered by the Licensed Patents. The patent license shall not apply to any |
|
54 |
+other combinations which include the Contribution. No hardware per se is |
|
55 |
+licensed hereunder. |
|
56 |
+ |
|
57 |
+c) Recipient understands that although each Contributor grants the licenses |
|
58 |
+to its Contributions set forth herein, no assurances are provided by any |
|
59 |
+Contributor that the Program does not infringe the patent or other |
|
60 |
+intellectual property rights of any other entity. Each Contributor disclaims |
|
61 |
+any liability to Recipient for claims brought by any other entity based on |
|
62 |
+infringement of intellectual property rights or otherwise. As a condition to |
|
63 |
+exercising the rights and licenses granted hereunder, each Recipient hereby |
|
64 |
+assumes sole responsibility to secure any other intellectual property rights |
|
65 |
+needed, if any. For example, if a third party patent license is required to |
|
66 |
+allow Recipient to distribute the Program, it is Recipient's responsibility |
|
67 |
+to acquire that license before distributing the Program. |
|
68 |
+ |
|
69 |
+d) Each Contributor represents that to its knowledge it has sufficient |
|
70 |
+copyright rights in its Contribution, if any, to grant the copyright license |
|
71 |
+set forth in this Agreement. |
|
72 |
+ |
|
73 |
+3. REQUIREMENTS |
|
74 |
+ |
|
75 |
+A Contributor may choose to distribute the Program in object code form under |
|
76 |
+its own license agreement, provided that: |
|
77 |
+ |
|
78 |
+a) it complies with the terms and conditions of this Agreement; and |
|
79 |
+ |
|
80 |
+b) its license agreement: |
|
81 |
+ |
|
82 |
+i) effectively disclaims on behalf of all Contributors all warranties and |
|
83 |
+conditions, express and implied, including warranties or conditions of title |
|
84 |
+and non-infringement, and implied warranties or conditions of merchantability |
|
85 |
+and fitness for a particular purpose; |
|
86 |
+ |
|
87 |
+ii) effectively excludes on behalf of all Contributors all liability for |
|
88 |
+damages, including direct, indirect, special, incidental and consequential |
|
89 |
+damages, such as lost profits; |
|
90 |
+ |
|
91 |
+iii) states that any provisions which differ from this Agreement are offered |
|
92 |
+by that Contributor alone and not by any other party; and |
|
93 |
+ |
|
94 |
+iv) states that source code for the Program is available from such |
|
95 |
+Contributor, and informs licensees how to obtain it in a reasonable manner on |
|
96 |
+or through a medium customarily used for software exchange. |
|
97 |
+ |
|
98 |
+When the Program is made available in source code form: |
|
99 |
+ |
|
100 |
+a) it must be made available under this Agreement; and |
|
101 |
+ |
|
102 |
+b) a copy of this Agreement must be included with each copy of the Program. |
|
103 |
+ |
|
104 |
+Contributors may not remove or alter any copyright notices contained within |
|
105 |
+the Program. |
|
106 |
+ |
|
107 |
+Each Contributor must identify itself as the originator of its Contribution, |
|
108 |
+if any, in a manner that reasonably allows subsequent Recipients to identify |
|
109 |
+the originator of the Contribution. |
|
110 |
+ |
|
111 |
+4. COMMERCIAL DISTRIBUTION |
|
112 |
+ |
|
113 |
+Commercial distributors of software may accept certain responsibilities with |
|
114 |
+respect to end users, business partners and the like. While this license is |
|
115 |
+intended to facilitate the commercial use of the Program, the Contributor who |
|
116 |
+includes the Program in a commercial product offering should do so in a |
|
117 |
+manner which does not create potential liability for other Contributors. |
|
118 |
+Therefore, if a Contributor includes the Program in a commercial product |
|
119 |
+offering, such Contributor ("Commercial Contributor") hereby agrees to defend |
|
120 |
+and indemnify every other Contributor ("Indemnified Contributor") against any |
|
121 |
+losses, damages and costs (collectively "Losses") arising from claims, |
|
122 |
+lawsuits and other legal actions brought by a third party against the |
|
123 |
+Indemnified Contributor to the extent caused by the acts or omissions of such |
|
124 |
+Commercial Contributor in connection with its distribution of the Program in |
|
125 |
+a commercial product offering. The obligations in this section do not apply |
|
126 |
+to any claims or Losses relating to any actual or alleged intellectual |
|
127 |
+property infringement. In order to qualify, an Indemnified Contributor must: |
|
128 |
+a) promptly notify the Commercial Contributor in writing of such claim, and |
|
129 |
+b) allow the Commercial Contributor tocontrol, and cooperate with the |
|
130 |
+Commercial Contributor in, the defense and any related settlement |
|
131 |
+negotiations. The Indemnified Contributor may participate in any such claim |
|
132 |
+at its own expense. |
|
133 |
+ |
|
134 |
+For example, a Contributor might include the Program in a commercial product |
|
135 |
+offering, Product X. That Contributor is then a Commercial Contributor. If |
|
136 |
+that Commercial Contributor then makes performance claims, or offers |
|
137 |
+warranties related to Product X, those performance claims and warranties are |
|
138 |
+such Commercial Contributor's responsibility alone. Under this section, the |
|
139 |
+Commercial Contributor would have to defend claims against the other |
|
140 |
+Contributors related to those performance claims and warranties, and if a |
|
141 |
+court requires any other Contributor to pay any damages as a result, the |
|
142 |
+Commercial Contributor must pay those damages. |
|
143 |
+ |
|
144 |
+5. NO WARRANTY |
|
145 |
+ |
|
146 |
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON |
|
147 |
+AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER |
|
148 |
+EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR |
|
149 |
+CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A |
|
150 |
+PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the |
|
151 |
+appropriateness of using and distributing the Program and assumes all risks |
|
152 |
+associated with its exercise of rights under this Agreement , including but |
|
153 |
+not limited to the risks and costs of program errors, compliance with |
|
154 |
+applicable laws, damage to or loss of data, programs or equipment, and |
|
155 |
+unavailability or interruption of operations. |
|
156 |
+ |
|
157 |
+6. DISCLAIMER OF LIABILITY |
|
158 |
+ |
|
159 |
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY |
|
160 |
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
161 |
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION |
|
162 |
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
163 |
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
164 |
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE |
|
165 |
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY |
|
166 |
+OF SUCH DAMAGES. |
|
167 |
+ |
|
168 |
+7. GENERAL |
|
169 |
+ |
|
170 |
+If any provision of this Agreement is invalid or unenforceable under |
|
171 |
+applicable law, it shall not affect the validity or enforceability of the |
|
172 |
+remainder of the terms of this Agreement, and without further action by the |
|
173 |
+parties hereto, such provision shall be reformed to the minimum extent |
|
174 |
+necessary to make such provision valid and enforceable. |
|
175 |
+ |
|
176 |
+If Recipient institutes patent litigation against any entity (including a |
|
177 |
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself |
|
178 |
+(excluding combinations of the Program with other software or hardware) |
|
179 |
+infringes such Recipient's patent(s), then such Recipient's rights granted |
|
180 |
+under Section 2(b) shall terminate as of the date such litigation is filed. |
|
181 |
+ |
|
182 |
+All Recipient's rights under this Agreement shall terminate if it fails to |
|
183 |
+comply with any of the material terms or conditions of this Agreement and |
|
184 |
+does not cure such failure in a reasonable period of time after becoming |
|
185 |
+aware of such noncompliance. If all Recipient's rights under this Agreement |
|
186 |
+terminate, Recipient agrees to cease use and distribution of the Program as |
|
187 |
+soon as reasonably practicable. However, Recipient's obligations under this |
|
188 |
+Agreement and any licenses granted by Recipient relating to the Program shall |
|
189 |
+continue and survive. |
|
190 |
+ |
|
191 |
+Everyone is permitted to copy and distribute copies of this Agreement, but in |
|
192 |
+order to avoid inconsistency the Agreement is copyrighted and may only be |
|
193 |
+modified in the following manner. The Agreement Steward reserves the right to |
|
194 |
+publish new versions (including revisions) of this Agreement from time to |
|
195 |
+time. No one other than the Agreement Steward has the right to modify this |
|
196 |
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The |
|
197 |
+Eclipse Foundation may assign the responsibility to serve as the Agreement |
|
198 |
+Steward to a suitable separate entity. Each new version of the Agreement will |
|
199 |
+be given a distinguishing version number. The Program (including |
|
200 |
+Contributions) may always be distributed subject to the version of the |
|
201 |
+Agreement under which it was received. In addition, after a new version of |
|
202 |
+the Agreement is published, Contributor may elect to distribute the Program |
|
203 |
+(including its Contributions) under the new version. Except as expressly |
|
204 |
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or |
|
205 |
+licenses to the intellectual property of any Contributor under this |
|
206 |
+Agreement, whether expressly, by implication, estoppel or otherwise. All |
|
207 |
+rights in the Program not expressly granted under this Agreement are |
|
208 |
+reserved. |
|
209 |
+ |
|
210 |
+This Agreement is governed by the laws of the State of New York and the |
|
211 |
+intellectual property laws of the United States of America. No party to this |
|
212 |
+Agreement will bring a legal action under this Agreement more than one year |
|
213 |
+after the cause of action arose. Each party waives its rights to a jury trial |
|
214 |
+in any resulting litigation. |
0 | 215 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,50 @@ |
1 |
+# my-infra |
|
2 |
+ |
|
3 |
+FIXME: description |
|
4 |
+ |
|
5 |
+## Installation |
|
6 |
+ |
|
7 |
+Download from http://example.com/FIXME. |
|
8 |
+ |
|
9 |
+## Usage |
|
10 |
+ |
|
11 |
+FIXME: explanation |
|
12 |
+ |
|
13 |
+Run the project directly: |
|
14 |
+ |
|
15 |
+ $ boot run |
|
16 |
+ |
|
17 |
+Run the project's tests (they'll fail until you edit them): |
|
18 |
+ |
|
19 |
+ $ boot test |
|
20 |
+ |
|
21 |
+Build an uberjar from the project: |
|
22 |
+ |
|
23 |
+ $ boot build |
|
24 |
+ |
|
25 |
+Run the uberjar: |
|
26 |
+ |
|
27 |
+ $ java -jar target/my-infra-0.1.0-SNAPSHOT-standalone.jar [args] |
|
28 |
+ |
|
29 |
+## Options |
|
30 |
+ |
|
31 |
+FIXME: listing of options this app accepts. |
|
32 |
+ |
|
33 |
+## Examples |
|
34 |
+ |
|
35 |
+... |
|
36 |
+ |
|
37 |
+### Bugs |
|
38 |
+ |
|
39 |
+... |
|
40 |
+ |
|
41 |
+### Any Other Sections |
|
42 |
+### That You Think |
|
43 |
+### Might be Useful |
|
44 |
+ |
|
45 |
+## License |
|
46 |
+ |
|
47 |
+Copyright © 2018 FIXME |
|
48 |
+ |
|
49 |
+Distributed under the Eclipse Public License either version 1.0 or (at |
|
50 |
+your option) any later version. |
0 | 51 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,46 @@ |
1 |
+(def project 'my-infra) |
|
2 |
+(def version "0.1.0-SNAPSHOT") |
|
3 |
+ |
|
4 |
+(set-env! :resource-paths #{"resources" "src"} |
|
5 |
+ :source-paths #{"test"} |
|
6 |
+ :dependencies '[[org.clojure/clojure "RELEASE"] |
|
7 |
+ [samestep/boot-refresh "0.1.0"] |
|
8 |
+ [adzerk/boot-test "RELEASE" :scope "test"] |
|
9 |
+ [amazonica "0.3.120"]]) |
|
10 |
+ |
|
11 |
+(task-options! |
|
12 |
+ aot {:namespace #{'my-infra.core}} |
|
13 |
+ pom {:project project |
|
14 |
+ :version version |
|
15 |
+ :description "FIXME: write description" |
|
16 |
+ :url "http://example/FIXME" |
|
17 |
+ :scm {:url "https://github.com/yourname/correlation-learning"} |
|
18 |
+ :license {"Eclipse Public License" |
|
19 |
+ "http://www.eclipse.org/legal/epl-v10.html"}} |
|
20 |
+ jar {:main 'my-infra.core |
|
21 |
+ :file (str "my-infra-" version "-standalone.jar")}) |
|
22 |
+ |
|
23 |
+(require '[samestep.boot-refresh :refer [refresh]]) |
|
24 |
+(require '[adzerk.boot-test :refer [test]]) |
|
25 |
+ |
|
26 |
+(deftask build |
|
27 |
+ "Build the project locally as a JAR." |
|
28 |
+ [d dir PATH #{str} "the set of directories to write to (target)."] |
|
29 |
+ (let [dir (if (seq dir) dir #{"target"})] |
|
30 |
+ (comp (aot) (pom) (uber) (jar) (target :dir dir)))) |
|
31 |
+ |
|
32 |
+(deftask dev [] |
|
33 |
+ (comp (watch :verbose true) |
|
34 |
+ #_(repl :server true) |
|
35 |
+ (refresh) |
|
36 |
+ (speak) |
|
37 |
+ (build) |
|
38 |
+ #_(test))) |
|
39 |
+ |
|
40 |
+(deftask run |
|
41 |
+ "Run the project." |
|
42 |
+ [a args ARG [str] "the arguments for the application."] |
|
43 |
+ (require '[my-infra.core :as app]) |
|
44 |
+ (apply (resolve 'app/-main) args)) |
|
45 |
+ |
|
46 |
+(require '[adzerk.boot-test :refer [test]]) |
0 | 47 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,171 @@ |
1 |
+(ns my-infra.core |
|
2 |
+ (:use [amazonica.aws.ec2]) |
|
3 |
+ (:gen-class)) |
|
4 |
+ |
|
5 |
+(defn mapply [f & args] |
|
6 |
+ (apply f (apply concat (butlast args) (last args)))) |
|
7 |
+ |
|
8 |
+(defn ^:private id-dispatch-fn [type descriptor] |
|
9 |
+ type) |
|
10 |
+ |
|
11 |
+(defmulti id |
|
12 |
+ #'id-dispatch-fn) |
|
13 |
+ |
|
14 |
+(defmethod id ::vpc [_ thing] |
|
15 |
+ (:vpc-id thing)) |
|
16 |
+ |
|
17 |
+(defmethod id ::internet-gateway [_ thing] |
|
18 |
+ (:internet-gateway-id thing)) |
|
19 |
+ |
|
20 |
+(defmethod id ::subnet [_ thing] |
|
21 |
+ (:subnet-id thing)) |
|
22 |
+ |
|
23 |
+(defmethod id ::route-table [_ thing] |
|
24 |
+ (:route-table-id thing)) |
|
25 |
+ |
|
26 |
+(defn ^:private create-dispatch-fn [a & r] |
|
27 |
+ (::type a)) |
|
28 |
+ |
|
29 |
+(defn ^:private params-dispatch-fn [a & r] |
|
30 |
+ (::type a)) |
|
31 |
+ |
|
32 |
+(defmulti params |
|
33 |
+ #'params-dispatch-fn) |
|
34 |
+ |
|
35 |
+(defmulti create |
|
36 |
+ #'create-dispatch-fn) |
|
37 |
+ |
|
38 |
+(defn unwrap [thing] |
|
39 |
+ (dissoc thing ::type)) |
|
40 |
+ |
|
41 |
+(defmethod create ::vpc [thing cred & r] |
|
42 |
+ (:vpc (mapply create-vpc cred |
|
43 |
+ (unwrap thing)))) |
|
44 |
+ |
|
45 |
+(defmethod create ::subnet [thing cred vpc & r] |
|
46 |
+ (:subnet (mapply create-subnet cred |
|
47 |
+ (assoc (unwrap thing) |
|
48 |
+ :vpc-id (id ::vpc vpc))))) |
|
49 |
+ |
|
50 |
+(defmethod create ::route-table [thing cred vpc & r] |
|
51 |
+ (:route-table (mapply create-route-table cred |
|
52 |
+ (assoc (unwrap thing) |
|
53 |
+ :vpc-id (id ::vpc vpc))))) |
|
54 |
+ |
|
55 |
+(defmethod create ::route [thing cred route-table & r] |
|
56 |
+ (:route (mapply create-route cred |
|
57 |
+ (assoc (unwrap thing) |
|
58 |
+ :route-table-id (id ::route-table route-table))))) |
|
59 |
+ |
|
60 |
+(defmethod create ::internet-gateway [thing cred vpc & r] |
|
61 |
+ (let [result (:internet-gateway (mapply create-internet-gateway cred |
|
62 |
+ (unwrap thing)))] |
|
63 |
+ (println (attach-internet-gateway cred |
|
64 |
+ :internet-gateway-id (id ::internet-gateway result) |
|
65 |
+ :vpc-id (id ::vpc vpc))) |
|
66 |
+ result)) |
|
67 |
+ |
|
68 |
+(def cred {:profile "personal" |
|
69 |
+ :endpoint "us-west-2"}) |
|
70 |
+ |
|
71 |
+(defmethod params ::my-vpc [thing & r] |
|
72 |
+ {:cidr-block "172.16.234.0/24"}) |
|
73 |
+ |
|
74 |
+(defmethod params ::my-subnet [thing vpc & r] |
|
75 |
+ {:vpc-id (id ::vpc vpc) |
|
76 |
+ :cidr-block "172.16.234.0/25" |
|
77 |
+ :associate-public-ip-address true}) |
|
78 |
+ |
|
79 |
+(defmethod params ::my-route-table [thing vpc & r] |
|
80 |
+ {:vpc-id (id ::vpc vpc)}) |
|
81 |
+ |
|
82 |
+(defmulti route-type identity) |
|
83 |
+(defmethod route-type ::internet-gateway [_] :gateway-id) |
|
84 |
+ |
|
85 |
+(defn make-routes [route-table cred vpc subnet & routes] |
|
86 |
+ (clojure.pprint/pprint routes) |
|
87 |
+ (doall |
|
88 |
+ (map (fn [[destination target-type target :as first] other] |
|
89 |
+ (create {::type ::route |
|
90 |
+ :destination-cidr-block destination |
|
91 |
+ (route-type target-type) (id target-type target)} |
|
92 |
+ route-table)) |
|
93 |
+ routes)) |
|
94 |
+ (associate-route-table cred |
|
95 |
+ :route-table-id (id ::route-table route-table) |
|
96 |
+ :subnet-id (id ::subnet subnet)) |
|
97 |
+ route-table) |
|
98 |
+ |
|
99 |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
100 |
+;; new-api |
|
101 |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
102 |
+ |
|
103 |
+(def vpc (create {::type ::vpc |
|
104 |
+ :cidr-block "10.1.0.0/16"} |
|
105 |
+ cred)) |
|
106 |
+ |
|
107 |
+(def subnet (create {::type ::subnet |
|
108 |
+ :cidr-block "10.1.1.0/24" |
|
109 |
+ :associate-public-ip-address true} |
|
110 |
+ cred |
|
111 |
+ vpc)) |
|
112 |
+ |
|
113 |
+(def internet-gateway (create {::type ::internet-gateway} |
|
114 |
+ cred |
|
115 |
+ vpc)) |
|
116 |
+ |
|
117 |
+(def route-table (make-routes {::type ::my-route-table} |
|
118 |
+ cred vpc subnet |
|
119 |
+ ["0.0.0.0/0" ::internet-gateway internet-gateway])) |
|
120 |
+ |
|
121 |
+(defn -main |
|
122 |
+ "I don't do a whole lot ... yet." |
|
123 |
+ [& args] |
|
124 |
+ (println "Hello, World!")) |
|
125 |
+ |
|
126 |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
127 |
+;; old-api |
|
128 |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
129 |
+;; |
|
130 |
+;; (derive ::my-vpc ::vpc) |
|
131 |
+;; (derive ::my-subnet ::subnet) |
|
132 |
+;; (derive ::my-internet-gateway ::internet-gateway) |
|
133 |
+;; (derive ::my-route-table ::route-table) |
|
134 |
+;; |
|
135 |
+;; |
|
136 |
+;; (def vpc (create ::my-vpc cred)) |
|
137 |
+;; |
|
138 |
+;; (def subnet (create ::my-subnet cred vpc)) |
|
139 |
+;; |
|
140 |
+;; (def internet-gateway (create ::my-internet-gateway cred vpc)) |
|
141 |
+;; |
|
142 |
+;; (def route-table (make-routes ::my-route-table cred vpc subnet |
|
143 |
+;; ["0.0.0.0/0" ::internet-gateway internet-gateway])) |
|
144 |
+;; |
|
145 |
+;; (def init |
|
146 |
+;; "#!/bin/bash |
|
147 |
+;; cd /home/admin |
|
148 |
+;; umask 077 |
|
149 |
+;; mkdir -p .ssh |
|
150 |
+;; cd .ssh |
|
151 |
+;; echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB//SW/+2QPkeDh6qvXFymOAyxjL+Cq9QBWgnZrZT/Qx edwlan@srv2' > authorized_keys |
|
152 |
+;; ping -c 3 srv2.elangley.org |
|
153 |
+;; curl https://srv2.elangley.org/~edwlan/.well-known/ssh/authorized_keys | tee -a authorized_keys |
|
154 |
+;; ssh-keygen -t ed25519 -f id_ed25519 -N '' |
|
155 |
+;; export DEBIAN_FRONTEND=noninteractive |
|
156 |
+;; apt-get install -yq encfs |
|
157 |
+;; apt-get install -yq postfix postfix-pgsql |
|
158 |
+;; apt-get install -yq dovecot-core dovecot-imapd dovecot-mysql mysql-server dovecot-lmtpd |
|
159 |
+;; ") |
|
160 |
+;; |
|
161 |
+;; (def vms |
|
162 |
+;; (run-instances cred |
|
163 |
+;; :image-id "ami-71d8820b" |
|
164 |
+;; :instance-type "t2.micro" |
|
165 |
+;; :min-count 1 |
|
166 |
+;; :max-count 1 |
|
167 |
+;; :user-data (encode init) |
|
168 |
+;; :network-interfaces [{:device-index 0 |
|
169 |
+;; :subnet-id (id ::subnet subnet) |
|
170 |
+;; :associate-public-ip-address true}])) |
|
171 |
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |