mirror of
https://github.com/jcwimer/multi-cloud-kubernetes
synced 2026-03-24 17:34:43 +00:00
Terraform working with ansible
This commit is contained in:
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
terraform-code/terraform.tfstate*
|
||||
terraform-code/inventory
|
||||
terraform-code/.terraform
|
||||
terraform
|
||||
prod.env
|
||||
ansible/playbooks/*.retry
|
||||
12
ansible/Pipfile
Normal file
12
ansible/Pipfile
Normal file
@@ -0,0 +1,12 @@
|
||||
[[source]]
|
||||
url = "https://pypi.python.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[packages]
|
||||
ansible = "==2.4.0.0"
|
||||
|
||||
[requires]
|
||||
python_version = "2.7"
|
||||
235
ansible/Pipfile.lock
generated
Normal file
235
ansible/Pipfile.lock
generated
Normal file
@@ -0,0 +1,235 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "1e5c097d8a5cd9ad5a726b99b1e2e28b3fc9bc86409327d587cd0958edcd1586"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "2.7"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.python.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"ansible": {
|
||||
"hashes": [
|
||||
"sha256:1a276fee7f72d4e6601a7994879e8467edb763dacc3e215258cfe71350b77c76"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.4.0.0"
|
||||
},
|
||||
"bcrypt": {
|
||||
"hashes": [
|
||||
"sha256:0258f143f3de96b7c14f762c770f5fc56ccd72f8a1857a451c1cd9a655d9ac89",
|
||||
"sha256:0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42",
|
||||
"sha256:19a4b72a6ae5bb467fea018b825f0a7d917789bcfe893e53f15c92805d187294",
|
||||
"sha256:5432dd7b34107ae8ed6c10a71b4397f1c853bd39a4d6ffa7e35f40584cffd161",
|
||||
"sha256:6305557019906466fc42dbc53b46da004e72fd7a551c044a827e572c82191752",
|
||||
"sha256:69361315039878c0680be456640f8705d76cb4a3a3fe1e057e0f261b74be4b31",
|
||||
"sha256:6fe49a60b25b584e2f4ef175b29d3a83ba63b3a4df1b4c0605b826668d1b6be5",
|
||||
"sha256:74a015102e877d0ccd02cdeaa18b32aa7273746914a6c5d0456dd442cb65b99c",
|
||||
"sha256:763669a367869786bb4c8fcf731f4175775a5b43f070f50f46f0b59da45375d0",
|
||||
"sha256:8b10acde4e1919d6015e1df86d4c217d3b5b01bb7744c36113ea43d529e1c3de",
|
||||
"sha256:9fe92406c857409b70a38729dbdf6578caf9228de0aef5bc44f859ffe971a39e",
|
||||
"sha256:a190f2a5dbbdbff4b74e3103cef44344bc30e61255beb27310e2aec407766052",
|
||||
"sha256:a595c12c618119255c90deb4b046e1ca3bcfad64667c43d1166f2b04bc72db09",
|
||||
"sha256:c9457fa5c121e94a58d6505cadca8bed1c64444b83b3204928a866ca2e599105",
|
||||
"sha256:cb93f6b2ab0f6853550b74e051d297c27a638719753eb9ff66d1e4072be67133",
|
||||
"sha256:ce4e4f0deb51d38b1611a27f330426154f2980e66582dc5f438aad38b5f24fc1",
|
||||
"sha256:d7bdc26475679dd073ba0ed2766445bb5b20ca4793ca0db32b399dccc6bc84b7",
|
||||
"sha256:ff032765bb8716d9387fd5376d987a937254b0619eff0972779515b5c98820bc"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==3.1.7"
|
||||
},
|
||||
"cffi": {
|
||||
"hashes": [
|
||||
"sha256:001bf3242a1bb04d985d63e138230802c6c8d4db3668fb545fb5005ddf5bb5ff",
|
||||
"sha256:00789914be39dffba161cfc5be31b55775de5ba2235fe49aa28c148236c4e06b",
|
||||
"sha256:028a579fc9aed3af38f4892bdcc7390508adabc30c6af4a6e4f611b0c680e6ac",
|
||||
"sha256:14491a910663bf9f13ddf2bc8f60562d6bc5315c1f09c704937ef17293fb85b0",
|
||||
"sha256:1cae98a7054b5c9391eb3249b86e0e99ab1e02bb0cc0575da191aedadbdf4384",
|
||||
"sha256:2089ed025da3919d2e75a4d963d008330c96751127dd6f73c8dc0c65041b4c26",
|
||||
"sha256:2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6",
|
||||
"sha256:337d448e5a725bba2d8293c48d9353fc68d0e9e4088d62a9571def317797522b",
|
||||
"sha256:399aed636c7d3749bbed55bc907c3288cb43c65c4389964ad5ff849b6370603e",
|
||||
"sha256:3b911c2dbd4f423b4c4fcca138cadde747abdb20d196c4a48708b8a2d32b16dd",
|
||||
"sha256:3d311bcc4a41408cf5854f06ef2c5cab88f9fded37a3b95936c9879c1640d4c2",
|
||||
"sha256:62ae9af2d069ea2698bf536dcfe1e4eed9090211dbaafeeedf5cb6c41b352f66",
|
||||
"sha256:66e41db66b47d0d8672d8ed2708ba91b2f2524ece3dee48b5dfb36be8c2f21dc",
|
||||
"sha256:675686925a9fb403edba0114db74e741d8181683dcf216be697d208857e04ca8",
|
||||
"sha256:7e63cbcf2429a8dbfe48dcc2322d5f2220b77b2e17b7ba023d6166d84655da55",
|
||||
"sha256:8a6c688fefb4e1cd56feb6c511984a6c4f7ec7d2a1ff31a10254f3c817054ae4",
|
||||
"sha256:8c0ffc886aea5df6a1762d0019e9cb05f825d0eec1f520c51be9d198701daee5",
|
||||
"sha256:95cd16d3dee553f882540c1ffe331d085c9e629499ceadfbda4d4fde635f4b7d",
|
||||
"sha256:99f748a7e71ff382613b4e1acc0ac83bf7ad167fb3802e35e90d9763daba4d78",
|
||||
"sha256:b8c78301cefcf5fd914aad35d3c04c2b21ce8629b5e4f4e45ae6812e461910fa",
|
||||
"sha256:c420917b188a5582a56d8b93bdd8e0f6eca08c84ff623a4c16e809152cd35793",
|
||||
"sha256:c43866529f2f06fe0edc6246eb4faa34f03fe88b64a0a9a942561c8e22f4b71f",
|
||||
"sha256:cab50b8c2250b46fe738c77dbd25ce017d5e6fb35d3407606e7a4180656a5a6a",
|
||||
"sha256:cef128cb4d5e0b3493f058f10ce32365972c554572ff821e175dbc6f8ff6924f",
|
||||
"sha256:cf16e3cf6c0a5fdd9bc10c21687e19d29ad1fe863372b5543deaec1039581a30",
|
||||
"sha256:e56c744aa6ff427a607763346e4170629caf7e48ead6921745986db3692f987f",
|
||||
"sha256:e577934fc5f8779c554639376beeaa5657d54349096ef24abe8c74c5d9c117c3",
|
||||
"sha256:f2b0fa0c01d8a0c7483afd9f31d7ecf2d71760ca24499c8697aeb5ca37dc090c"
|
||||
],
|
||||
"version": "==1.14.0"
|
||||
},
|
||||
"cryptography": {
|
||||
"hashes": [
|
||||
"sha256:091d31c42f444c6f519485ed528d8b451d1a0c7bf30e8ca583a0cac44b8a0df6",
|
||||
"sha256:18452582a3c85b96014b45686af264563e3e5d99d226589f057ace56196ec78b",
|
||||
"sha256:1dfa985f62b137909496e7fc182dac687206d8d089dd03eaeb28ae16eec8e7d5",
|
||||
"sha256:1e4014639d3d73fbc5ceff206049c5a9a849cefd106a49fa7aaaa25cc0ce35cf",
|
||||
"sha256:22e91636a51170df0ae4dcbd250d318fd28c9f491c4e50b625a49964b24fe46e",
|
||||
"sha256:3b3eba865ea2754738616f87292b7f29448aec342a7c720956f8083d252bf28b",
|
||||
"sha256:651448cd2e3a6bc2bb76c3663785133c40d5e1a8c1a9c5429e4354201c6024ae",
|
||||
"sha256:726086c17f94747cedbee6efa77e99ae170caebeb1116353c6cf0ab67ea6829b",
|
||||
"sha256:844a76bc04472e5135b909da6aed84360f522ff5dfa47f93e3dd2a0b84a89fa0",
|
||||
"sha256:88c881dd5a147e08d1bdcf2315c04972381d026cdb803325c03fe2b4a8ed858b",
|
||||
"sha256:96c080ae7118c10fcbe6229ab43eb8b090fccd31a09ef55f83f690d1ef619a1d",
|
||||
"sha256:a0c30272fb4ddda5f5ffc1089d7405b7a71b0b0f51993cb4e5dbb4590b2fc229",
|
||||
"sha256:bb1f0281887d89617b4c68e8db9a2c42b9efebf2702a3c5bf70599421a8623e3",
|
||||
"sha256:c447cf087cf2dbddc1add6987bbe2f767ed5317adb2d08af940db517dd704365",
|
||||
"sha256:c4fd17d92e9d55b84707f4fd09992081ba872d1a0c610c109c18e062e06a2e55",
|
||||
"sha256:d0d5aeaedd29be304848f1c5059074a740fa9f6f26b84c5b63e8b29e73dfc270",
|
||||
"sha256:daf54a4b07d67ad437ff239c8a4080cfd1cc7213df57d33c97de7b4738048d5e",
|
||||
"sha256:e993468c859d084d5579e2ebee101de8f5a27ce8e2159959b6673b418fd8c785",
|
||||
"sha256:f118a95c7480f5be0df8afeb9a11bd199aa20afab7a96bcf20409b411a3a85f0"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==2.9.2"
|
||||
},
|
||||
"enum34": {
|
||||
"hashes": [
|
||||
"sha256:a98a201d6de3f2ab3db284e70a33b0f896fbf35f8086594e8c9e74b909058d53",
|
||||
"sha256:c3858660960c984d6ab0ebad691265180da2b43f07e061c0f8dca9ef3cffd328",
|
||||
"sha256:cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248"
|
||||
],
|
||||
"markers": "python_version < '3'",
|
||||
"version": "==1.1.10"
|
||||
},
|
||||
"ipaddress": {
|
||||
"hashes": [
|
||||
"sha256:6e0f4a39e66cb5bb9a137b00276a2eff74f93b71dcbdad6f10ff7df9d3557fcc",
|
||||
"sha256:b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2"
|
||||
],
|
||||
"markers": "python_version < '3'",
|
||||
"version": "==1.0.23"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
"sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0",
|
||||
"sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==2.11.2"
|
||||
},
|
||||
"markupsafe": {
|
||||
"hashes": [
|
||||
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
|
||||
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
|
||||
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
|
||||
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
|
||||
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
|
||||
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
|
||||
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
|
||||
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
|
||||
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
|
||||
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
|
||||
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
|
||||
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
|
||||
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
|
||||
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
|
||||
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
|
||||
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
|
||||
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
|
||||
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
|
||||
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
|
||||
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
|
||||
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
|
||||
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
|
||||
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
|
||||
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
|
||||
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
|
||||
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
|
||||
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
|
||||
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
|
||||
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
|
||||
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
|
||||
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
|
||||
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
|
||||
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.1.1"
|
||||
},
|
||||
"paramiko": {
|
||||
"hashes": [
|
||||
"sha256:920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f",
|
||||
"sha256:9c980875fa4d2cb751604664e9a2d0f69096643f5be4db1b99599fe114a97b2f"
|
||||
],
|
||||
"version": "==2.7.1"
|
||||
},
|
||||
"pycparser": {
|
||||
"hashes": [
|
||||
"sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0",
|
||||
"sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.20"
|
||||
},
|
||||
"pynacl": {
|
||||
"hashes": [
|
||||
"sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4",
|
||||
"sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4",
|
||||
"sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574",
|
||||
"sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d",
|
||||
"sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25",
|
||||
"sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f",
|
||||
"sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505",
|
||||
"sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122",
|
||||
"sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7",
|
||||
"sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420",
|
||||
"sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f",
|
||||
"sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96",
|
||||
"sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6",
|
||||
"sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514",
|
||||
"sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff",
|
||||
"sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.4.0"
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97",
|
||||
"sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76",
|
||||
"sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2",
|
||||
"sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648",
|
||||
"sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf",
|
||||
"sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f",
|
||||
"sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2",
|
||||
"sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee",
|
||||
"sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d",
|
||||
"sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c",
|
||||
"sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"
|
||||
],
|
||||
"version": "==5.3.1"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
|
||||
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
||||
"version": "==1.15.0"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
||||
11
ansible/playbooks/site.yml
Normal file
11
ansible/playbooks/site.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
- name: All hosts ansible dependencies
|
||||
hosts: "masters,workers"
|
||||
user: root
|
||||
gather_facts: false
|
||||
serial: 100%
|
||||
vars:
|
||||
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
|
||||
tasks:
|
||||
- name: Update apt
|
||||
raw: apt-get update
|
||||
5
ansible/run-ansible.sh
Normal file
5
ansible/run-ansible.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
project_dir=$(git rev-parse --show-toplevel)
|
||||
cd ${project_dir}/ansible
|
||||
|
||||
ansible-playbook --inventory-file=${project_dir}/terraform-code/inventory --private-key ~/.ssh/id_home playbooks/site.yml
|
||||
24
deploy.sh
Normal file
24
deploy.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
project_dir=$(git rev-parse --show-toplevel)
|
||||
|
||||
cd ${project_dir}/terraform-code
|
||||
|
||||
${project_dir}/terraform init
|
||||
${project_dir}/terraform plan \
|
||||
-var "zerotier_network=${ZEROTIER_NETWORK}" \
|
||||
-var "home_username=${HOME_USERNAME}" \
|
||||
-var "home_password=${HOME_PASSWORD}" \
|
||||
-var "ramnode_username=${RAMNODE_USERNAME}" \
|
||||
-var "ramnode_password=${RAMNODE_PASSWORD}" \
|
||||
-var "do_token=${DIGITALOCEAN_ACCESS_TOKEN}"
|
||||
${project_dir}/terraform apply -auto-approve -refresh=true \
|
||||
-var "zerotier_network=${ZEROTIER_NETWORK}" \
|
||||
-var "home_username=${HOME_USERNAME}" \
|
||||
-var "home_password=${HOME_PASSWORD}" \
|
||||
-var "ramnode_username=${RAMNODE_USERNAME}" \
|
||||
-var "ramnode_password=${RAMNODE_PASSWORD}" \
|
||||
-var "do_token=${DIGITALOCEAN_ACCESS_TOKEN}"
|
||||
sleep 60s
|
||||
cd ${project_dir}/ansible
|
||||
pipenv sync
|
||||
pipenv run bash run-ansible.sh
|
||||
12
destroy.sh
Normal file
12
destroy.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
project_dir=$(git rev-parse --show-toplevel)
|
||||
|
||||
cd ${project_dir}/terraform-code
|
||||
|
||||
${project_dir}/terraform destroy -force \
|
||||
-var "zerotier_network=${ZEROTIER_NETWORK}" \
|
||||
-var "home_username=${HOME_USERNAME}" \
|
||||
-var "home_password=${HOME_PASSWORD}" \
|
||||
-var "ramnode_username=${RAMNODE_USERNAME}" \
|
||||
-var "ramnode_password=${RAMNODE_PASSWORD}" \
|
||||
-var "do_token=${DIGITALOCEAN_ACCESS_TOKEN}"
|
||||
10
install-terraform.sh
Normal file
10
install-terraform.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
project_dir=$(git rev-parse --show-toplevel)
|
||||
cd $project_dir
|
||||
|
||||
curl -o terraform.zip https://releases.hashicorp.com/terraform/0.12.28/terraform_0.12.28_linux_amd64.zip
|
||||
unzip terraform.zip
|
||||
rm terraform.zip
|
||||
|
||||
#https://github.com/adammck/terraform-inventory/releases
|
||||
#curl -o terraform-inventory.zip https://github.com/adammck/terraform-inventory/releases/download/v0.9/terraform-inventory_0.9_linux_amd64.zip
|
||||
36
terraform-code/digitalocean.tf
Normal file
36
terraform-code/digitalocean.tf
Normal file
@@ -0,0 +1,36 @@
|
||||
data "digitalocean_ssh_key" "multicloud" {
|
||||
provider = digitalocean.digitalocean
|
||||
name = "multicloud"
|
||||
}
|
||||
|
||||
resource "digitalocean_tag" "master" {
|
||||
name = "multicloud-k8s-master"
|
||||
}
|
||||
|
||||
resource "digitalocean_tag" "worker" {
|
||||
name = "multicloud-k8s-worker"
|
||||
}
|
||||
|
||||
resource "digitalocean_droplet" "master" {
|
||||
provider = digitalocean.digitalocean
|
||||
image = "ubuntu-20-04-x64"
|
||||
name = "multicloud-digitalocean-master"
|
||||
region = "nyc1"
|
||||
size = "s-1vcpu-2gb"
|
||||
count = 1
|
||||
user_data = data.template_file.user-data.rendered
|
||||
tags = [digitalocean_tag.master.id]
|
||||
ssh_keys = [data.digitalocean_ssh_key.multicloud.id]
|
||||
}
|
||||
|
||||
resource "digitalocean_droplet" "worker" {
|
||||
provider = digitalocean.digitalocean
|
||||
image = "ubuntu-20-04-x64"
|
||||
name = "multicloud-digitalocean-worker"
|
||||
region = "nyc1"
|
||||
size = "s-1vcpu-2gb"
|
||||
count = 1
|
||||
user_data = data.template_file.user-data.rendered
|
||||
tags = [digitalocean_tag.worker.id]
|
||||
ssh_keys = [data.digitalocean_ssh_key.multicloud.id]
|
||||
}
|
||||
83
terraform-code/home.tf
Normal file
83
terraform-code/home.tf
Normal file
@@ -0,0 +1,83 @@
|
||||
resource "openstack_compute_secgroup_v2" "multicloud_home" {
|
||||
provider = openstack.home
|
||||
name = "multicloud"
|
||||
description = "multicloud security group"
|
||||
|
||||
rule {
|
||||
from_port = 22
|
||||
to_port = 22
|
||||
ip_protocol = "tcp"
|
||||
cidr = "0.0.0.0/0"
|
||||
}
|
||||
|
||||
rule {
|
||||
from_port = 80
|
||||
to_port = 80
|
||||
ip_protocol = "tcp"
|
||||
cidr = "0.0.0.0/0"
|
||||
}
|
||||
|
||||
rule {
|
||||
from_port = 443
|
||||
to_port = 443
|
||||
ip_protocol = "tcp"
|
||||
cidr = "0.0.0.0/0"
|
||||
}
|
||||
}
|
||||
|
||||
data "openstack_images_image_v2" "ubuntu" {
|
||||
provider = openstack.home
|
||||
name = "xenial-image"
|
||||
most_recent = true
|
||||
}
|
||||
|
||||
resource "openstack_compute_instance_v2" "home-master" {
|
||||
provider = openstack.home
|
||||
name = "multicloud-home-master"
|
||||
flavor_name = "g1.medium"
|
||||
key_pair = "multicloud"
|
||||
security_groups = [openstack_compute_secgroup_v2.multicloud_home.name]
|
||||
image_name = "xenial-image"
|
||||
user_data = data.template_file.user-data.rendered
|
||||
network {
|
||||
name = "GATEWAY_NET"
|
||||
}
|
||||
metadata = {
|
||||
cloud = "home"
|
||||
role = "multicloud-k8s-master"
|
||||
}
|
||||
block_device {
|
||||
uuid = data.openstack_images_image_v2.ubuntu.id
|
||||
source_type = "image"
|
||||
volume_size = 20
|
||||
boot_index = 0
|
||||
destination_type = "volume"
|
||||
delete_on_termination = false
|
||||
}
|
||||
count = 1
|
||||
}
|
||||
|
||||
resource "openstack_compute_instance_v2" "home-worker" {
|
||||
provider = openstack.home
|
||||
name = "multicloud-home-worker"
|
||||
flavor_name = "g1.medium"
|
||||
key_pair = "multicloud"
|
||||
security_groups = [openstack_compute_secgroup_v2.multicloud_home.name]
|
||||
user_data = data.template_file.user-data.rendered
|
||||
network {
|
||||
name = "GATEWAY_NET"
|
||||
}
|
||||
metadata = {
|
||||
cloud = "home"
|
||||
role = "multicloud-k8s-worker"
|
||||
}
|
||||
block_device {
|
||||
uuid = data.openstack_images_image_v2.ubuntu.id
|
||||
source_type = "image"
|
||||
volume_size = 20
|
||||
boot_index = 0
|
||||
destination_type = "volume"
|
||||
delete_on_termination = false
|
||||
}
|
||||
count = 1
|
||||
}
|
||||
9
terraform-code/hosts.cfg
Normal file
9
terraform-code/hosts.cfg
Normal file
@@ -0,0 +1,9 @@
|
||||
[workers]
|
||||
${ramnode_workers}
|
||||
${home_workers}
|
||||
${do_workers}
|
||||
|
||||
[masters]
|
||||
${ramnode_masters}
|
||||
${home_masters}
|
||||
${do_masters}
|
||||
28
terraform-code/provider.tf
Normal file
28
terraform-code/provider.tf
Normal file
@@ -0,0 +1,28 @@
|
||||
variable "do_token" {}
|
||||
variable "ramnode_password" {}
|
||||
variable "ramnode_username" {}
|
||||
variable "home_password" {}
|
||||
variable "home_username" {}
|
||||
|
||||
provider "digitalocean" {
|
||||
token = var.do_token
|
||||
alias = "digitalocean"
|
||||
}
|
||||
|
||||
provider "openstack" {
|
||||
alias = "ramnode"
|
||||
user_name = var.ramnode_username
|
||||
tenant_id = "e55c0b4382f14a4fb0cd10d76f58881f"
|
||||
password = var.ramnode_password
|
||||
auth_url = "https://nyc-controller.ramnode.com:5000/v3"
|
||||
region = "NYC"
|
||||
}
|
||||
|
||||
provider "openstack" {
|
||||
alias = "home"
|
||||
user_name = var.home_username
|
||||
tenant_id = "a5c2f0b1bb954c96ad054ae2c586d9c1"
|
||||
password = var.home_password
|
||||
auth_url = "http://10.0.0.108:35357/v3"
|
||||
region = "RegionOne"
|
||||
}
|
||||
62
terraform-code/ramnode.tf
Normal file
62
terraform-code/ramnode.tf
Normal file
@@ -0,0 +1,62 @@
|
||||
resource "openstack_compute_secgroup_v2" "multicloud_ramnode" {
|
||||
provider = openstack.ramnode
|
||||
name = "multicloud"
|
||||
description = "multicloud security group"
|
||||
|
||||
rule {
|
||||
from_port = 22
|
||||
to_port = 22
|
||||
ip_protocol = "tcp"
|
||||
cidr = "0.0.0.0/0"
|
||||
}
|
||||
|
||||
rule {
|
||||
from_port = 80
|
||||
to_port = 80
|
||||
ip_protocol = "tcp"
|
||||
cidr = "0.0.0.0/0"
|
||||
}
|
||||
|
||||
rule {
|
||||
from_port = 443
|
||||
to_port = 443
|
||||
ip_protocol = "tcp"
|
||||
cidr = "0.0.0.0/0"
|
||||
}
|
||||
}
|
||||
|
||||
resource "openstack_compute_instance_v2" "ramnode-master" {
|
||||
provider = openstack.ramnode
|
||||
name = "multicloud-ramnode-master"
|
||||
flavor_name = "2GB SKVM"
|
||||
key_pair = "multicloud"
|
||||
security_groups = [openstack_compute_secgroup_v2.multicloud_ramnode.name]
|
||||
image_name = "Ubuntu 20.04 Server Cloud"
|
||||
user_data = data.template_file.user-data.rendered
|
||||
network {
|
||||
name = "Public"
|
||||
}
|
||||
metadata = {
|
||||
cloud = "ramnode"
|
||||
role = "multicloud-k8s-master"
|
||||
}
|
||||
count = 1
|
||||
}
|
||||
|
||||
resource "openstack_compute_instance_v2" "ramnode-worker" {
|
||||
provider = openstack.ramnode
|
||||
name = "multicloud-ramnode-worker"
|
||||
flavor_name = "2GB SKVM"
|
||||
key_pair = "multicloud"
|
||||
security_groups = [openstack_compute_secgroup_v2.multicloud_ramnode.name]
|
||||
image_name = "Ubuntu 20.04 Server Cloud"
|
||||
user_data = data.template_file.user-data.rendered
|
||||
network {
|
||||
name = "Public"
|
||||
}
|
||||
metadata = {
|
||||
cloud = "ramnode"
|
||||
role = "multicloud-k8s-worker"
|
||||
}
|
||||
count = 1
|
||||
}
|
||||
13
terraform-code/terraform-inventory.tf
Normal file
13
terraform-code/terraform-inventory.tf
Normal file
@@ -0,0 +1,13 @@
|
||||
resource "local_file" "hosts_cfg" {
|
||||
content = templatefile("./hosts.cfg",
|
||||
{
|
||||
ramnode_workers = "${join("\n", openstack_compute_instance_v2.ramnode-worker.*.network.0.fixed_ip_v4)}"
|
||||
ramnode_masters = "${join("\n", openstack_compute_instance_v2.ramnode-master.*.network.0.fixed_ip_v4)}"
|
||||
home_workers = "${join("\n", openstack_compute_instance_v2.home-worker.*.network.0.fixed_ip_v4)}"
|
||||
home_masters = "${join("\n", openstack_compute_instance_v2.home-master.*.network.0.fixed_ip_v4)}"
|
||||
do_workers = "${join("\n", digitalocean_droplet.worker.*.ipv4_address)}"
|
||||
do_masters = "${join("\n", digitalocean_droplet.master.*.ipv4_address)}"
|
||||
}
|
||||
)
|
||||
filename = "inventory"
|
||||
}
|
||||
6
terraform-code/user-data.sh
Normal file
6
terraform-code/user-data.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
if ! which docker > /dev/null; then
|
||||
curl -s -L https://raw.githubusercontent.com/rancher/install-docker/master/19.03.9.sh | bash
|
||||
fi
|
||||
curl -s https://install.zerotier.com | sudo bash
|
||||
zerotier-cli join ${zerotier_network}
|
||||
8
terraform-code/userdata.tf
Normal file
8
terraform-code/userdata.tf
Normal file
@@ -0,0 +1,8 @@
|
||||
variable "zerotier_network" {}
|
||||
|
||||
data "template_file" "user-data" {
|
||||
template = file("./user-data.sh")
|
||||
vars = {
|
||||
zerotier_network = var.zerotier_network
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user