├── .config └── ansible-lint.yml ├── .github └── workflows │ └── build.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .yamllint.yaml ├── LICENSE ├── README.md ├── defaults └── main.yml ├── dl-checksums.sh ├── handlers └── main.yml ├── meta ├── main.yml └── requirements.yml ├── platform-matrix-v1.json ├── tasks └── main.yml ├── templates └── kafka.sh.j2 ├── test.yml └── vars └── main.yml /.config/ansible-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | skip_list: 3 | - 'name[template]' 4 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | --- 2 | jobs: 3 | bake-ansible-images-v1: 4 | uses: andrewrothstein/.github/.github/workflows/bake-ansible-images-v1.yml@develop 5 | 'on': push 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **~*.retry 2 | Dockerfile.* 3 | requirements.yml 4 | !meta/requirements.yml 5 | **/*undo-tree* 6 | .ansible -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | sha: v0.8.0 4 | hooks: 5 | - id: trailing-whitespace 6 | - id: end-of-file-fixer 7 | - id: check-json 8 | - id: check-yaml 9 | - id: check-symlinks 10 | - id: detect-aws-credentials 11 | args: 12 | - --allow-missing-credentials 13 | - id: check-added-large-files 14 | - id: detect-private-key 15 | 16 | - repo: https://github.com/willthames/ansible-lint.git 17 | sha: v3.4.13 18 | hooks: 19 | - id: ansible-lint 20 | files: \.(yaml|yml)$ 21 | args: [ 22 | "--exclude=roles", 23 | "--exclude=basic/roles", 24 | "--exclude=.travis.yml" 25 | ] 26 | -------------------------------------------------------------------------------- /.yamllint.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | rules: 3 | line-length: disable 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Andrew Rothstein 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | andrewrothstein.kafka 2 | ===================== 3 | ![Build Status](https://github.com/andrewrothstein/ansible-kafka/actions/workflows/build.yml/badge.svg) 4 | 5 | Installs [Kafka](https://kafka.apache.org/) and its binary dependencies 6 | 7 | Requirements 8 | ------------ 9 | 10 | See [meta/main.yml](meta/main.yml) 11 | 12 | Role Variables 13 | -------------- 14 | 15 | See [defaults/main.yml](defaults/main.yml) 16 | 17 | Dependencies 18 | ------------ 19 | 20 | See [meta/main.yml](meta/main.yml) 21 | 22 | Example Playbook 23 | ---------------- 24 | 25 | ```yml 26 | - hosts: servers 27 | roles: 28 | - andrewrothstein.kafka 29 | ``` 30 | 31 | License 32 | ------- 33 | 34 | MIT 35 | 36 | Author Information 37 | ------------------ 38 | 39 | Andrew Rothstein 40 | -------------------------------------------------------------------------------- /defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | kafka_download_timeout_seconds: 600 3 | kafka_install_parent_dir: /usr/local 4 | 5 | kafka_mirror: https://archive.apache.org/dist/kafka 6 | kafka_scala_ver: '2.13' 7 | kafka_ver: 4.0.0 8 | 9 | kafka_checksums: 10 | '1.0.0': 11 | '2.11': sha256:b5b535f8db770cda8513e391917d0f5a35ef24c537ef3d29dcd9aa287da529f5 12 | '2.12': sha256:d5b1d00752252d9c129e9284f26f8280e9899dd374167f257e29d5346eb544b3 13 | '1.1.0': 14 | '2.11': > 15 | sha512:5E613DBB 21C2AED7 97E18BB5 63838626 7C4F61EE 00D10760 16 | DBC6BD47 2AF8B6AA 9CDCA30C 1F93F5E3 1A3AD8C5 06374A73 17 | 50357E2A C2B9A3DD F87CAF22 820D470E 18 | '2.12': > 19 | sha512:48D1DDC7 1F5A5B1B 25D111F7 92553BE6 9BE62293 640A3C6A 20 | F985203C 6EE88C6A A78E0132 7066BFAD 3FEAE6B0 B45D71C0 21 | CAC6EBD2 D08843D9 22691327 41A3791B 22 | '2.0.0': 23 | # https://www.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz.sha512 24 | '2.11': > 25 | sha512:A8CBC166 3FCAF4FD 4473EB55 1D43BD48 266BE518 032C8234 26 | 826ED106 1E569EC3 EA9A7CE0 2606F211 908E356E AFA3BF21 27 | 4E0F2325 0D0DBD08 A4279047 BA49DC73 28 | # https://www.apache.org/dist/kafka/2.0.0/kafka_2.12-2.0.0.tgz.sha512 29 | '2.12': > 30 | sha512:B28E8170 5E30528F 1ABB6766 E22DFE9D AE50B1E1 E93330C8 31 | 80928FF7 A08E6B38 EE71CBFC 96EC1436 9B2DFD24 29393870 32 | 2CAB4221 73C8E019 55A9D174 6AE43F98 33 | '2.1.0': 34 | # https://www.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz.sha512 35 | '2.11': > 36 | sha512:B620243C 9D042B3F 3FD73F5D 216E7B2E F01E9B0C 444035F7 37 | D3EB2962 E6E519D8 E599CB0C 602F2835 E9A94E54 679ED674 38 | DF14FCD6 FBC7A9CB 3A6C0832 42A4650A 39 | # https://www.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz.sha512 40 | '2.12': > 41 | sha512:05A07E92 8C439B10 84A6B3F6 835F067F 9636AC47 F9473DCA 42 | AF7040D3 39CBD0A4 561B7478 531B237A A69E27F5 0FE3A2E7 43 | F4D0F2BA 99A64225 92A89ECF 1187FA25 44 | '2.1.1': 45 | # https://www.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz.sha512 46 | '2.11': > 47 | sha512:7ABE288E C25DFC58 0C3F1A0A EE0439C0 C30117B6 8262C372 48 | FEACDDC6 F3DC6634 3020B36D 15295DF3 A45D81B3 D6A6B0FE 49 | 83E90ABF 864BB8AE B43DAF8F 9F46B976 50 | # https://www.apache.org/dist/kafka/2.1.1/kafka_2.12-2.1.1.tgz.sha512 51 | '2.12': > 52 | sha512:A2E8168E 8DE6B45E 8FCA1F28 83F0744D 3C5A939B 70D8A47A 53 | 5428B721 88501D4C 2FC11BC3 5759F239 2680D4E8 ECF2FA9D 54 | 0E518E77 FD28393A FBA22194 AD018B10 55 | '2.2.1': 56 | # https://www.apache.org/dist/kafka/2.2.1/kafka_2.11-2.2.1.tgz.sha512 57 | '2.11': > 58 | sha512:730C2053 F907982C 8B7CDA13 4901FC01 4D023ACA C1243B4F 59 | F8B9060B 01375715 9F0B45E2 B5F420D5 5540357F 8161C697 60 | CE9B8DDA 599D24F4 2BD7A9ED AE5CF320 61 | # https://www.apache.org/dist/kafka/2.2.1/kafka_2.12-2.2.1.tgz.sha512 62 | '2.12': > 63 | sha512:B8D828F0 6DFE59E3 4C4CFA20 C57C8C8B 43374F1E 7C09F12D 64 | FA543353 4A380BFE 09A6DE90 FB86A440 3939A87A B9C665E2 65 | 369143C1 38C71391 B01BBB9B 384E7AC5 66 | '2.3.0': 67 | # https://www.apache.org/dist/kafka/2.3.0/kafka_2.11-2.3.0.tgz.sha512 68 | '2.11': sha512:A10EC00619BFFAA8CB4B2EEE5EDB0BCB455E6D812CDF5039F18413755D865C5DA7AEA24428E85E3CD952DC745995382FD5DF656344B08B06D54CF5112FC4F9E6 69 | # https://www.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz.sha512 70 | '2.12': sha512:A5ED591AB304A1F16F7FD64183871E38AABF814A2C1CA86BB3D064C83E85A6463D3C55F4D707A29FC3D7994DD7BA1F790B5A6219C6DFFDF472AFD99CEE37892E 71 | '2.3.1': 72 | # https://www.apache.org/dist/kafka/2.3.1/kafka_2.11-2.3.1.tgz.sha512 73 | '2.11': sha512:C0DC2E5C9C74585A2127239BA8598315135490980D4ECB514FD48164533965F277F0A49447F7C43C27F1F9678E181D8521FB6E8C8174E4F3C9B89D2B293CF8A8 74 | # https://www.apache.org/dist/kafka/2.3.1/kafka_2.12-2.3.1.tgz.sha512 75 | '2.12': sha512:B9FD57DE7D9691C89CF668901E5E29728F10249667611A0603C322C8823EC2D5568B51EB1A570D4D9119CD4E44E84B590CAB99B33A0355EBAC37811A7D453608 76 | '2.4.0': 77 | # https://www.apache.org/dist/kafka/2.4.0/kafka_2.11-2.4.0.tgz.sha512 78 | '2.11': sha512:3A0FFAD82054F06A457ADA9A06A21E60AF08BF38CF263FDF469CB1EFF9DEC8C4FDF4729332D1F9E1C63CA78230B29728F2CDDAADB1A7A7B9B3F2933A65F6E52B 79 | # https://www.apache.org/dist/kafka/2.4.0/kafka_2.12-2.4.0.tgz.sha512 80 | '2.12': sha512:53B52F86EA56C9FAC62046524F03F75665A089EA2DAE554AEFE3A3D2694F2DA88B5BA8725D8BE55F198BA80695443559ED9DE7C0B2A2817F7A6141008FF79F49 81 | '2.4.1': 82 | # https://www.apache.org/dist/kafka/2.4.1/kafka_2.11-2.4.1.tgz.sha512 83 | '2.11': sha512:63D8844DF751E5F1CB792F52D58709CC50A7B1B8C5D94E3F8D9C815C818CA95070656913D5772302BBC818DAE9E67E4A5D715789654EE87C714CFD2F88B2A24F 84 | # https://www.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz.sha512 85 | '2.12': sha512:8582DC25CB14A2E9C6966EFD98E41CD0EBF6369B42436954800B847298E763B22CAECF130FDCCC58BF79FE9E95FACCE6E0B5AACAD072D69F6DC1EED7678A49B8 86 | '2.5.0': 87 | # https://www.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz.sha512 88 | '2.12': sha512:447A7057BCD9FACA98B6F4807BD6019EF73EEE90EFDC1E7B10005F669E2537A8A190CB8B9C9F4C20DB1D95B13D0F0487E9CC560D0759532058439CE7F722C7CD 89 | # https://www.apache.org/dist/kafka/2.5.0/kafka_2.13-2.5.0.tgz.sha512 90 | '2.13': sha512:A06F87C40CE9C58EF796D84F1014692E217B87DCA6047CB763E9570B9A74F104C78D1F337D2899A243980020690F1FA5BD5AD5CAC40F7A1C452F012ABA1D0709 91 | '2.6.0': 92 | # https://www.apache.org/dist/kafka/2.6.0/kafka_2.12-2.6.0.tgz.sha512 93 | '2.12': sha512:022AB51605DFFB8A0E4522DF297F02F4C5E488696520BB38DA8E8E70457C0B2696A47D7AD39A86389B747981215B385B2659AC25B3D43A6093AF13239723560D 94 | # https://www.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz.sha512 95 | '2.13': sha512:D884E4DF7D85B4FFF54CA9CD987811C58506AD7871B9ED7114BBAFA6FEE2E79F43D04C550EEA471F508B08EA34B4316EA1E529996066FD9B93FCF912F41F6165 96 | '2.7.0': 97 | # https://www.apache.org/dist/kafka/2.7.0/kafka_2.12-2.7.0.tgz.sha512 98 | '2.12': sha512:ADAD48E6D9C9BF6577FC97DB10BFE9EF3755DA7B3060ED633EDB89EB99722DC81B111BAB2C91E7875E0A866A1020C8C31904B088D2A9F9950796EDA8ED789CCD 99 | # https://www.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz.sha512 100 | '2.13': sha512:F3DD1FD88766D9150D3D395B285BFA75F5B89A835822381490C8428E6E568889054DDB5FADA1EB63613A6441989151BC7C7D6CDE16A871C6674B909C4EDD4E28 101 | '2.8.0': 102 | # https://www.apache.org/dist/kafka/2.8.0/kafka_2.12-2.8.0.tgz.sha512 103 | '2.12': sha512:EE0E231253ECA43BFFBFCFFCF431828C96DF55511EAEFC5EACBA39C41232DA991B8C7425F927A780BABF7972DC183FF688CF5B76EBF400E95D3280BC30741EBB 104 | # https://www.apache.org/dist/kafka/2.8.0/kafka_2.13-2.8.0.tgz.sha512 105 | '2.13': sha512:3C49DCA1147A0A249DD88E089F40AF31A67B8207ED2D9E2294FA9A6D41F5ED0B006943CD60D8E30D7E69D760D398F299CAFCD68B6ED7BEDF9F93D1B7A9E8C487 106 | '2.8.1': 107 | # https://www.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz.sha512 108 | '2.12': sha512:287CF3B43CC723E9A2DACC83E153152A74CF9C39D86EB0702CC8D237BE95577098E0B984687F3F7EA37BB2782F7DF23DD597FD618AF03A48460E6B3F4931B6C2 109 | # https://www.apache.org/dist/kafka/2.8.1/kafka_2.13-2.8.1.tgz.sha512 110 | '2.13': sha512:91FCD1061247AD0DDB63FA2B5C0251EE0E58E60CC9E1A3EBE2E84E9A31872448A36622DD15868DE2C6D3F7E26020A8C61477BC764E2FB6776A25E4344EB8892D 111 | '3.0.0': 112 | # https://www.apache.org/dist/kafka/3.0.0/kafka_2.12-3.0.0.tgz.sha512 113 | '2.12': sha512:CB82E685A76FA6041DCB39A8519B4F3C1A16066E9D5D8EAB11A825B517D91F690ED9AF40492A11471265AE9C486017FD128492F867E3BE63EC7770D44F7E54D2 114 | # https://www.apache.org/dist/kafka/3.0.0/kafka_2.13-3.0.0.tgz.sha512 115 | '2.13': sha512:86CDEB04AF123399858D03431E9777948C1C40EC0D843966CF9BD90B8235B47EBBB5CB96D1F0660710B9286DA86BBB5EE65E21E757606F5A1E67F970AE5CF57C 116 | '3.1.0': 117 | # https://www.apache.org/dist/kafka/3.1.0/kafka_2.12-3.1.0.tgz.sha512 118 | '2.12': sha512:BDC05A784C4B5BBCFDFD3F552727A0B1DE2A01C794B22495DE04FD478F704D27E9751F5E77ECA1CEA8EBCA22CD51D859029DC4858E8858F977142B7CD948F5E7 119 | # https://www.apache.org/dist/kafka/3.1.0/kafka_2.13-3.1.0.tgz.sha512 120 | '2.13': sha512:5954C1CF38187134A6E0A21520CBEF5CD5320A3E9290E630C3895990E892219917D911FABBC64DA5DB17BCAA940B8277C23344B50F2FF4256EACA78116E9FDC9 121 | '3.2.0': 122 | # https://www.apache.org/dist/kafka/3.2.0/kafka_2.12-3.2.0.tgz.sha512 123 | '2.12': sha512:2F19A2FE63DBD48CD1A029D6B135B55BF4CCCC039F7E86D2C3FFA2AE865A5810163B3F9EABC3FFBE423B5AEAD6D4AA2058028DB99A544895C907A23461DDB845 124 | # https://www.apache.org/dist/kafka/3.2.0/kafka_2.13-3.2.0.tgz.sha512 125 | '2.13': sha512:736A129823B058DC10788D0893BDE47B6F39B9E4972F9EAC2D5C9E85E51E477344C6F1E1EBD126CE34D5FD430EB07E55FDD60D60CB541F1D48655C0EBC0A4778 126 | '3.2.1': 127 | # https://www.apache.org/dist/kafka/3.2.1/kafka_2.12-3.2.1.tgz.sha512 128 | '2.12': sha512:33E5E009792D2730F74223B29EBA7C7DF1D966F72655738923CA0B997D2370AEAA0ED6BFA8FFF222C44204321970BA3C74730028B0964F5DFC9F46A0947F2897 129 | # https://www.apache.org/dist/kafka/3.2.1/kafka_2.13-3.2.1.tgz.sha512 130 | '2.13': sha512:9B7EE73C9C088E2B1D15685CD1330546054BCF1F025F4825FADCCD5076763230229480D87900CA4A8317CD01A36BEC1082FCADFAB7D220A415787E1BA2E3C9CF 131 | '3.2.3': 132 | # https://www.apache.org/dist/kafka/3.2.3/kafka_2.12-3.2.3.tgz.sha512 133 | '2.12': sha512:9A4D17C7B6BB78B6A92763E85B6B04C9D069AA6F269D59F30690ED9CC1007340D12DDE44815A803623CFE22FB3A274F23F24DB5D9E78E1691F48E3E65DB7FDCA 134 | # https://www.apache.org/dist/kafka/3.2.3/kafka_2.13-3.2.3.tgz.sha512 135 | '2.13': sha512:4A57D69F8D3B5158DDCA9C64AC366C2975CA55F4C2EF02CD3B122E127016AD1A5AA1DE92E7E2F392FDC3B57AABE75D4631373D77A3A5958C28D911F4034A136F 136 | '3.3.1': 137 | # https://www.apache.org/dist/kafka/3.3.1/kafka_2.12-3.3.1.tgz.sha512 138 | '2.12': sha512:376CD2B5C0558B263D406D5813739C6380924E4C88F283ADB0B38F81C4B848C97EDA991467B5F8762B4B77DBC6DB00DEA0ED45C4EF9F2338EA588141C4DBB3FF 139 | # https://www.apache.org/dist/kafka/3.3.1/kafka_2.13-3.3.1.tgz.sha512 140 | '2.13': sha512:D14D9CC97D1702649B33378F38060C4A6220850A3D7182D1AF20E905CB98728E51F2AEEC63121F5773A389D6B66891B7508E5D23584DD1A4E424825E3D54E3E0 141 | '3.3.2': 142 | # https://downloads.apache.org/kafka/3.3.2/kafka_2.12-3.3.2.tgz.sha512 143 | '2.12': sha512:D41F64F37F43A6B596D0D1A3CCE7A5E9B721F159B52B2CD4890523312D659F528B6435DAD2BCA420D43E8D66EE8DD601C2C1F4B9A84F4698805C4947FC786354 144 | # https://downloads.apache.org/kafka/3.3.2/kafka_2.13-3.3.2.tgz.sha512 145 | '2.13': sha512:F56657105A67F6195C1D4795B5FB4A00FC5E2F5CCE061D7F7A504063778187B325C6FBE51D7C59F57CD7EF323A37D4C2C780C27A5609A2008852CBFA944287B3 146 | '3.4.0': 147 | # https://downloads.apache.org/kafka/3.4.0/kafka_2.12-3.4.0.tgz.sha512 148 | '2.12': sha512:854CDC20F74A746E4BB04F6BA2F525364C4A5C68CBD4B5B59AD8BA706FC4EA51FE0778928B23A9CF61B1DB772AA9C1C9957BBBAB559DD9D3B7061883B2261F8D 149 | # https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz.sha512 150 | '2.13': sha512:2C405149C065627CE2125088DFCCE0A4DC23AEBAA72C1157736D5829CB5CBEF273C0915EC55D2D8BA38E5E0524F0720F43E07D7D677439CD2AC7BEA618CAA65B 151 | '3.5.0': 152 | # https://downloads.apache.org/kafka/3.5.0/kafka_2.12-3.5.0.tgz.sha512 153 | '2.12': sha512:FFEB9AB152E83754DA0E93E8CACDBF80626BB0155DAE55D57232703A27B42C9BE2BDED0B430FD9C6428F198CFFCCFACD69A882F481ECA39FF816CA192AD6DECF 154 | # https://downloads.apache.org/kafka/3.5.0/kafka_2.13-3.5.0.tgz.sha512 155 | '2.13': sha512:7B79BD0844DB683C06C3491955BB183D48A47FA4639D2E241B9F4FF4060C4B70814DAC7D96BEA87DFFCA0C8AE038278C4FABF68D4EA1194228D67D9C3B1D247C 156 | '3.5.1': 157 | # https://downloads.apache.org/kafka/3.5.1/kafka_2.12-3.5.1.tgz.sha512 158 | '2.12': sha512:A2B5794FE1921AEF4C1DE7C72D2C2BF0B343B02B6782A6E35D0E14EBA98C90B2AD8828D5FD39F185D87CD3241561A0F12D8283366406F9C69F8088EF89796F15 159 | # https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz.sha512 160 | '2.13': sha512:B6CEB010A5FE1791843CBC53D34D35993E97E03F9518344B4B5BDF7146D0A4E866CD2D4760CAB319D8B3323A5BF53037A78FED88C9384381AEA2CD0366877763 161 | '3.6.0': 162 | # https://downloads.apache.org/kafka/3.6.0/kafka_2.12-3.6.0.tgz.sha512 163 | '2.12': sha512:CE9F864E84A0770B25B4B8E8B7BFAEEDF31379B4C442D0D8261D00FE9C3CFA89DB180C98D7949B0A4A7109CDCAE1B9FE35D40FE49683C7D4782EEAC91B98B6F6 164 | # https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz.sha512 165 | '2.13': sha512:98D20F475BCCC11EB3CF05362112C788EEA7BFC88ABDDBA66CFCFB48880D3BB97918A90D44EB7C1720527BEBCA93DD231002B5159876F6EE8B7FCD91CC1B0644 166 | '3.6.1': 167 | # https://downloads.apache.org/kafka/3.6.1/kafka_2.12-3.6.1.tgz.sha512 168 | '2.12': sha512:8B6133F86AB357DDD657824208554F2A18D70D94C0EAFD679102AC05ADCEF56BA3DBA55E38F23F3ECCA7F775FE6346A42255A3F94A56E0D1C2B22BBC7CF9E972 169 | # https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz.sha512 170 | '2.13': sha512:1F063CD67463DD3BB5A5E06E7A1C2278DB84BFC836A634FAC7C9A005DE66A42AC00B32F5E9BBDD22086605F73659EFD4CE5BD1185196B02A743BE0898DAAC55D 171 | '3.7.0': 172 | # https://downloads.apache.org/kafka/3.7.0/kafka_2.12-3.7.0.tgz.sha512 173 | '2.12': sha512:CA1053C4E173539AAC816D5A3658D29CAD446B7F24F8DF42157E3BA570295A9F909DC80CF0A2FACA07B15FEC4629ACF44D601EF0FE4B79E837E5E1E406A7624B 174 | # https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz.sha512 175 | '2.13': sha512:B8679283A2D8DAB86E7C636B2C688FE9D9E64AC437241F65EF7A1733F4D26A2BD415EEFA04F09F1911373BCD2A5DBC3838C76347F68656425C09202CD290CE91 176 | '3.8.0': 177 | # https://downloads.apache.org/kafka/3.8.0/kafka_2.12-3.8.0.tgz.sha512 178 | '2.12': sha512:3AA4C675C5AB9EB4DC8743381A92AE995A5BCE60EB521A01CA78F0E7FEC5D91BBA1D3DE70E6C3A2310EFFE25FA93D6632A5FF960F2E4C1350BE704ED457F4F6A 179 | # https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz.sha512 180 | '2.13': sha512:0A33B7BE7B6FA53249BA80F9D02CDA71ED81927C160AA6EE9BE1E3D3C1C4B50466FFC905293143FD88CEAC7F5E7D8F5BEC28EF972ADDD3C459CC8B1291E738AA 181 | '3.8.1': 182 | # https://downloads.apache.org/kafka/3.8.1/kafka_2.12-3.8.1.tgz.sha512 183 | '2.12': sha512:72BE5D3468901E0A1C5F3C6A678ACB934A4CB8A3C08E9C452EA9E5FCEE8B84F2F53EB9B5331D7B04D635AAF283E219C30D1B8AFB56C9E74DF7870FCBEC424A86 184 | # https://downloads.apache.org/kafka/3.8.1/kafka_2.13-3.8.1.tgz.sha512 185 | '2.13': sha512:B43FADA353B7DCA51C0F90ACF594EC1CE06B2344C046D4059D4DEAB0615E0E3E76E92ECCDBDFA1ADAD1FBDE76C5F25E71ACD0DB013FB4B1778827448B5285EDF 186 | '3.9.0': 187 | # https://downloads.apache.org/kafka/3.9.0/kafka_2.12-3.9.0.tgz.sha512 188 | '2.12': sha512:D2571C4DBDF5365621ECEEF9B36F44B2635D6B4131A86504395A874BB5B55C06D17D32308288D1A29CF55CC13343932CE7B2DA4EAD26B1EBDBEDB9E468611F12 189 | # https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz.sha512 190 | '2.13': sha512:5324C1F44D4C84EA469712C2CC3D2D15545C3716EDBB5353722DF9C661FCC78B031FCF07D1C4F0309C5FDB32686665DFB0CFFE55210CD3A1FE2A370538CB4E6D 191 | '4.0.0': 192 | # https://downloads.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz.sha512 193 | '2.13': sha512:00722AB0A6B954E0006994B8D589DCD8F26E1827C47F70B6E820FB45AA35945C19163B0F188CAF0CAF976C11F7AB005FD368C54E5851E899D2DE687A804A5EB9 194 | -------------------------------------------------------------------------------- /dl-checksums.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | set -e 3 | DIR=~/Downloads 4 | MIRROR=https://downloads.apache.org/kafka 5 | 6 | dl() 7 | { 8 | local ver=$1 9 | local scala_ver=$2 10 | local url=$MIRROR/$ver/kafka_${scala_ver}-${ver}.tgz.sha512 11 | 12 | printf " # %s\n" $url 13 | printf " '%s': sha512:%s\n" $scala_ver $(curl -sSL $url | tr '\n' ' ' | tr -s '[:blank:]' ' ' | sed -e 's/ //g' | awk -F ':' '{print $2}') 14 | } 15 | 16 | dl_ver() { 17 | local ver=$1 18 | printf " '%s':\n" $ver 19 | dl $ver 2.13 20 | } 21 | 22 | 23 | dl_ver ${1:-4.0.0} 24 | -------------------------------------------------------------------------------- /handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for kafka 3 | -------------------------------------------------------------------------------- /meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Andrew Rothstein 4 | company: BlackRock 5 | description: apache kafka role 6 | galaxy_tags: 7 | - kafka 8 | - queue 9 | - cqrs 10 | license: MIT 11 | min_ansible_version: '1.2' 12 | namespace: andrewrothstein 13 | platforms: 14 | - name: Alpine 15 | versions: 16 | - all 17 | - name: ArchLinux 18 | versions: 19 | - all 20 | - name: Debian 21 | versions: 22 | - bookworm 23 | - bullseye 24 | - name: EL 25 | versions: 26 | - '8' 27 | - '9' 28 | - name: Fedora 29 | versions: 30 | - '41' 31 | - '42' 32 | - name: Ubuntu 33 | versions: 34 | - jammy 35 | - noble 36 | role_name: kafka 37 | -------------------------------------------------------------------------------- /meta/requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: andrewrothstein.unarchivedeps 3 | version: 3.0.3 4 | - name: andrewrothstein.bash 5 | version: v1.2.2 6 | - name: andrewrothstein.temurin 7 | version: 2.0.5 8 | -------------------------------------------------------------------------------- /platform-matrix-v1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "OS": "alpine", 4 | "OS_VER": "3.20" 5 | }, 6 | { 7 | "OS": "alpine", 8 | "OS_VER": "3.21" 9 | }, 10 | { 11 | "OS": "alpine", 12 | "OS_VER": "edge" 13 | }, 14 | { 15 | "OS": "archlinux", 16 | "OS_VER": "latest" 17 | }, 18 | { 19 | "OS": "debian", 20 | "OS_VER": "bookworm" 21 | }, 22 | { 23 | "OS": "debian", 24 | "OS_VER": "bullseye" 25 | }, 26 | { 27 | "OS": "fedora", 28 | "OS_VER": "41" 29 | }, 30 | { 31 | "OS": "fedora", 32 | "OS_VER": "42" 33 | }, 34 | { 35 | "OS": "rockylinux", 36 | "OS_VER": "8" 37 | }, 38 | { 39 | "OS": "rockylinux", 40 | "OS_VER": "9" 41 | }, 42 | { 43 | "OS": "ubuntu", 44 | "OS_VER": "jammy" 45 | }, 46 | { 47 | "OS": "ubuntu", 48 | "OS_VER": "noble" 49 | } 50 | ] -------------------------------------------------------------------------------- /tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Installing andrewrothstein.unarchivedeps 3 | ansible.builtin.include_role: 4 | name: andrewrothstein.unarchivedeps 5 | - name: Installing andrewrothstein.bash 6 | ansible.builtin.include_role: 7 | name: andrewrothstein.bash 8 | - name: Installing andrewrothstein.temurin 9 | ansible.builtin.include_role: 10 | name: andrewrothstein.temurin 11 | - name: Check for kafka installation in {{ kafka_install_dir }} 12 | become: true 13 | ansible.builtin.stat: 14 | path: '{{ kafka_install_dir }}' 15 | changed_when: false 16 | register: kafka_binary 17 | - name: Downloading and installing kafka 18 | when: not kafka_binary.stat.exists 19 | block: 20 | - name: Downloading {{ kafka_tgz_url }} 21 | become: true 22 | become_user: root 23 | ansible.builtin.get_url: 24 | url: '{{ kafka_tgz_url }}' 25 | dest: '{{ kafka_tmp_tgz }}' 26 | mode: '644' 27 | timeout: '{{ kafka_download_timeout_seconds }}' 28 | checksum: '{{ kafka_checksum }}' 29 | - name: Mkdir {{ kafka_install_parent_dir }} 30 | become: true 31 | become_user: root 32 | ansible.builtin.file: 33 | path: '{{ kafka_install_parent_dir }}' 34 | state: directory 35 | mode: '755' 36 | - name: Unarchive {{ kafka_tmp_tgz }} 37 | become: true 38 | become_user: root 39 | ansible.builtin.unarchive: 40 | remote_src: true 41 | src: '{{ kafka_tmp_tgz }}' 42 | dest: '{{ kafka_install_parent_dir }}' 43 | creates: '{{ kafka_install_dir }}' 44 | always: 45 | - name: Rm {{ kafka_tmp_tgz }} 46 | become: true 47 | become_user: root 48 | ansible.builtin.file: 49 | path: '{{ kafka_tmp_tgz }}' 50 | state: absent 51 | - name: Linking {{ kafka_install_link_dir }} to {{ kafka_install_dir }} 52 | become: true 53 | become_user: root 54 | ansible.builtin.file: 55 | src: '{{ kafka_install_dir }}' 56 | dest: '{{ kafka_install_link_dir }}' 57 | state: link 58 | 59 | - name: Include kafka in the default path 60 | become: true 61 | become_user: root 62 | with_items: 63 | - d: /etc/profile.d 64 | f: kafka.sh 65 | ansible.builtin.template: 66 | src: '{{ item.f }}.j2' 67 | dest: '{{ item.d }}/{{ item.f }}' 68 | mode: '{{ item.m | default("644") }}' 69 | -------------------------------------------------------------------------------- /templates/kafka.sh.j2: -------------------------------------------------------------------------------- 1 | export PATH=$PATH:{{kafka_install_link_dir}}/bin 2 | -------------------------------------------------------------------------------- /test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Testing andrewrothstein.kafka 3 | hosts: all 4 | roles: 5 | - role: '{{ playbook_dir }}' 6 | -------------------------------------------------------------------------------- /vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | kafka_name: kafka_{{ kafka_scala_ver }}-{{ kafka_ver }} 3 | kafka_tgz: '{{ kafka_name }}.tgz' 4 | kafka_tmp_tgz: /tmp/{{ kafka_tgz }} 5 | kafka_tgz_url: '{{ kafka_mirror }}/{{ kafka_ver }}/{{ kafka_tgz }}' 6 | kafka_checksum: '{{ kafka_checksums[kafka_ver][kafka_scala_ver] }}' 7 | 8 | kafka_install_dir: '{{ kafka_install_parent_dir }}/{{ kafka_name }}' 9 | kafka_install_link_dir: '{{ kafka_install_parent_dir }}/kafka' 10 | --------------------------------------------------------------------------------