diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 0000000..8a1f80b --- /dev/null +++ b/.ansible-lint @@ -0,0 +1,11 @@ +--- +kinds: + - playbook: "./aws_*.yml" +offline: true +skip_list: + - ignore-errors + - meta-no-info + - name[casing] # so many of our task names aren't capitalized + - name[missing] # some tasks have no name + - risky-file-permissions + - yaml # many, many warnings diff --git a/.config/molecule/config.yml b/.config/molecule/config.yml new file mode 100644 index 0000000..b732dc8 --- /dev/null +++ b/.config/molecule/config.yml @@ -0,0 +1,4 @@ +--- +dependency: + enabled: false +prerun: false diff --git a/.gitignore b/.gitignore index 453a538..b1c3798 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ __pycache__ .envrc .idea .vscode +ansible_collections \ No newline at end of file diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 2f75c73..bde5f5b 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,8 +1,9 @@ ## Prerequisites You should have the following software installed: -* Python; 3.x by preference, but 2.7 works. - * You may also need the Python development packages depending on how it’s installed. +* Python; 3.8 or newer + * You may also need the Python development packages depending on how it’s installed + * Note that the runtime still requires Python 2 for certain tasks on Amazon Linux 2, but is not necessary for local development * Python Virtualenv * Docker * Cloudtoken @@ -17,23 +18,26 @@ All other requirements will be installed under Virtualenv. ### Step 1.2: Install development environment dependencies -To ensure compatibility we specify a specific Ansible version; currently 2.7.11 -(some older versions had issues with RDS). We do this with -[Pipenv](https://docs.pipenv.org/) to lock the dependency tree. There are 2 main -ways to do this; either directly if packaged, or via pip... +To ensure compatibility we specify a specific Ansible version; currently +ansible-core 2.13.x. We do this with [Pipenv](https://docs.pipenv.org/) to lock +the dependency tree. There are 2 main ways to do this; either directly if +packaged, or via pip... - # Ubuntu 19.04+, Debian 10+ - sudo apt-get install pipenv python-dev + # Ubuntu 22.04+, Debian 11+ + sudo apt-get install python3-dev python3-pip - # Older versions & RHEL/Amazon Linux, etc. - sudo apt-get install -y python-pip python-dev - # Or... - sudo yum install -y python-pip python-dev - - pip install pipenv + # Amazon Linux 2 + sudo amazon-linux-extras enable python3.8 + sudo yum install python38 python38-pip python38-devel python-lxml # Mac via Homebrew - brew install pipenv + brew install libpq openssl@3 python@X.x # (where "X.x") is 3.8 or newer + export PATH="/opt/homebrew/opt/libpq/bin:$PATH" + export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" + export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include" + + # Finally + pip3 install pipenv ### Step 1.3: Enter the development environment @@ -44,11 +48,21 @@ development environment: pipenv sync --dev pipenv shell --dev -### Step 1.4: Run some tests against a role +### Step 1.4: Install Ansible collections -[Molecule](https://molecule.readthedocs.io/en/stable/) is a testing framework for Ansible. We use this to test the -functionality of individual and groups of roles, and to ensure cross-platform -compatibility (currently Amazon Linux 2 and Ubuntu LTS). +To save a little time during deployment, we rely directly on ansible-core and a +custom set of collections as opposed to installing the community edition. To that +end, when testing locally, you'll need these collections installed where Ansible +expects them to be; that path is configured ansible.cfg and used automatically +when collections are installed via `ansible-galaxy`: + + ansible-galaxy collection install --upgrade --verbose --requirements-file requirements.yml + +### Step 1.5: Run some tests against a role + +[Molecule](https://molecule.readthedocs.io/en/stable/) is a testing framework for +Ansible. We use this to test the functionality of individual and groups of roles, +and to ensure cross-platform compatibility (currently Amazon Linux 2 and Ubuntu LTS). We’re going to check that the role that downloads the products works for both Jira Core and Confluence, on boths supported Linux distributions. So run the diff --git a/Pipfile b/Pipfile index 723d5d3..2b3c189 100644 --- a/Pipfile +++ b/Pipfile @@ -4,17 +4,18 @@ verify_ssl = true name = "pypi" [packages] -ansible = "==2.10.7" -boto3 = "==1.17.49" -botocore = "==1.20.49" +ansible-core = "==2.13.3" +boto3 = "==1.24.68" +botocore = "==1.27.68" +lxml = "==4.9.1" +psycopg2-binary = "==2.9.3" [dev-packages] -molecule = "==3.2.2" -molecule-docker = "==0.2.4" -docker = "==4.4.1" -taskcat = "*" +molecule = "==4.0.1" +molecule-docker = "==2.0.0" +docker = "==6.0.0" pytest = "*" -testinfra = "*" +pytest-testinfra = "*" [requires] -python_version = "3.7" +python_version = "3" diff --git a/Pipfile.lock b/Pipfile.lock index 5d77427..2b2c3a5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "4cc5161ca039ac884905a5453c2aee0c4686c0ece78f1edffd4d8ebad812bcce" + "sha256": "3af793654947c04727fba827090e1750fa2f846a5634c0cb62f2eef9c916465b" }, "pipfile-spec": 6, "requires": { - "python_version": "3.7" + "python_version": "3" }, "sources": [ { @@ -16,305 +16,467 @@ ] }, "default": { - "ansible": { + "ansible-core": { "hashes": [ - "sha256:9ff024500116d53c460cb09ea92e3c9404119f100d1d1ff0de69a9dafca561d5" + "sha256:449dbcfbfe18e4f23dec0c29b9aa60d76d205657a8e136484f4edea49faf7614", + "sha256:eec5042530ff1c0c8d13a36fa047c6dd9157efeefd464a856b4ce38be4cd1988" ], "index": "pypi", - "version": "==2.10.7" - }, - "ansible-base": { - "hashes": [ - "sha256:f45df824051339d8bec32d7ab4e9e676498c05e2d9cfce6d54c9698a577e15e2" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.10.8" + "version": "==2.13.3" }, "boto3": { "hashes": [ - "sha256:a482135c30fa07eaf4370314dd0fb49117222a266d0423b2075aed3835ed1f04", - "sha256:d5ef160442925f5944e4cde88589f0f195f6c284f05613114fc6bbc35e342fa7" + "sha256:428d94d7c79b6ea65ade428afbd89fb1b869da631bb5acf22230b5b0b7486290", + "sha256:d8785ada565bd3118b9c4c26d8fa64c32d86e62c3404aab612571ae32c270be2" ], "index": "pypi", - "version": "==1.17.49" + "version": "==1.24.68" }, "botocore": { "hashes": [ - "sha256:6a672ba41dd00e5c1c1824ca8143d180d88de8736d78c0b1f96b8d3cb0466561", - "sha256:f7f103fa0651c69dd360c7d0ecd874854303de5cc0869e0cbc2818a52baacc69" + "sha256:aa8ce593e8d6e1aeb5852f8847e3d1750a1e840b221c01ff63ac0cb1dc583aba", + "sha256:d7decff8d5d94c265ad533c11ba0d653acf0819fcdf1049452076cf8fc0f8946" ], "index": "pypi", - "version": "==1.20.49" + "version": "==1.27.68" }, "cffi": { "hashes": [ - "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", - "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", - "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", - "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", - "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", - "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", - "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", - "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", - "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", - "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", - "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", - "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", - "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5", - "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", - "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", - "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", - "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", - "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", - "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", - "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369", - "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827", - "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053", - "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa", - "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4", - "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322", - "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132", - "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62", - "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa", - "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0", - "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396", - "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", - "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", - "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", - "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", - "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", - "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", - "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" + "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", + "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", + "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", + "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", + "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", + "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", + "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", + "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", + "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", + "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", + "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", + "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", + "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", + "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", + "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", + "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", + "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", + "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", + "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", + "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", + "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", + "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", + "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", + "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", + "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", + "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", + "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", + "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", + "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", + "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", + "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", + "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", + "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", + "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", + "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", + "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", + "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", + "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", + "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", + "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", + "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", + "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", + "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", + "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", + "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", + "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", + "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", + "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", + "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", + "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", + "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", + "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", + "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", + "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", + "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", + "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", + "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", + "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", + "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", + "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", + "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", + "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", + "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", + "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" ], - "version": "==1.14.5" + "version": "==1.15.1" }, "cryptography": { "hashes": [ - "sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d", - "sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959", - "sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6", - "sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873", - "sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2", - "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713", - "sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1", - "sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177", - "sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250", - "sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca", - "sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d", - "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9" + "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a", + "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f", + "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0", + "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407", + "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7", + "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6", + "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153", + "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750", + "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad", + "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6", + "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b", + "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5", + "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a", + "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d", + "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d", + "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294", + "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0", + "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a", + "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac", + "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61", + "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013", + "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e", + "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb", + "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9", + "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd", + "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818" ], "markers": "python_version >= '3.6'", - "version": "==3.4.7" + "version": "==38.0.1" }, "jinja2": { "hashes": [ - "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419", - "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.11.3" + "markers": "python_version >= '3.7'", + "version": "==3.1.2" }, "jmespath": { "hashes": [ - "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", - "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" + "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", + "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.0" + "markers": "python_version >= '3.7'", + "version": "==1.0.1" + }, + "lxml": { + "hashes": [ + "sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318", + "sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c", + "sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b", + "sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000", + "sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73", + "sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d", + "sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb", + "sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8", + "sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2", + "sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345", + "sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94", + "sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e", + "sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b", + "sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc", + "sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a", + "sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9", + "sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc", + "sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387", + "sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb", + "sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7", + "sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4", + "sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97", + "sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67", + "sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627", + "sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7", + "sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd", + "sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3", + "sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7", + "sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130", + "sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b", + "sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036", + "sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785", + "sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca", + "sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91", + "sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc", + "sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536", + "sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391", + "sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3", + "sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d", + "sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21", + "sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3", + "sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d", + "sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29", + "sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715", + "sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed", + "sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25", + "sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c", + "sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785", + "sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837", + "sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4", + "sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b", + "sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2", + "sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067", + "sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448", + "sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d", + "sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2", + "sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc", + "sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c", + "sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5", + "sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84", + "sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8", + "sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf", + "sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7", + "sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e", + "sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb", + "sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b", + "sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3", + "sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad", + "sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8", + "sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f" + ], + "index": "pypi", + "version": "==4.9.1" }, "markupsafe": { "hashes": [ - "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", - "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", - "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", - "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", - "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", - "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f", - "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39", - "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", - "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", - "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014", - "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f", - "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", - "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", - "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", - "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", - "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", - "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", - "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", - "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", - "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85", - "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1", - "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", - "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", - "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", - "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850", - "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0", - "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", - "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", - "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb", - "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", - "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", - "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", - "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1", - "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2", - "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", - "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", - "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", - "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7", - "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", - "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8", - "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", - "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193", - "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", - "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b", - "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", - "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", - "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5", - "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c", - "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032", - "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", - "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be", - "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621" + "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", + "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", + "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", + "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", + "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", + "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", + "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", + "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", + "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", + "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", + "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", + "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", + "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", + "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", + "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", + "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", + "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", + "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", + "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", + "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", + "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", + "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", + "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", + "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", + "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", + "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", + "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", + "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", + "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", + "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", + "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", + "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", + "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", + "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", + "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", + "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", + "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", + "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", + "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", + "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.1.1" + "markers": "python_version >= '3.7'", + "version": "==2.1.1" }, "packaging": { "hashes": [ - "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", - "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.9" + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "psycopg2-binary": { + "hashes": [ + "sha256:01310cf4cf26db9aea5158c217caa92d291f0500051a6469ac52166e1a16f5b7", + "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76", + "sha256:090f3348c0ab2cceb6dfbe6bf721ef61262ddf518cd6cc6ecc7d334996d64efa", + "sha256:0a29729145aaaf1ad8bafe663131890e2111f13416b60e460dae0a96af5905c9", + "sha256:0c9d5450c566c80c396b7402895c4369a410cab5a82707b11aee1e624da7d004", + "sha256:10bb90fb4d523a2aa67773d4ff2b833ec00857f5912bafcfd5f5414e45280fb1", + "sha256:12b11322ea00ad8db8c46f18b7dfc47ae215e4df55b46c67a94b4effbaec7094", + "sha256:152f09f57417b831418304c7f30d727dc83a12761627bb826951692cc6491e57", + "sha256:15803fa813ea05bef089fa78835118b5434204f3a17cb9f1e5dbfd0b9deea5af", + "sha256:15c4e4cfa45f5a60599d9cec5f46cd7b1b29d86a6390ec23e8eebaae84e64554", + "sha256:183a517a3a63503f70f808b58bfbf962f23d73b6dccddae5aa56152ef2bcb232", + "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c", + "sha256:1f6b813106a3abdf7b03640d36e24669234120c72e91d5cbaeb87c5f7c36c65b", + "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834", + "sha256:2d872e3c9d5d075a2e104540965a1cf898b52274a5923936e5bfddb58c59c7c2", + "sha256:2f2534ab7dc7e776a263b463a16e189eb30e85ec9bbe1bff9e78dae802608932", + "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71", + "sha256:3303f8807f342641851578ee7ed1f3efc9802d00a6f83c101d21c608cb864460", + "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e", + "sha256:3a79d622f5206d695d7824cbf609a4f5b88ea6d6dab5f7c147fc6d333a8787e4", + "sha256:404224e5fef3b193f892abdbf8961ce20e0b6642886cfe1fe1923f41aaa75c9d", + "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d", + "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9", + "sha256:526ea0378246d9b080148f2d6681229f4b5964543c170dd10bf4faaab6e0d27f", + "sha256:53293533fcbb94c202b7c800a12c873cfe24599656b341f56e71dd2b557be063", + "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478", + "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092", + "sha256:63638d875be8c2784cfc952c9ac34e2b50e43f9f0a0660b65e2a87d656b3116c", + "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce", + "sha256:68641a34023d306be959101b345732360fc2ea4938982309b786f7be1b43a4a1", + "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65", + "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e", + "sha256:7af0dd86ddb2f8af5da57a976d27cd2cd15510518d582b478fbb2292428710b4", + "sha256:7b1e9b80afca7b7a386ef087db614faebbf8839b7f4db5eb107d0f1a53225029", + "sha256:874a52ecab70af13e899f7847b3e074eeb16ebac5615665db33bce8a1009cf33", + "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39", + "sha256:8b344adbb9a862de0c635f4f0425b7958bf5a4b927c8594e6e8d261775796d53", + "sha256:8fc53f9af09426a61db9ba357865c77f26076d48669f2e1bb24d85a22fb52307", + "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42", + "sha256:93cd1967a18aa0edd4b95b1dfd554cf15af657cb606280996d393dadc88c3c35", + "sha256:99485cab9ba0fa9b84f1f9e1fef106f44a46ef6afdeec8885e0b88d0772b49e8", + "sha256:9d29409b625a143649d03d0fd7b57e4b92e0ecad9726ba682244b73be91d2fdb", + "sha256:a29b3ca4ec9defec6d42bf5feb36bb5817ba3c0230dd83b4edf4bf02684cd0ae", + "sha256:a9e1f75f96ea388fbcef36c70640c4efbe4650658f3d6a2967b4cc70e907352e", + "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f", + "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba", + "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24", + "sha256:b1c8068513f5b158cf7e29c43a77eb34b407db29aca749d3eb9293ee0d3103ca", + "sha256:b3a24a1982ae56461cc24f6680604fffa2c1b818e9dc55680da038792e004d18", + "sha256:bda845b664bb6c91446ca9609fc69f7db6c334ec5e4adc87571c34e4f47b7ddb", + "sha256:c381bda330ddf2fccbafab789d83ebc6c53db126e4383e73794c74eedce855ef", + "sha256:c3ae8e75eb7160851e59adc77b3a19a976e50622e44fd4fd47b8b18208189d42", + "sha256:d1c1b569ecafe3a69380a94e6ae09a4789bbb23666f3d3a08d06bbd2451f5ef1", + "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667", + "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272", + "sha256:e3699852e22aa68c10de06524a3721ade969abf382da95884e6a10ff798f9281", + "sha256:e6aa71ae45f952a2205377773e76f4e3f27951df38e69a4c95440c779e013560", + "sha256:e847774f8ffd5b398a75bc1c18fbb56564cda3d629fe68fd81971fece2d3c67e", + "sha256:ffb7a888a047696e7f8240d649b43fb3644f14f0ee229077e7f6b9f9081635bd" + ], + "index": "pypi", + "version": "==2.9.3" }, "pycparser": { "hashes": [ - "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", - "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", + "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.20" + "version": "==2.21" }, "pyparsing": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.4.7" + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" }, "python-dateutil": { "hashes": [ - "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", - "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.1" + "version": "==2.8.2" }, "pyyaml": { "hashes": [ - "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", - "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", - "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", - "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", - "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", - "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", - "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", - "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", - "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", - "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", - "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", - "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", - "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", - "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", - "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", - "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", - "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", - "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", - "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", - "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", - "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", - "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", - "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", - "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", - "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", - "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", - "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", - "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==5.4.1" + "markers": "python_version >= '3.6'", + "version": "==6.0" + }, + "resolvelib": { + "hashes": [ + "sha256:c6ea56732e9fb6fca1b2acc2ccc68a0b6b8c566d8f3e78e0443310ede61dbd37", + "sha256:d9b7907f055c3b3a2cfc56c914ffd940122915826ff5fb5b1de0c99778f4de98" + ], + "version": "==0.8.1" }, "s3transfer": { "hashes": [ - "sha256:35627b86af8ff97e7ac27975fe0a98a312814b46c6333d8a6b889627bcd80994", - "sha256:efa5bd92a897b6a8d5c1383828dca3d52d0790e0756d49740563a3fb6ed03246" + "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd", + "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947" ], - "version": "==0.3.7" + "markers": "python_version >= '3.7'", + "version": "==0.6.0" }, "six": { "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.15.0" + "version": "==1.16.0" }, "urllib3": { "hashes": [ - "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", - "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" + "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", + "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.4" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", + "version": "==1.26.12" } }, "develop": { + "ansible-compat": { + "hashes": [ + "sha256:7a012753a0a02dab2f22b0e574e3e7b00399f660606154474ffe25621fa80d3b", + "sha256:8857b317bf36a00dbb0b06640d19b68bb64f667bf2a5355189f3c5961f4b1c10" + ], + "markers": "python_version >= '3.8'", + "version": "==2.2.1" + }, "arrow": { "hashes": [ - "sha256:3515630f11a15c61dcb4cdd245883270dd334c83f3e639824e65a4b79cc48543", - "sha256:399c9c8ae732270e1aa58ead835a79a40d7be8aa109c579898eb41029b5a231d" + "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1", + "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2" ], "markers": "python_version >= '3.6'", - "version": "==1.0.3" + "version": "==1.2.3" }, "attrs": { "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", + "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.3.0" - }, - "aws-sam-translator": { - "hashes": [ - "sha256:2f8904fd4a631752bc441a8fd928c444ed98ceb86b94d25ed7b84982e2eff1cd", - "sha256:5cf7faab3566843f3b44ef1a42a9c106ffb50809da4002faab818076dcc7bff8", - "sha256:c35075e7e804490d6025598ed4878ad3ab8668e37cafb7ae75120b1c37a6d212" - ], - "version": "==1.35.0" - }, - "backports.shutil-get-terminal-size": { - "hashes": [ - "sha256:0975ba55054c15e346944b38956a4c9cbee9009391e41b86c68990effb8c1f64", - "sha256:713e7a8228ae80341c70586d1cc0a8caa5207346927e23d09dcbcaf18eadec80" - ], - "version": "==1.0.0" - }, - "bcrypt": { - "hashes": [ - "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29", - "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7", - "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34", - "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55", - "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6", - "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1", - "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d" - ], - "markers": "python_version >= '3.6'", - "version": "==3.2.0" + "markers": "python_version >= '3.5'", + "version": "==22.1.0" }, "binaryornot": { "hashes": [ @@ -323,123 +485,51 @@ ], "version": "==0.4.4" }, - "boto3": { - "hashes": [ - "sha256:a482135c30fa07eaf4370314dd0fb49117222a266d0423b2075aed3835ed1f04", - "sha256:d5ef160442925f5944e4cde88589f0f195f6c284f05613114fc6bbc35e342fa7" - ], - "index": "pypi", - "version": "==1.17.49" - }, - "botocore": { - "hashes": [ - "sha256:6a672ba41dd00e5c1c1824ca8143d180d88de8736d78c0b1f96b8d3cb0466561", - "sha256:f7f103fa0651c69dd360c7d0ecd874854303de5cc0869e0cbc2818a52baacc69" - ], - "index": "pypi", - "version": "==1.20.49" - }, "cerberus": { "hashes": [ - "sha256:7aff49bc793e58a88ac14bffc3eca0f67e077881d3c62c621679a621294dd174", - "sha256:eec10585c33044fb7c69650bc5b68018dac0443753337e2b07684ee0f3c83329" + "sha256:302e6694f206dd85cb63f13fd5025b31ab6d38c99c50c6d769f8fa0b0f299589" ], "markers": "python_version >= '2.7'", - "version": "==1.3.3" + "version": "==1.3.2" }, "certifi": { "hashes": [ - "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", - "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", + "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" ], - "version": "==2020.12.5" - }, - "cffi": { - "hashes": [ - "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", - "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", - "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", - "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", - "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", - "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", - "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", - "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", - "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", - "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", - "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", - "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", - "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5", - "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", - "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", - "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", - "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", - "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", - "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", - "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369", - "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827", - "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053", - "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa", - "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4", - "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322", - "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132", - "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62", - "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa", - "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0", - "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396", - "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", - "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", - "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", - "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", - "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", - "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", - "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" - ], - "version": "==1.14.5" - }, - "cfn-lint": { - "hashes": [ - "sha256:5bf30bb468491717046e4b1212ce0378f53cd4b9b4461387fd9b549c21c97f2e", - "sha256:67dc1687ccb68f76341a75f1a35f3074e6ac21169208d1ee1f658ed06134b213" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.48.2" + "markers": "python_version >= '3.6'", + "version": "==2022.9.24" }, "chardet": { "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + "sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa", + "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==4.0.0" + "markers": "python_version >= '3.6'", + "version": "==5.0.0" + }, + "charset-normalizer": { + "hashes": [ + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" + ], + "markers": "python_version >= '3.6'", + "version": "==2.1.1" }, "click": { "hashes": [ - "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", - "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", + "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==7.1.2" - }, - "click-completion": { - "hashes": [ - "sha256:5bf816b81367e638a190b6e91b50779007d14301b3f9f3145d68e3cade7bce86" - ], - "version": "==0.5.2" + "markers": "python_version >= '3.7'", + "version": "==8.1.3" }, "click-help-colors": { "hashes": [ - "sha256:eb037a2dd95a9e20b3897c2b3ca57e7f6797f76a8d93f7eeedda7fcdcbc9b635", - "sha256:f6c3d1fe86b07790e6ef0339f458196a8814de90946d876774ea4b4f30a5a539" + "sha256:25a6bd22d8abbc72c18a416a1cf21ab65b6120bee48e9637829666cbad22d51d", + "sha256:78cbcf30cfa81c5fc2a52f49220121e1a8190cd19197d9245997605d3405824d" ], - "version": "==0.9" - }, - "colorama": { - "hashes": [ - "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", - "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.4.4" + "version": "==0.9.1" }, "commonmark": { "hashes": [ @@ -450,109 +540,35 @@ }, "cookiecutter": { "hashes": [ - "sha256:430eb882d028afb6102c084bab6cf41f6559a77ce9b18dc6802e3bc0cc5f4a30", - "sha256:efb6b2d4780feda8908a873e38f0e61778c23f6a2ea58215723bcceb5b515dac" + "sha256:9f3ab027cec4f70916e28f03470bdb41e637a3ad354b4d65c765d93aad160022", + "sha256:f3982be8d9c53dac1261864013fdec7f83afd2e42ede6f6dd069c5e149c540d5" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.7.2" - }, - "cryptography": { - "hashes": [ - "sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d", - "sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959", - "sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6", - "sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873", - "sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2", - "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713", - "sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1", - "sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177", - "sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250", - "sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca", - "sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d", - "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9" - ], - "markers": "python_version >= '3.6'", - "version": "==3.4.7" - }, - "dataclasses-jsonschema": { - "hashes": [ - "sha256:4f0ba1ee882f2a79afa7e36d98e063fd7c71f15b54affeebf9116238e73e7b94", - "sha256:a51fcb9523ce7aaa6daec2b42ce05f512f795192321c0ca5918b69125023dbc3" - ], - "version": "==2.14.1" - }, - "decorator": { - "hashes": [ - "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", - "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" - ], - "version": "==4.4.2" - }, - "distro": { - "hashes": [ - "sha256:0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92", - "sha256:df74eed763e18d10d0da624258524ae80486432cd17392d9c3d96f5e83cd2799" - ], - "version": "==1.5.0" + "markers": "python_version >= '3.7'", + "version": "==2.1.1" }, "docker": { "hashes": [ - "sha256:0604a74719d5d2de438753934b755bfcda6f62f49b8e4b30969a4b0a2a8a1220", - "sha256:e455fa49aabd4f22da9f4e1c1f9d16308286adc60abaf64bf3e1feafaed81d06" + "sha256:19e330470af40167d293b0352578c1fa22d74b34d3edf5d4ff90ebc203bbb2f1", + "sha256:6e06ee8eca46cd88733df09b6b80c24a1a556bc5cb1e1ae54b2c239886d245cf" ], "index": "pypi", - "version": "==4.4.1" - }, - "dulwich": { - "hashes": [ - "sha256:18f52e801921665986c51ddd2efe62d961efb97bdcfaf844a5b636997c0777ae", - "sha256:1cfba9ccccd9e513afeb0bedca2de34ab674814764102eb430c75a86fba37aaa", - "sha256:2fca59c6a0b119942be9796cdb706bd1f7e9509924c63166d437afedc6950ece", - "sha256:4331ea9d27e8b722c178fa603760c9ba904336b41b513e092ad94c79e99c995a", - "sha256:45dd6a82416f076b639449bbee84b39b32b5eab7b90540badf4d8b2b0ecee84f", - "sha256:6c287ad8978b698038cdd071bbd68e838bdba935b1d7d011c1f8cc00b8edca13", - "sha256:71511bc5038efa27614e9112acbda49d26aaec58300166c6979e220257282069", - "sha256:7a748afb97fb0a0cd93bb5c10a4c41ca0c080f1d9473e30e1db045004a1aa585", - "sha256:7f96647fda9a7b0cf0ab905e14403012cfaff9d459f1e57fafc92ed4870f1c65", - "sha256:81bc2bbdc6dcd6f7c7dc43e6875914e4816f0c798bb9f89b6934e610ad30746c", - "sha256:8fdcf2e796a978e62753eab13c919abf57337e1c464b9d518d3a30572bbbe8ee", - "sha256:91f69ce2ed5ca99441339bb41338692b9b48ee67fd9c82b1837a5c0ce1c04f96", - "sha256:ac764c9a9b80fa61afe3404d5270c5060aa57f7f087b11a95395d3b76f3b71fd", - "sha256:aef6be3233b1100394b8b94a94277a8292042ab4f9ec2a0d62fa68a41edb1535", - "sha256:b34a20eab578f36408ccfcd83c470f08cdc548081a87fbfa0bc869927eccb411", - "sha256:b8c24d3874a5162343aaaad5fe29dd3cbe1870b670ca639ed825ca14859d56e4", - "sha256:be63dc78424f6af8bb27cb62bbf06f6d1d54feb06a432c642e1af6dc90d1a9e9", - "sha256:be6a954cec473dccc23086d8c5be668ccaedd90c5c7b3939c0fab4fdd8f124cd", - "sha256:df49c6b761d222ca56d5c971736ce88a74485c75674a5d0de8b9b4a3c1869174", - "sha256:e14fae058964846d1c4e51b4a56a709075edd308ea7bd946d65dee91b1f323c9", - "sha256:e52520fc5e4381f3de5f06f7f6d21bd5cb0029523b4b61b97e40538a1152d49a" - ], - "markers": "python_version >= '3.5'", - "version": "==0.20.21" + "version": "==6.0.0" }, "enrich": { "hashes": [ - "sha256:0e99ff57d87f7b5def0ca79917e88fb9351aa0d52e228ee38bff7cd858315fe4", - "sha256:ed0b3ac33495cc95f1ccafaf6c7ec0a0fcabb20f7f7a90121f37eb83a85bf82b" + "sha256:0a2ab0d2931dff8947012602d1234d2a3ee002d9a355b5d70be6bf5466008893", + "sha256:f29b2c8c124b4dbd7c975ab5c3568f6c7a47938ea3b7d2106c8a3bd346545e4f" ], "markers": "python_version >= '3.6'", - "version": "==1.2.6" + "version": "==1.2.7" }, "idna": { "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.10" - }, - "importlib-metadata": { - "hashes": [ - "sha256:2ec0faae539743ae6aaa84b49a169670a465f7f5d64e6add98388cc29fd1f2f6", - "sha256:c9356b657de65c53744046fa8f7358afe0714a1af7d570c00c3835c2d724a7c1" - ], - "markers": "python_version < '3.8'", - "version": "==3.10.1" + "markers": "python_version >= '3.5'", + "version": "==3.4" }, "iniconfig": { "hashes": [ @@ -563,11 +579,11 @@ }, "jinja2": { "hashes": [ - "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419", - "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.11.3" + "markers": "python_version >= '3.7'", + "version": "==3.1.2" }, "jinja2-time": { "hashes": [ @@ -576,388 +592,260 @@ ], "version": "==0.2.0" }, - "jmespath": { - "hashes": [ - "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", - "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.0" - }, - "jsonpatch": { - "hashes": [ - "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397", - "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2" - ], - "markers": "python_version != '3.4'", - "version": "==1.32" - }, - "jsonpointer": { - "hashes": [ - "sha256:150f80c5badd02c757da6644852f612f88e8b4bc2f9852dcbf557c8738919686", - "sha256:5a34b698db1eb79ceac454159d3f7c12a451a91f6334a4f638454327b7a89962" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.1" - }, "jsonschema": { "hashes": [ - "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163", - "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a" + "sha256:165059f076eff6971bae5b742fc029a7b4ef3f9bcf04c14e4776a7605de14b23", + "sha256:9e74b8f9738d6a946d70705dc692b74b5429cd0960d58e79ffecfc43b2221eb9" ], - "version": "==3.2.0" - }, - "junit-xml": { - "hashes": [ - "sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732" - ], - "version": "==1.9" + "markers": "python_version >= '3.7'", + "version": "==4.16.0" }, "markupsafe": { "hashes": [ - "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", - "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", - "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", - "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", - "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", - "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f", - "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39", - "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", - "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", - "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014", - "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f", - "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", - "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", - "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", - "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", - "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", - "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", - "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", - "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", - "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85", - "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1", - "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", - "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", - "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", - "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850", - "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0", - "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", - "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", - "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb", - "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", - "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", - "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", - "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1", - "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2", - "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", - "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", - "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", - "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7", - "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", - "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8", - "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", - "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193", - "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", - "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b", - "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", - "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", - "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5", - "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c", - "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032", - "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", - "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be", - "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621" + "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", + "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", + "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", + "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", + "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", + "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", + "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", + "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", + "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", + "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", + "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", + "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", + "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", + "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", + "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", + "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", + "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", + "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", + "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", + "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", + "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", + "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", + "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", + "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", + "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", + "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", + "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", + "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", + "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", + "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", + "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", + "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", + "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", + "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", + "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", + "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", + "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", + "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", + "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", + "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.1.1" - }, - "mock": { - "hashes": [ - "sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1", - "sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba" - ], - "version": "==2.0.0" + "markers": "python_version >= '3.7'", + "version": "==2.1.1" }, "molecule": { "hashes": [ - "sha256:9e360073598d45ec86036d84084fc6493dfc4270fd7600ee9ebe0ce03a0af6e5", - "sha256:d96ef3f895250f16142ed51591558d54a67a1546e05ccff386be0320de44973c" + "sha256:dcf829a70fd987ad21d28d44820b05d7fc09250dc19a79572ca10669e27bd8be", + "sha256:ee10e5463bc9940f9afd9b85812c63eacefea889a99c21274f4054ebe248c3b9" ], "index": "pypi", - "version": "==3.2.2" + "version": "==4.0.1" }, "molecule-docker": { "hashes": [ - "sha256:251832979dcb590da4cd46df60f2240c1e88f66f4015223efe350b6afe68c342", - "sha256:715a16d6fb90c6a260f280c8e5c559b3bd4a3e75752eb208f6ab055df5afe04a" + "sha256:12c180c95c3f022d89aedd52e42b57e5c1e0ee4d4be8ec997c3dcb9c28d7e2a3", + "sha256:c447842ee4817fe6efa64ca6a73b1e3081cd60710ed86385b6ad7569d9599ab5" ], "index": "pypi", - "version": "==0.2.4" - }, - "networkx": { - "hashes": [ - "sha256:0635858ed7e989f4c574c2328380b452df892ae85084144c73d8cd819f0c4e06", - "sha256:109cd585cac41297f71103c3c42ac6ef7379f29788eb54cb751be5a663bb235a" - ], - "markers": "python_version >= '3.5'", - "version": "==2.5.1" + "version": "==2.0.0" }, "packaging": { "hashes": [ - "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", - "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.9" - }, - "paramiko": { - "hashes": [ - "sha256:4f3e316fef2ac628b05097a637af35685183111d4bc1b5979bd397c2ab7b5898", - "sha256:7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035" - ], - "version": "==2.7.2" - }, - "pathspec": { - "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" - ], - "version": "==0.8.1" - }, - "pbr": { - "hashes": [ - "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", - "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" - ], - "markers": "python_version >= '2.6'", - "version": "==5.5.1" + "markers": "python_version >= '3.6'", + "version": "==21.3" }, "pluggy": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.13.1" - }, - "poyo": { - "hashes": [ - "sha256:3e2ca8e33fdc3c411cd101ca395668395dd5dc7ac775b8e809e3def9f9fe041a", - "sha256:e26956aa780c45f011ca9886f044590e2d8fd8b61db7b1c1cf4e0869f48ed4dd" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.5.0" + "markers": "python_version >= '3.6'", + "version": "==1.0.0" }, "py": { "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.10.0" - }, - "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" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" }, "pygments": { "hashes": [ - "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", - "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" + "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", + "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" ], - "markers": "python_version >= '3.5'", - "version": "==2.8.1" - }, - "pynacl": { - "hashes": [ - "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4", - "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4", - "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574", - "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d", - "sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634", - "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25", - "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f", - "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505", - "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122", - "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7", - "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420", - "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f", - "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96", - "sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6", - "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" + "markers": "python_version >= '3.6'", + "version": "==2.13.0" }, "pyparsing": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.4.7" + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" }, "pyrsistent": { "hashes": [ - "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e" + "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c", + "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc", + "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e", + "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26", + "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec", + "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286", + "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045", + "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec", + "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8", + "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c", + "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca", + "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22", + "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a", + "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96", + "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc", + "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1", + "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07", + "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6", + "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b", + "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5", + "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6" ], - "markers": "python_version >= '3.5'", - "version": "==0.17.3" + "markers": "python_version >= '3.7'", + "version": "==0.18.1" }, "pytest": { "hashes": [ - "sha256:671238a46e4df0f3498d1c3270e5deb9b32d25134c99b7d75370a68cfbe9b634", - "sha256:6ad9c7bdf517a808242b998ac20063c41532a570d088d77eec1ee12b0b5574bc" + "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7", + "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39" ], "index": "pypi", - "version": "==6.2.3" + "version": "==7.1.3" }, "pytest-testinfra": { "hashes": [ - "sha256:f24f41c6453e0e70f361672cabc8358b4ade1f72a1d52870e621f12bf74015e1", - "sha256:fbaec729a39c90917895381bee903461be1aa8dcd2f5fff6bc5600c9fe12c795" + "sha256:07c8c2c472aca7d83099ebc5f850d383721cd654b66c60ffbb145e45e584ff99", + "sha256:56ac1dfc61342632a1189091473e253db1a3cdcecce0d49d6a769f33cd264814" ], - "markers": "python_version >= '3.6'", - "version": "==6.2.0" + "index": "pypi", + "version": "==6.8.0" }, "python-dateutil": { "hashes": [ - "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", - "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.1" + "version": "==2.8.2" }, "python-slugify": { "hashes": [ - "sha256:69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270" + "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1", + "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927" ], - "version": "==4.0.1" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==6.1.2" }, "pyyaml": { "hashes": [ - "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", - "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", - "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", - "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", - "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", - "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", - "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", - "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", - "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", - "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", - "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", - "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", - "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", - "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", - "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", - "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", - "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", - "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", - "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", - "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", - "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", - "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", - "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", - "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", - "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", - "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", - "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", - "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==5.4.1" - }, - "reprint": { - "hashes": [ - "sha256:0ebc4dc21aefc810205f3fcc21783ea91bb96292a8500663482e864989bff54d" - ], - "version": "==0.6.0" + "markers": "python_version >= '3.6'", + "version": "==6.0" }, "requests": { "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", + "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.25.1" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.28.1" }, "rich": { "hashes": [ - "sha256:60cd6d6ea697a1704f2057e791e3062b506b5c74a6e2ad2ced71eccb37557259", - "sha256:8f05431091601888c50341697cfc421dc398ce37b12bca0237388ef9c7e2c9e9" + "sha256:2eb4e6894cde1e017976d2975ac210ef515d7548bc595ba20e195fb9628acdeb", + "sha256:63a5c5ce3673d3d5fbbf23cd87e11ab84b6b451436f1b7f19ec54b6bc36ed7ca" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==10.1.0" + "markers": "python_version < '4' and python_full_version >= '3.6.3'", + "version": "==12.5.1" }, - "s3transfer": { + "setuptools": { "hashes": [ - "sha256:35627b86af8ff97e7ac27975fe0a98a312814b46c6333d8a6b889627bcd80994", - "sha256:efa5bd92a897b6a8d5c1383828dca3d52d0790e0756d49740563a3fb6ed03246" + "sha256:a8f6e213b4b0661f590ccf40de95d28a177cd747d098624ad3f69c40287297e9", + "sha256:c2d2709550f15aab6c9110196ea312f468f41cd546bceb24127a1be6fdcaeeb1" ], - "version": "==0.3.7" - }, - "selinux": { - "hashes": [ - "sha256:820adcf1b4451c9cc7759848797703263ba0eb6a4cad76d73548a9e0d57b7926", - "sha256:d435f514e834e3fdc0941f6a29d086b80b2ea51b28112aee6254bd104ee42a74" - ], - "markers": "sys_platform == 'linux' and sys_platform == 'linux'", - "version": "==0.2.1" - }, - "shellingham": { - "hashes": [ - "sha256:4855c2458d6904829bd34c299f11fdeed7cfefbf8a2c522e4caea6cd76b3171e", - "sha256:536b67a0697f2e4af32ab176c00a50ac2899c5a05e0d8e2dadac8e58888283f9" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.4.0" + "markers": "python_version >= '3.7'", + "version": "==65.4.0" }, "six": { "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.15.0" + "version": "==1.16.0" }, "subprocess-tee": { "hashes": [ - "sha256:518b59a4cd51573749c8f063a675ff9b4ee3370742ee1d7078c2a8b73bad2567", - "sha256:c7cbee649ad272ed13cb1f701e70ef17612b4df99bc809f1eae571d6565595d2" + "sha256:d34186c639aa7f8013b5dfba80e17f52589539137c9d9205f2ae1c1bd03549e1", + "sha256:ff5cced589a4b8ac973276ca1ba21bb6e3de600cde11a69947ff51f696efd577" ], "markers": "python_version >= '3.6'", - "version": "==0.3.1" - }, - "tabulate": { - "hashes": [ - "sha256:d7c013fe7abbc5e491394e10fa845f8f32fe54f8dc60c6622c6cf482d25d47e4", - "sha256:eb1d13f25760052e8931f2ef80aaf6045a6cceb47514db8beab24cded16f13a7" - ], - "version": "==0.8.9" - }, - "taskcat": { - "hashes": [ - "sha256:bcada35b33c70050529238d1d92c280f1fe24e597f7a81f385256e2cb4932d18" - ], - "index": "pypi", - "version": "==0.9.23" - }, - "testinfra": { - "hashes": [ - "sha256:1a75b5025dbe82ffedec50afeaf9a7f96a8cd1e294f0d40de3a089a369ceae0e", - "sha256:4225d36e4bb02eb1618429325280c4b62a18cea8a90c91564ee0cc1d31ca331a" - ], - "index": "pypi", - "version": "==6.0.0" + "version": "==0.3.5" }, "text-unidecode": { "hashes": [ @@ -966,59 +854,29 @@ ], "version": "==1.3" }, - "toml": { + "tomli": { "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", - "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", - "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" - ], - "markers": "python_version < '3.8'", - "version": "==3.7.4.3" + "markers": "python_version >= '3.7'", + "version": "==2.0.1" }, "urllib3": { "hashes": [ - "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df", - "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937" + "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", + "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.4" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", + "version": "==1.26.12" }, "websocket-client": { "hashes": [ - "sha256:44b5df8f08c74c3d82d28100fdc81f4536809ce98a17f0757557813275fbb663", - "sha256:63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f" + "sha256:398909eb7e261f44b8f4bd474785b6ec5f5b499d4953342fe9755e01ef624090", + "sha256:f9611eb65c8241a67fb373bef040b3cf8ad377a9f6546a12b620b6511e8ea9ef" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.58.0" - }, - "yamllint": { - "hashes": [ - "sha256:87d9462b3ed7e9dfa19caa177f7a77cd9888b3dc4044447d6ae0ab233bcd1324" - ], - "markers": "python_version >= '3.5'", - "version": "==1.26.1" - }, - "yattag": { - "hashes": [ - "sha256:5731a31cb7452c0c6930dd1a284e0170b39eee959851a2aceb8d6af4134a5fa8" - ], - "version": "==1.14.0" - }, - "zipp": { - "hashes": [ - "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76", - "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098" - ], - "markers": "python_version >= '3.6'", - "version": "==3.4.1" + "markers": "python_version >= '3.7'", + "version": "==1.4.1" } } } diff --git a/ansible.cfg b/ansible.cfg index 226c188..06857ac 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,5 +1,4 @@ [defaults] retry_files_enabled = False -callback_whitelist = profile_tasks -conditional_bare_variables = True +callbacks_enabled = profile_tasks collections_paths = ./ diff --git a/aws_bitbucket_dc_node.yml b/aws_bitbucket_dc_node.yml index b67743d..c8fddb3 100644 --- a/aws_bitbucket_dc_node.yml +++ b/aws_bitbucket_dc_node.yml @@ -32,7 +32,7 @@ - role: aws_common # For Bitbucket DC clusters that store repos on Bitbucket Mesh(https://confluence.atlassian.com/bitbucketserver/bitbucket-data-center-and-server-8-0-release-notes-1115659343.html#BitbucketDataCenterandServer8.0releasenotes-mesh), # nodes may be setup to use EFS instead of NFS for shared_home by not defining 'atl_fileserver_host' - - { role: aws_shared_fs_config, when: (atl_fileserver_host is not defined or atl_fileserver_host |length == 0) and (atl_efs_id|length > 0) } + - { role: aws_shared_fs_config, when: (atl_fileserver_host is not defined or atl_fileserver_host | length == 0) and (atl_efs_id | length > 0) } - { role: nfs_mount, when : (atl_fileserver_host is defined) and (atl_fileserver_host|length > 0) } - role: product_common - role: product_install diff --git a/bin/install-ansible b/bin/install-ansible index 9c3e06f..2c8eaa4 100755 --- a/bin/install-ansible +++ b/bin/install-ansible @@ -4,13 +4,13 @@ set -e source /etc/os-release if [[ $ID = "amzn" ]]; then + amazon-linux-extras enable python3.8 + yum clean metadata yum install -y \ - python3-devel \ - python3-pip \ - python2-boto3 \ - python2-botocore \ - python-lxml - + python2-pip \ + python38 \ + python38-pip \ + python38-devel else # FIXME: Currently assumes Debian-based apt-get update && \ @@ -32,4 +32,8 @@ if [[ $1 == "--dev" ]]; then fi echo "Installing collections from galaxy..." -pipenv run ansible-galaxy collection install -v -r requirements.yml +galaxy_retry_count=0 +until [[ $galaxy_retry_count -gt 2 ]]; do + pipenv run ansible-galaxy collection install --upgrade --verbose --requirements-file requirements.yml && break + galaxy_retry_count=$((galaxy_retry_count + 1)) +done diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 75ec588..30abc50 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -4,11 +4,13 @@ # # make > ../bitbucket-pipelines.yml -image: debian:buster +image: debian:bullseye options: size: 2x definitions: + caches: + ansible-collections: ansible_collections services: docker: memory: 4096 @@ -34,178 +36,258 @@ pipelines: - parallel: - step: - name: aws_common/cw-disabled - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/aws_common - - pipenv run molecule test -s cw-disabled + name: aws_common/cw-disabled + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/aws_common + - pipenv run molecule test -s cw-disabled - step: - name: aws_common/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/aws_common - - pipenv run molecule test -s default + name: aws_common/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/aws_common + - pipenv run molecule test -s default - step: - name: aws_common/logs-disabled - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/aws_common - - pipenv run molecule test -s logs-disabled + name: aws_common/logs-disabled + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/aws_common + - pipenv run molecule test -s logs-disabled - step: - name: bitbucket_config/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/bitbucket_config - - pipenv run molecule test -s default + name: bitbucket_config/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/bitbucket_config + - pipenv run molecule test -s default - step: - name: bitbucket_config/iam_elasticsearch - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/bitbucket_config - - pipenv run molecule test -s iam_elasticsearch + name: bitbucket_config/iam_elasticsearch + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/bitbucket_config + - pipenv run molecule test -s iam_elasticsearch - step: - name: confluence_config/aurora - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/confluence_config - - pipenv run molecule test -s aurora + name: confluence_config/aurora + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/confluence_config + - pipenv run molecule test -s aurora - step: - name: confluence_config/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/confluence_config - - pipenv run molecule test -s default + name: confluence_config/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/confluence_config + - pipenv run molecule test -s default - step: - name: confluence_config/password_char_escaping - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/confluence_config - - pipenv run molecule test -s password_char_escaping + name: confluence_config/password_char_escaping + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/confluence_config + - pipenv run molecule test -s password_char_escaping - step: - name: confluence_config/system_jdk - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/confluence_config - - pipenv run molecule test -s system_jdk + name: confluence_config/system_jdk + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/confluence_config + - pipenv run molecule test -s system_jdk - step: - name: diy_backup/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/diy_backup - - pipenv run molecule test -s default + name: diy_backup/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/diy_backup + - pipenv run molecule test -s default - step: - name: jira_config/aurora - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/jira_config - - pipenv run molecule test -s aurora + name: jira_config/aurora + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/jira_config + - pipenv run molecule test -s aurora - step: - name: jira_config/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/jira_config - - pipenv run molecule test -s default + name: jira_config/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/jira_config + - pipenv run molecule test -s default - step: - name: jira_config/jira_config_props - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/jira_config - - pipenv run molecule test -s jira_config_props + name: jira_config/jira_config_props + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/jira_config + - pipenv run molecule test -s jira_config_props - step: - name: jira_config/password_char_escaping - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/jira_config - - pipenv run molecule test -s password_char_escaping + name: jira_config/password_char_escaping + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/jira_config + - pipenv run molecule test -s password_char_escaping - step: - name: linux_common/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/linux_common - - pipenv run molecule test -s default + name: linux_common/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/linux_common + - pipenv run molecule test -s default - step: - name: product_common/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_common - - pipenv run molecule test -s default + name: product_common/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_common + - pipenv run molecule test -s default - step: - name: product_common/system_jdk - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_common - - pipenv run molecule test -s system_jdk + name: product_common/system_jdk + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_common + - pipenv run molecule test -s system_jdk - step: - name: product_install/bitbucket_latest - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s bitbucket_latest + name: product_install/bitbucket_latest + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s bitbucket_latest - step: - name: product_install/confluence_latest - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s confluence_latest + name: product_install/confluence_latest + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s confluence_latest - step: name: product_install/confluence_version_with_uppercase + caches: + - ansible-collections + - docker + - pip services: - docker script: @@ -214,175 +296,252 @@ pipelines: - cd roles/product_install - pipenv run molecule test -s confluence_version_with_uppercase - step: - name: product_install/crowd_latest - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s crowd_latest + name: product_install/crowd_latest + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s crowd_latest - step: - name: product_install/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s default + name: product_install/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s default - step: - name: product_install/jira_all - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_all + name: product_install/jira_all + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_all - step: - name: product_install/jira_tarball_download_url - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_tarball_download_url + name: product_install/jira_cached_with_downgrade + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_cached_with_downgrade - step: - name: product_install/jira_cached_with_downgrade - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_cached_with_downgrade + name: product_install/jira_cached_with_upgrade + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_cached_with_upgrade - step: - name: product_install/jira_cached_with_upgrade - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_cached_with_upgrade + name: product_install/jira_software_latest + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_software_latest - step: - name: product_install/jira_software_latest - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_software_latest + name: product_install/jira_tarball + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_tarball - step: - name: product_install/jira_tarball - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_tarball + name: product_install/jira_tarball_download_url + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_tarball_download_url - step: - name: product_install/jira_version_from_file - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_version_from_file + name: product_install/jira_version_from_file + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_version_from_file - step: - name: product_install/jira_version_latest - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_version_latest + name: product_install/jira_version_latest + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_version_latest - step: - name: product_install/jira_version_override - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s jira_version_override + name: product_install/jira_version_override + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s jira_version_override - step: - name: product_install/servicedesk3 - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s servicedesk3 + name: product_install/servicedesk3 + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s servicedesk3 - step: - name: product_install/servicedesk4 - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s servicedesk4 + name: product_install/servicedesk4 + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s servicedesk4 - step: - name: product_install/servicedesk_latest - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_install - - pipenv run molecule test -s servicedesk_latest + name: product_install/servicedesk_latest + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_install + - pipenv run molecule test -s servicedesk_latest - step: - name: product_startup/bitbucket - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_startup - - pipenv run molecule test -s bitbucket + name: product_startup/bitbucket + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_startup + - pipenv run molecule test -s bitbucket - step: - name: product_startup/default - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_startup - - pipenv run molecule test -s default + name: product_startup/default + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_startup + - pipenv run molecule test -s default - step: - name: product_startup/startup_restart_false - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_startup - - pipenv run molecule test -s startup_restart_false + name: product_startup/startup_restart_false + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_startup + - pipenv run molecule test -s startup_restart_false - step: - name: product_startup/synchrony - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/product_startup - - pipenv run molecule test -s synchrony + name: product_startup/synchrony + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/product_startup + - pipenv run molecule test -s synchrony - step: - name: Run Snyk security scan - services: - - docker - script: - - ./bin/install-ansible --dev - - apt-get update && apt-get install -y npm - - npm install -g snyk@1.455.0 - - snyk auth $SNYK_TOKEN - - pipenv run snyk monitor --severity-threshold=high --project-name=dc-deployments-automation + name: Run Snyk security scan + caches: + - docker + - pip + - node + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - apt-get update && apt-get install -y npm + - npm install -g snyk + - snyk auth $SNYK_TOKEN + - pipenv run snyk monitor --severity-threshold=high --project-name=dc-deployments-automation diff --git a/group_vars/aws_node_local.yml b/group_vars/aws_node_local.yml index 18cc082..fca7c2b 100644 --- a/group_vars/aws_node_local.yml +++ b/group_vars/aws_node_local.yml @@ -38,7 +38,7 @@ atl_installer_temp: "{{ atl_installation_base }}/tmp" # installed and linked to `/usr/lib/jvm/java`. # See product_common/task/ubuntu.yml for an example of apropriate # linking using `alternatives`. -atl_java_home: "{{ '/usr/lib/jvm/java' if atl_use_system_jdk else (atl_product_installation_current + '/jre') }}" +atl_java_home: "{{ '/usr/lib/jvm/java' if atl_use_system_jdk | bool else (atl_product_installation_current + '/jre') }}" atl_java_binary: "{{ atl_java_home }}/bin/java" atl_product_logs_default: &logs_default @@ -79,8 +79,8 @@ atl_aws_region: "{{ lookup('env', 'ATL_AWS_REGION') }}" atl_aws_iam_role: "{{ lookup('env', 'ATL_AWS_IAM_ROLE') }}" atl_aws_iam_role_arn: "{{ lookup('env', 'ATL_AWS_IAM_ROLE_ARN') }}" -atl_aws_enable_cloudwatch: "{{ lookup('env', 'ATL_AWS_ENABLE_CLOUDWATCH')|bool or false }}" -atl_aws_enable_cloudwatch_logs: "{{ lookup('env', 'ATL_AWS_ENABLE_CLOUDWATCH_LOGS')|bool or false }}" +atl_aws_enable_cloudwatch: "{{ lookup('env', 'ATL_AWS_ENABLE_CLOUDWATCH') | bool or false }}" +atl_aws_enable_cloudwatch_logs: "{{ lookup('env', 'ATL_AWS_ENABLE_CLOUDWATCH_LOGS') | bool or false }}" atl_db_engine: "{{ lookup('env', 'ATL_DB_ENGINE') }}" atl_db_host: "{{ lookup('env', 'ATL_DB_HOST') }}" @@ -100,7 +100,7 @@ atl_db_timebetweenevictionrunsmillis: "{{ lookup('env', 'ATL_DB_TIMEBETWEENEVICT atl_db_minevictableidletimemillis: "{{ lookup('env', 'ATL_DB_MINEVICTABLEIDLETIMEMILLIS') or '5000' }}" atl_db_removeabandoned: "{{ lookup('env', 'ATL_DB_REMOVEABANDONED') or 'true' }}" atl_db_removeabandonedtimeout: "{{ lookup('env', 'ATL_DB_REMOVEABANDONEDTIMEOUT') or '300' }}" -atl_db_testwhileidle: "{{ lookup('env', 'ATL_DB_TESTWHILEIDLE') or 'true'}}" +atl_db_testwhileidle: "{{ lookup('env', 'ATL_DB_TESTWHILEIDLE') or 'true' }}" atl_db_testonborrow: "{{ lookup('env', 'ATL_DB_TESTONBORROW') or 'false' }}" atl_db_engine_to_db_type_map: aurora_postgres: "postgresaurora96" @@ -116,7 +116,7 @@ atl_jdbc_ctype: "{{ lookup('env', 'ATL_JDBC_CTYPE') or 'en_US.UTF-8' }}" atl_jdbc_template: "{{ lookup('env', 'ATL_JDBC_TEMPLATE') or 'template1' }}" atl_jdbc_query_params_for_engine: aurora_postgres: "?targetServerType=master" -atl_jdbc_url: "jdbc:postgresql://{{ atl_db_host }}:{{ atl_db_port }}/{{ atl_jdbc_db_name }}{{ atl_jdbc_query_params_for_engine[atl_db_engine]| default('') }}" +atl_jdbc_url: "jdbc:postgresql://{{ atl_db_host }}:{{ atl_db_port }}/{{ atl_jdbc_db_name }}{{ atl_jdbc_query_params_for_engine[atl_db_engine] | default('') }}" atl_jvm_heap: "{{ lookup('env', 'ATL_JVM_HEAP') or '2048m' }}" atl_jvm_opts: "{{ lookup('env', 'ATL_JVM_OPTS') or '' }}" diff --git a/pipeline_generator/templates/bitbucket-pipelines.yml.j2 b/pipeline_generator/templates/bitbucket-pipelines.yml.j2 index ac5bdc7..f28c935 100644 --- a/pipeline_generator/templates/bitbucket-pipelines.yml.j2 +++ b/pipeline_generator/templates/bitbucket-pipelines.yml.j2 @@ -4,11 +4,13 @@ # # make > ../bitbucket-pipelines.yml -image: debian:buster +image: debian:bullseye options: size: 2x definitions: + caches: + ansible-collections: ansible_collections services: docker: memory: 4096 @@ -35,23 +37,32 @@ pipelines: - parallel: {% for spath in scenario_paths %} - step: - name: {{ spath.parts[2] }}/{{ spath.parts[4] }} - services: - - docker - script: - - export ANSIBLE_CONFIG=./ansible.cfg - - ./bin/install-ansible --dev - - cd roles/{{ spath.parts[2] }} - - pipenv run molecule test -s {{ spath.parts[4] }} + name: {{ spath.parts[2] }}/{{ spath.parts[4] }} + caches: + - ansible-collections + - docker + - pip + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - cd roles/{{ spath.parts[2] }} + - pipenv run molecule test -s {{ spath.parts[4] }} {% endfor %} - step: - name: Run Snyk security scan - services: - - docker - script: - - ./bin/install-ansible --dev - - apt-get update && apt-get install -y npm - - npm install -g snyk - - snyk auth $SNYK_TOKEN - - pipenv run snyk monitor --severity-threshold=high --project-name=dc-deployments-automation + name: Run Snyk security scan + caches: + - docker + - pip + - node + services: + - docker + script: + - export ANSIBLE_CONFIG=./ansible.cfg + - ./bin/install-ansible --dev + - apt-get update && apt-get install -y npm + - npm install -g snyk + - snyk auth $SNYK_TOKEN + - pipenv run snyk monitor --severity-threshold=high --project-name=dc-deployments-automation diff --git a/requirements.yml b/requirements.yml index 3b5d258..314391d 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,4 +1,12 @@ --- collections: - name: amazon.aws - version: 3.0.0 + version: "4.1.0" + - name: ansible.posix + version: "1.4.0" + - name: community.docker + version: "3.0.2" + - name: community.general + version: "5.5.0" + - name: community.postgresql + version: "2.2.0" diff --git a/roles/aws_common/handlers/main.yml b/roles/aws_common/handlers/main.yml index 0e43a13..9ca3cf0 100644 --- a/roles/aws_common/handlers/main.yml +++ b/roles/aws_common/handlers/main.yml @@ -1,15 +1,15 @@ --- - name: Enable CloudWatch Agent - systemd: + ansible.builtin.systemd: name: "amazon-cloudwatch-agent.service" daemon_reload: true enabled: true - when: atl_aws_agent_restart + when: atl_aws_agent_restart | bool - name: Restart CloudWatch Agent - systemd: + ansible.builtin.systemd: name: "amazon-cloudwatch-agent.service" enabled: true state: restarted - when: atl_aws_agent_restart + when: atl_aws_agent_restart | bool diff --git a/roles/aws_common/molecule/cw-disabled/molecule.yml b/roles/aws_common/molecule/cw-disabled/molecule.yml index 9a1ec33..792e5de 100644 --- a/roles/aws_common/molecule/cw-disabled/molecule.yml +++ b/roles/aws_common/molecule/cw-disabled/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -12,6 +10,8 @@ platforms: # image: ubuntu:bionic provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" inventory: links: group_vars: ../../../../group_vars/ diff --git a/roles/aws_common/molecule/default/molecule.yml b/roles/aws_common/molecule/default/molecule.yml index 9a1ec33..792e5de 100644 --- a/roles/aws_common/molecule/default/molecule.yml +++ b/roles/aws_common/molecule/default/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -12,6 +10,8 @@ platforms: # image: ubuntu:bionic provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" inventory: links: group_vars: ../../../../group_vars/ diff --git a/roles/aws_common/molecule/logs-disabled/molecule.yml b/roles/aws_common/molecule/logs-disabled/molecule.yml index 9a1ec33..792e5de 100644 --- a/roles/aws_common/molecule/logs-disabled/molecule.yml +++ b/roles/aws_common/molecule/logs-disabled/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -12,6 +10,8 @@ platforms: # image: ubuntu:bionic provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" inventory: links: group_vars: ../../../../group_vars/ diff --git a/roles/aws_common/tasks/amazon.yml b/roles/aws_common/tasks/amazon.yml index b4b597f..264a773 100644 --- a/roles/aws_common/tasks/amazon.yml +++ b/roles/aws_common/tasks/amazon.yml @@ -1,18 +1,22 @@ --- - name: Install AWS support packages - yum: + ansible.builtin.yum: name: - amazon-efs-utils - amazon-ssm-agent - awscli - git - ec2-utils + vars: + ansible_python_interpreter: /usr/bin/python2 - name: Install CloudWatch Agent - yum: + ansible.builtin.yum: name: - "{{ aws_cloudwatch_agent_rpm }}" - when: atl_aws_enable_cloudwatch is defined and atl_aws_enable_cloudwatch + when: atl_aws_enable_cloudwatch is defined and atl_aws_enable_cloudwatch | bool notify: - Enable CloudWatch Agent + vars: + ansible_python_interpreter: /usr/bin/python2 diff --git a/roles/aws_common/tasks/main.yml b/roles/aws_common/tasks/main.yml index 9c90622..74206e3 100644 --- a/roles/aws_common/tasks/main.yml +++ b/roles/aws_common/tasks/main.yml @@ -1,31 +1,31 @@ --- - name: Fetch local EC2 metadata - ec2_metadata_facts: + amazon.aws.ec2_metadata_facts: tags: - notest - name: Install distro-specific prerequisites - include_tasks: "{{ ansible_distribution|lower }}.yml" + ansible.builtin.include_tasks: "{{ ansible_distribution|lower }}.yml" - name: Use EC2 instance ID for cluster node ID - set_fact: + ansible.builtin.set_fact: atl_cluster_node_id: "{{ ansible_ec2_instance_id }}" atl_local_ipv4: "{{ ansible_ec2_local_ipv4 | default(ansible_default_ipv4.address) }}" - name: Generate CloudWatch config - template: + ansible.builtin.template: src: "amazon-cloudwatch-agent.json.j2" dest: "/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json" owner: root group: root mode: 0644 - when: atl_aws_enable_cloudwatch is defined and atl_aws_enable_cloudwatch + when: atl_aws_enable_cloudwatch is defined and atl_aws_enable_cloudwatch | bool notify: - Restart CloudWatch Agent - name: Store some metadata about this run - include_tasks: "write-tags.yml" + ansible.builtin.include_tasks: "write-tags.yml" - name: Initiate the startup of any new AWS services now - meta: flush_handlers + ansible.builtin.meta: flush_handlers diff --git a/roles/aws_common/tasks/write-tags.yml b/roles/aws_common/tasks/write-tags.yml index d1df291..bf87c20 100644 --- a/roles/aws_common/tasks/write-tags.yml +++ b/roles/aws_common/tasks/write-tags.yml @@ -1,28 +1,27 @@ --- - name: Retrieve all available EC2 tags - ec2_tag: + amazon.aws.ec2_tag_info: region: "{{ ansible_ec2_placement_region }}" resource: "{{ ansible_ec2_instance_id }}" - state: list register: ec2_instance_tags ignore_errors: true tags: - notest - name: Retrieve autoscaling group - set_fact: + ansible.builtin.set_fact: ec2_autoscaling_group: "{{ ec2_instance_tags.tags['aws:autoscaling:groupName'] | default('') }}" - block: # No existing timestamp, so this is a first run. Persist some metadata into the ASG. - - name: Fetch the git revision for this repo - command: + - name: Fetch the git revision for this repo # noqa: command-instead-of-module no-changed-when + ansible.builtin.command: cmd: git rev-parse HEAD register: git_out - name: Setup the new ASG tags - set_fact: + ansible.builtin.set_fact: deployment_firstrun_meta: - ResourceType: "auto-scaling-group" ResourceId: "{{ ec2_autoscaling_group }}" @@ -40,15 +39,15 @@ # Set the tags on the ASG and the local instance. We need to # ignore errors as it's possible we don't have the permissions, # and we can't check up-front. - - name: Set the first-run tags on the ASG ("FAIL" is not critical) - command: "aws autoscaling + - name: Set the first-run tags on the ASG ("FAIL" is not critical) # noqa: no-changed-when + ansible.builtin.command: "aws autoscaling create-or-update-tags --region {{ ansible_ec2_placement_region }} --tags '{{ deployment_firstrun_meta | to_json }}'" ignore_errors: true - name: Set the tags on the local instance ("FAIL" is not critical) - ec2_tag: + amazon.aws.ec2_tag: region: "{{ ansible_ec2_placement_region }}" resource: "{{ ansible_ec2_instance_id }}" tags: diff --git a/roles/aws_common/templates/amazon-cloudwatch-agent.json.j2 b/roles/aws_common/templates/amazon-cloudwatch-agent.json.j2 index cebec1e..5b86b94 100644 --- a/roles/aws_common/templates/amazon-cloudwatch-agent.json.j2 +++ b/roles/aws_common/templates/amazon-cloudwatch-agent.json.j2 @@ -4,7 +4,7 @@ "run_as_user": "root" }, - {% if atl_aws_enable_cloudwatch_logs is defined and atl_aws_enable_cloudwatch_logs %} + {% if atl_aws_enable_cloudwatch_logs is defined and atl_aws_enable_cloudwatch_logs | bool %} "logs": { "logs_collected": { "files": { diff --git a/roles/aws_shared_fs_config/meta/main.yml b/roles/aws_shared_fs_config/meta/main.yml index b0f4ac0..8644a1f 100644 --- a/roles/aws_shared_fs_config/meta/main.yml +++ b/roles/aws_shared_fs_config/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - aws_common + - role: aws_common diff --git a/roles/aws_shared_fs_config/tasks/main.yml b/roles/aws_shared_fs_config/tasks/main.yml index 589383c..c906926 100644 --- a/roles/aws_shared_fs_config/tasks/main.yml +++ b/roles/aws_shared_fs_config/tasks/main.yml @@ -1,13 +1,13 @@ --- - name: Create mountpoint - file: + ansible.builtin.file: state: directory path: "{{ atl_shared_mountpoint }}" mode: 0755 - name: Enable mountpoint in fstab - mount: + ansible.posix.mount: path: "{{ atl_shared_mountpoint }}" src: "{{ efs_target }}:{{ efs_src_dir }}" fstype: "{{ efs_type }}" diff --git a/roles/bitbucket_config/meta/main.yml b/roles/bitbucket_config/meta/main.yml index ca5ee97..ff263fc 100644 --- a/roles/bitbucket_config/meta/main.yml +++ b/roles/bitbucket_config/meta/main.yml @@ -1,4 +1,7 @@ --- +galaxy_info: + namespace: dc_deployments_automation + dependencies: - - bitbucket_common + - role: bitbucket_common diff --git a/roles/bitbucket_config/molecule/default/molecule.yml b/roles/bitbucket_config/molecule/default/molecule.yml index 400e984..52878c5 100644 --- a/roles/bitbucket_config/molecule/default/molecule.yml +++ b/roles/bitbucket_config/molecule/default/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -18,6 +16,8 @@ platforms: - nofile:262144:262144 provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/bitbucket_config/molecule/iam_elasticsearch/molecule.yml b/roles/bitbucket_config/molecule/iam_elasticsearch/molecule.yml index 400e984..52878c5 100644 --- a/roles/bitbucket_config/molecule/iam_elasticsearch/molecule.yml +++ b/roles/bitbucket_config/molecule/iam_elasticsearch/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -18,6 +16,8 @@ platforms: - nofile:262144:262144 provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/bitbucket_config/tasks/main.yml b/roles/bitbucket_config/tasks/main.yml index 4de771b..7ee24cd 100644 --- a/roles/bitbucket_config/tasks/main.yml +++ b/roles/bitbucket_config/tasks/main.yml @@ -1,7 +1,7 @@ --- - name: Create Bitbucket shared dir if necessary - file: + ansible.builtin.file: path: "{{ atl_product_home_shared }}" owner: "{{ atl_product_user }}" group: "{{ atl_product_user }}" @@ -9,14 +9,14 @@ state: directory - name: Create Bitbucket config file - template: + ansible.builtin.template: src: bitbucket.properties.j2 dest: "{{ atl_product_home_shared }}/bitbucket.properties" owner: "{{ atl_product_user }}" group: "{{ atl_product_user }}" - name: Remove write permissions from installation directory - file: + ansible.builtin.file: path: "{{ atl_product_installation_versioned }}" owner: "root" group: "root" @@ -25,7 +25,7 @@ changed_when: false # For Molecule idempotence check - name: Create conf/Catalina directory so catalina.out logging works - file: + ansible.builtin.file: path: "{{ atl_product_installation_versioned }}/conf/Catalina" state: directory mode: "u=rwX,g=rX,o-rwx" diff --git a/roles/bitbucket_config/templates/bitbucket.properties.j2 b/roles/bitbucket_config/templates/bitbucket.properties.j2 index df7b88c..1a5ef04 100644 --- a/roles/bitbucket_config/templates/bitbucket.properties.j2 +++ b/roles/bitbucket_config/templates/bitbucket.properties.j2 @@ -13,7 +13,7 @@ hazelcast.network.aws.tag.value={{ atl_aws_stack_name }} hazelcast.group.name={{ atl_aws_stack_name }} hazelcast.group.password={{ atl_aws_stack_name }} plugin.search.elasticsearch.baseurl={{ atl_elasticsearch_endpoint }} -{% if elasticsearch_should_auth_with_iam %} +{% if elasticsearch_should_auth_with_iam | bool %} plugin.search.elasticsearch.aws.region={{ atl_aws_region }} {% else %} plugin.search.elasticsearch.username={{ atl_elasticsearch_username }} diff --git a/roles/bitbucket_dataset_restore/meta/main.yml b/roles/bitbucket_dataset_restore/meta/main.yml index ca5ee97..ad54581 100644 --- a/roles/bitbucket_dataset_restore/meta/main.yml +++ b/roles/bitbucket_dataset_restore/meta/main.yml @@ -1,4 +1,4 @@ --- dependencies: - - bitbucket_common + - role: bitbucket_common diff --git a/roles/bitbucket_dataset_restore/tasks/main.yml b/roles/bitbucket_dataset_restore/tasks/main.yml index 0204079..2f0fb68 100644 --- a/roles/bitbucket_dataset_restore/tasks/main.yml +++ b/roles/bitbucket_dataset_restore/tasks/main.yml @@ -1,24 +1,24 @@ --- - name: Force all notified handlers to run at this point, not waiting for normal sync points - meta: flush_handlers + ansible.builtin.meta: flush_handlers - name: wait for port 7990 to be up - wait_for: + ansible.builtin.wait_for: port: 7990 delay: 60 - name: wait for path to become available - wait_for: + ansible.builtin.wait_for: path: "{{ atl_product_home_shared }}/data/migration/import" delay: 60 - name: Copy Bitbucket dataset from s3 - get_url: + ansible.builtin.get_url: url: "{{ atl_bitbucket_dataset_url }}" dest: "{{ atl_product_home_shared }}/data/migration/import" - name: Invoke Import API - uri: + ansible.builtin.uri: url: "{{ atl_bitbucket_baseurl }}/rest/api/1.0/migration/imports" user: admin password: "{{ atl_bitbucket_admin_password }}" @@ -36,7 +36,7 @@ failed_when: output is defined and output.json is defined and output.json.state != 'INITIALISING' - name: get import status - uri: + ansible.builtin.uri: url: "{{ atl_bitbucket_baseurl }}/rest/api/1.0/migration/imports/{{ output.json.id }}" user: admin password: "{{ atl_bitbucket_admin_password }}" @@ -50,7 +50,7 @@ delay: 10 - name: create lock file - file: + ansible.builtin.file: path: "{{ atl_product_home_shared }}/data/migration/import/lock.file" state: touch when: import_status.json.state == 'COMPLETED' diff --git a/roles/confluence_config/defaults/main.yml b/roles/confluence_config/defaults/main.yml index d755769..c3fc9c1 100644 --- a/roles/confluence_config/defaults/main.yml +++ b/roles/confluence_config/defaults/main.yml @@ -33,7 +33,7 @@ atl_catalina_opts_extra: >- -Dsynchrony.proxy.enabled=false -Dconfluence.cluster.node.name={{ atl_local_ipv4 }} -Dconfluence.cluster.hazelcast.max.no.heartbeat.seconds=60 - {% if atl_synchrony_service_url|string|length %}-Dsynchrony.service.url={{ atl_synchrony_service_url }}{% endif %} + {% if atl_synchrony_service_url | string | length %}-Dsynchrony.service.url={{ atl_synchrony_service_url }}{% endif %} atl_tomcat_port: "8080" atl_tomcat_mgmt_port: "8005" diff --git a/roles/confluence_config/molecule/aurora/molecule.yml b/roles/confluence_config/molecule/aurora/molecule.yml index 3ea826a..60cba25 100644 --- a/roles/confluence_config/molecule/aurora/molecule.yml +++ b/roles/confluence_config/molecule/aurora/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -14,6 +12,8 @@ platforms: - aws_node_local provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/confluence_config/molecule/default/converge.yml b/roles/confluence_config/molecule/default/converge.yml index 636e9aa..5a7ee00 100644 --- a/roles/confluence_config/molecule/default/converge.yml +++ b/roles/confluence_config/molecule/default/converge.yml @@ -16,7 +16,7 @@ atl_autologin_cookie_age: "COOKIEAGE" atl_local_ipv4: "1.1.1.1" atl_tomcat_scheme: "http" - atl_tomcat_contextpath: "foo" + atl_tomcat_contextpath: "/foo" atl_proxy_name: "localhost" atl_proxy_port: "80" atl_db_preferredtestquery: "select 1;" diff --git a/roles/confluence_config/molecule/default/molecule.yml b/roles/confluence_config/molecule/default/molecule.yml index 3ea826a..60cba25 100644 --- a/roles/confluence_config/molecule/default/molecule.yml +++ b/roles/confluence_config/molecule/default/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -14,6 +12,8 @@ platforms: - aws_node_local provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/confluence_config/molecule/default/tests/test_default.py b/roles/confluence_config/molecule/default/tests/test_default.py index c8fc29a..9bf11b3 100644 --- a/roles/confluence_config/molecule/default/tests/test_default.py +++ b/roles/confluence_config/molecule/default/tests/test_default.py @@ -38,7 +38,7 @@ def test_server_file(host): assert f.exists assert f.contains('Connector port="8080"') assert f.contains('Server port="8005"') - assert f.contains('postgresql database-type-standard com.atlassian.confluence.impl.hibernate.dialect.PostgreSQLDialect + ${localHome}/temp ${localHome}/temp ${confluenceHome}/attachments @@ -38,7 +39,7 @@ {{ atl_aws_stack_name }} 1 {% if atl_tomcat_contextpath is defined and atl_tomcat_contextpath != '' %} - /{{ atl_tomcat_contextpath }} + {{ atl_tomcat_contextpath }} {% endif %} diff --git a/roles/confluence_config/templates/server.xml.j2 b/roles/confluence_config/templates/server.xml.j2 index 55f9c25..d004cba 100644 --- a/roles/confluence_config/templates/server.xml.j2 +++ b/roles/confluence_config/templates/server.xml.j2 @@ -22,13 +22,10 @@ acceptCount="{{ atl_tomcat_acceptcount }}" secure="{{ atl_tomcat_secure }}" scheme="{{ atl_tomcat_scheme }}" - {% if atl_proxy_name is defined and atl_proxy_name != '' %} - proxyName="{{ atl_proxy_name }}" - {% endif %} - {% if atl_proxy_port is defined and atl_proxy_port != '' %} - proxyPort="{{ atl_proxy_port }}" - {% endif %} - + {% if atl_proxy_name is defined and atl_proxy_name != '' -%}proxyName="{{ atl_proxy_name }}" + {% endif -%} + {% if atl_proxy_port is defined and atl_proxy_port != '' -%}proxyPort="{{ atl_proxy_port }}" + {% endif -%} relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" bindOnInit="false" @@ -40,7 +37,6 @@ {% endif %} + {% if atl_apptunnel_port is defined and atl_apptunnel_port != '' %} + + {% endif %} ') - name: "Case: Cached version is higher or forced, ignore supplied" - set_fact: + ansible.builtin.set_fact: atl_download_version: "{{ atl_cached_version }}" when: cached.stat.exists and atl_product_normalised_version is version(atl_cached_normalised_version, '<=') and not force_version_update | bool - when: not version_is_latest + when: not version_is_latest | bool - name: "Fallthrough guard: Use cached or supplied version if nothing set" - set_fact: + ansible.builtin.set_fact: atl_download_version: "{{ atl_cached_version or atl_product_version }}" when: atl_download_version is not defined or - atl_download_version|length == 0 + atl_download_version | length == 0 - name: Override the supplied version with the calculated one - set_fact: + ansible.builtin.set_fact: atl_product_version: "{{ atl_download_version }}" ###################################################################### - name: Perform any additional per-edition version setup - include_tasks: "{{ atl_product_edition }}_extra_tasks.yml" - + ansible.builtin.include_tasks: "{{ atl_product_edition }}_extra_tasks.yml" - name: Create installation directories - file: + ansible.builtin.file: path: "{{ item }}" state: directory mode: 0750 @@ -136,7 +135,7 @@ # At this point atl_product_version should be set, cache if necessary. - name: Write override cached version when specified - template: + ansible.builtin.template: src: version.j2 dest: "{{ atl_product_version_cache }}" force: true @@ -148,25 +147,25 @@ # a directory is used as a lockfile (atomic operation) when moving binary. - name: Set assumptions to avoid race condition - set_fact: + ansible.builtin.set_fact: download_binary: true move_binary: false atl_product_download: "{{ atl_product_temp_download }}" # Check for pre-downloaded binary on shared_home and completed lock dir. - name: Check for completed lock directory - stat: + ansible.builtin.stat: path: "{{ atl_product_home_shared_completed_lock }}" register: completed_lock - name: Check for product installer in home_shared - stat: + ansible.builtin.stat: path: "{{ atl_product_home_shared_download }}" register: home_shared_download # If binary exists and lockdir exists use this binary instead - name: Check lock directory and binary exists on shared_home - set_fact: + ansible.builtin.set_fact: download_binary: false atl_product_download: "{{ atl_product_home_shared_download }}" when: @@ -180,7 +179,7 @@ # Fetch binary and copy to temp - name: Fetch binary - get_url: + ansible.builtin.get_url: url: "{{ atl_product_download_url }}" dest: "{{ atl_product_temp_download }}" mode: 0755 @@ -189,7 +188,7 @@ # If product installer was fetched make the lock directory - name: Create moving_lock. - file: + ansible.builtin.file: path: "{{ atl_product_home_shared_moving_lock }}" state: directory when: @@ -199,7 +198,7 @@ # Directory lock was created by this run? # If so, then set a fact intending to move binary - name: Move binary Scenario - lock created by this run - set_fact: + ansible.builtin.set_fact: move_binary: true when: - moving_lock_created is succeeded @@ -207,14 +206,14 @@ # Otherwise directory lock was either already created or # could not be created. Fall back is to continue and install from temp - when: download_binary + when: download_binary | bool # If the intention is to move binary to home_shared - name: Move product installer to home_shared block: - name: Copy temp installer to home_shared - copy: + ansible.builtin.copy: src: "{{ atl_product_temp_download }}" dest: "{{ atl_product_home_shared_download }}" remote_src: true @@ -224,14 +223,14 @@ register: copied - name: Create completed_lock once product installer downloaded and copied - file: + ansible.builtin.file: path: "{{ atl_product_home_shared_completed_lock }}" state: directory when: copied is succeeded register: completed_lock_created - name: Remove moving_lock to show that binary is completed - file: + ansible.builtin.file: path: "{{ atl_product_home_shared_moving_lock }}" state: absent when: @@ -240,33 +239,33 @@ register: moving_lock_removed - name: Delete old temp installer - file: + ansible.builtin.file: path: "{{ atl_product_temp_download }}" state: absent when: moving_lock_removed is succeeded register: temp_deleted - name: Set install to home_shared location - set_fact: + ansible.builtin.set_fact: atl_product_download: "{{ atl_product_home_shared_download }}" when: temp_deleted is succeeded - when: move_binary + when: move_binary | bool # At this point the binary is in {{ atl_product_download }} # (which is either on home_shared or temp) - name: Unpack the downloaded application depending on format - include_tasks: "unpack_{{ atl_download_format }}.yml" + ansible.builtin.include_tasks: "unpack_{{ atl_download_format }}.yml" - name: Symlink the installed version to current - file: + ansible.builtin.file: src: "{{ atl_product_installation_versioned }}" dest: "{{ atl_product_installation_current }}" state: link force: true - name: "Ensure catalina.out log dir exists after product is installed (except bitbucket)" - file: + ansible.builtin.file: path: "{{ atl_product_installation_current }}/logs" state: directory mode: 0750 @@ -276,5 +275,5 @@ changed_when: false # For Molecule idempotence check - name: Include if jsd is requested to be installed from OBR - include_tasks: "jira-servicedesk_as_obr.yml" - when: atl_install_jsd_as_obr + ansible.builtin.include_tasks: "jira-servicedesk_as_obr.yml" + when: atl_install_jsd_as_obr | bool diff --git a/roles/product_install/tasks/product_version_latest.yml b/roles/product_install/tasks/product_version_latest.yml index 604e816..03ac7cf 100644 --- a/roles/product_install/tasks/product_version_latest.yml +++ b/roles/product_install/tasks/product_version_latest.yml @@ -5,9 +5,9 @@ # product that supports the standard marketplace API. - name: Fetch the latest version from URL - set_fact: + ansible.builtin.set_fact: atl_product_version_json: "{{ lookup('url', '{{ atl_product_latest_version_url }}') }}" - name: Set the local var to retrieved version - set_fact: + ansible.builtin.set_fact: atl_latest_version: "{{ atl_product_version_json._embedded.versions[0].name }}" diff --git a/roles/product_install/tasks/unpack_installer.yml b/roles/product_install/tasks/unpack_installer.yml index f340463..5ecca1e 100644 --- a/roles/product_install/tasks/unpack_installer.yml +++ b/roles/product_install/tasks/unpack_installer.yml @@ -1,7 +1,7 @@ --- - name: Create installer varfile - template: + ansible.builtin.template: src: "{{ atl_product_family }}.varfile.j2" dest: "{{ atl_product_varfile }}" mode: 0755 @@ -13,7 +13,7 @@ # The variable {{ atl_product_download }} will be on temp for first nodes and shared_home for # subsequent nodes. - name: Run the installer - command: /bin/sh "{{ atl_product_download }}" -q -varfile "{{ atl_product_varfile }}" + ansible.builtin.command: /bin/sh "{{ atl_product_download }}" -q -varfile "{{ atl_product_varfile }}" args: creates: "{{ atl_product_installation_versioned }}/.install4j/" become: true diff --git a/roles/product_install/tasks/unpack_tarball.yml b/roles/product_install/tasks/unpack_tarball.yml index 196928f..2c5d46d 100644 --- a/roles/product_install/tasks/unpack_tarball.yml +++ b/roles/product_install/tasks/unpack_tarball.yml @@ -1,7 +1,7 @@ --- - name: Unpack the product packages - unarchive: + ansible.builtin.unarchive: remote_src: true src: "{{ atl_product_download }}" dest: "{{ atl_product_installation_versioned }}" diff --git a/roles/product_startup/defaults/main.yml b/roles/product_startup/defaults/main.yml index da7824c..7b3f329 100644 --- a/roles/product_startup/defaults/main.yml +++ b/roles/product_startup/defaults/main.yml @@ -24,7 +24,7 @@ atl_stop_exec_path: "{{ atl_product_installation_current }}/{{ atl_stop_script_m atl_systemd_service_dir_map: amazon: "/usr/lib/systemd/system" ubuntu: "/lib/systemd/system" -atl_systemd_service_dir: "{{ atl_systemd_service_dir_map[ansible_distribution|lower] }}" +atl_systemd_service_dir: "{{ atl_systemd_service_dir_map[ansible_distribution | lower] }}" atl_systemd_service_name: "{{ atl_product_edition }}.service" diff --git a/roles/product_startup/handlers/main.yml b/roles/product_startup/handlers/main.yml index 57275c9..6aad4f5 100644 --- a/roles/product_startup/handlers/main.yml +++ b/roles/product_startup/handlers/main.yml @@ -1,19 +1,19 @@ --- - name: Restart Product - service: + ansible.builtin.service: name: "{{ atl_systemd_service_name }}" state: restarted when: - - atl_startup_restart + - atl_startup_restart | bool - molecule_yml is not defined no_log: true - name: Enable Product - service: + ansible.builtin.service: name: "{{ atl_systemd_service_name }}" enabled: true when: - - atl_startup_enable + - atl_startup_enable | bool - molecule_yml is not defined no_log: true diff --git a/roles/product_startup/molecule/bitbucket/converge.yml b/roles/product_startup/molecule/bitbucket/converge.yml index b0b462a..7209cc0 100644 --- a/roles/product_startup/molecule/bitbucket/converge.yml +++ b/roles/product_startup/molecule/bitbucket/converge.yml @@ -27,7 +27,7 @@ pre_tasks: - name: Create systemd dir if necessary - file: + ansible.builtin.file: path: "{{ item }}" state: directory with_items: diff --git a/roles/product_startup/molecule/bitbucket/molecule.yml b/roles/product_startup/molecule/bitbucket/molecule.yml index 400e984..52878c5 100644 --- a/roles/product_startup/molecule/bitbucket/molecule.yml +++ b/roles/product_startup/molecule/bitbucket/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -18,6 +16,8 @@ platforms: - nofile:262144:262144 provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/product_startup/molecule/default/converge.yml b/roles/product_startup/molecule/default/converge.yml index 9a232fc..8b5d53f 100644 --- a/roles/product_startup/molecule/default/converge.yml +++ b/roles/product_startup/molecule/default/converge.yml @@ -10,7 +10,7 @@ pre_tasks: - name: Create systemd dir if necessary - file: + ansible.builtin.file: path: "{{ item }}" state: directory with_items: @@ -21,17 +21,17 @@ - role: product_startup post_tasks: - - include_vars: ../../defaults/main.yml + - ansible.builtin.include_vars: ../../defaults/main.yml # workaround Molecule idempotence check # normal pattern of setting changed_when allows file to be written twice, which takes extra time - name: Check if vars have already been dumped - stat: + ansible.builtin.stat: path: "{{ ansible_vars_dump_location }}" register: ansible_vars_stat_result - name: Dump vars to file for inspection - copy: + ansible.builtin.copy: content: | {{ vars | to_nice_yaml }} dest: "{{ ansible_vars_dump_location }}" diff --git a/roles/product_startup/molecule/default/molecule.yml b/roles/product_startup/molecule/default/molecule.yml index 400e984..52878c5 100644 --- a/roles/product_startup/molecule/default/molecule.yml +++ b/roles/product_startup/molecule/default/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -18,6 +16,8 @@ platforms: - nofile:262144:262144 provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/product_startup/molecule/startup_restart_false/converge.yml b/roles/product_startup/molecule/startup_restart_false/converge.yml index 1943cb3..70f7941 100644 --- a/roles/product_startup/molecule/startup_restart_false/converge.yml +++ b/roles/product_startup/molecule/startup_restart_false/converge.yml @@ -10,17 +10,17 @@ ansible_vars_dump_location: "/tmp/ansible-vars.yml" tasks: - - include_vars: ../../defaults/main.yml + - ansible.builtin.include_vars: ../../defaults/main.yml # workaround Molecule idempotence check # normal pattern of setting changed_when allows file to be written twice, which takes extra time - name: Check if vars have already been dumped - stat: + ansible.builtin.stat: path: "{{ ansible_vars_dump_location }}" register: ansible_vars_stat_result - name: Dump vars to file for inspection - copy: + ansible.builtin.copy: content: | {{ vars | to_nice_yaml }} dest: "{{ ansible_vars_dump_location }}" diff --git a/roles/product_startup/molecule/startup_restart_false/molecule.yml b/roles/product_startup/molecule/startup_restart_false/molecule.yml index 85b7cb3..d2dfab7 100644 --- a/roles/product_startup/molecule/startup_restart_false/molecule.yml +++ b/roles/product_startup/molecule/startup_restart_false/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -19,6 +17,7 @@ platforms: provisioner: name: ansible env: + ANSIBLE_COLLECTIONS_PATH: "../../" ATL_STARTUP_RESTART: "false" options: skip-tags: runtime_pkg diff --git a/roles/product_startup/molecule/synchrony/converge.yml b/roles/product_startup/molecule/synchrony/converge.yml index b4fa14b..1418f0e 100644 --- a/roles/product_startup/molecule/synchrony/converge.yml +++ b/roles/product_startup/molecule/synchrony/converge.yml @@ -19,7 +19,7 @@ pre_tasks: - name: Create systemd dir if necessary - file: + ansible.builtin.file: path: "{{ item }}" state: directory with_items: diff --git a/roles/product_startup/molecule/synchrony/molecule.yml b/roles/product_startup/molecule/synchrony/molecule.yml index 400e984..52878c5 100644 --- a/roles/product_startup/molecule/synchrony/molecule.yml +++ b/roles/product_startup/molecule/synchrony/molecule.yml @@ -1,6 +1,4 @@ --- -dependency: - name: galaxy driver: name: docker platforms: @@ -18,6 +16,8 @@ platforms: - nofile:262144:262144 provisioner: name: ansible + env: + ANSIBLE_COLLECTIONS_PATH: "../../" options: skip-tags: runtime_pkg inventory: diff --git a/roles/product_startup/tasks/main.yml b/roles/product_startup/tasks/main.yml index 99a40e4..e5120ab 100644 --- a/roles/product_startup/tasks/main.yml +++ b/roles/product_startup/tasks/main.yml @@ -1,7 +1,7 @@ --- - name: "Install systemd service file" - template: + ansible.builtin.template: src: "product.service.j2" dest: "{{ atl_systemd_service_dir }}/{{ atl_systemd_service_name }}" owner: root diff --git a/roles/synchrony_config/tasks/main.yml b/roles/synchrony_config/tasks/main.yml index f3cf3f2..e9b8db0 100644 --- a/roles/synchrony_config/tasks/main.yml +++ b/roles/synchrony_config/tasks/main.yml @@ -1,14 +1,14 @@ --- - name: Install the startup wrapper script - copy: + ansible.builtin.copy: src: start-synchrony dest: "{{ atl_product_installation_current }}/bin/start-synchrony" group: "{{ atl_product_user }}" mode: "0750" - name: Install the Synchrony environment settings - template: + ansible.builtin.template: src: "atl.synchrony.j2" dest: "/etc/atl.synchrony" group: "{{ atl_product_user }}"