Install utilities:

[kaau@tcacaueslapp003 ~]$ hostname -f
tcacaueslapp003.devhcloud.bmogc.net

[kaau@tcacaueslapp003 ~]$ sudo dnf install --assumeyes git python3-pip

[kaau@tcacaueslapp003 ~]$ ls -l ${HOME}/gcm-linux_amd64.2.6.1.tar.gz
-rw-------. 1 kaau kaau 37597497 Aug  6 13:40 /home/kaau/gcm-linux_amd64.2.6.1.tar.gz

[kaau@tcacaueslapp003 ~]$ tar --directory /tmp -zxvf gcm-linux_amd64.2.6.1.tar.gz
NOTICE
git-credential-manager                                                                                       ---only need this
libHarfBuzzSharp.so
libSkiaSharp.so

[kaau@tcacaueslapp003 ~]$ sudo mv /tmp/git-credential-manager /usr/local/bin/
[kaau@tcacaueslapp003 ~]$ ls -l /usr/local/bin/git-credential-manager
-rwx------. 1 kaau kaau 76240462 Oct 30  2024 /usr/local/bin/git-credential-manager
[kaau@tcacaueslapp003 ~]$ sudo chown root:root /usr/local/bin/git-credential-manager
[kaau@tcacaueslapp003 ~]$ sudo chmod 755 /usr/local/bin/git-credential-manager
[kaau@tcacaueslapp003 ~]$ ls -l /usr/local/bin/git-credential-manager
-rwxr-xr-x. 1 root root 76240462 Oct 30  2024 /usr/local/bin/git-credential-manager

pip config:

[kaau@tcacaueslapp003 ~]$ pip config set global.index-url \
                          [[yellow:https://kianming.aau@bmo.com:cmVmdGtuOjAxOjE3ODgxMDU1NjU6Zk1aakdVQkk2UGs1YkNXbWFGNThwRDljakcw@bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/simple]]
Writing to /home/kaau/.config/pip/pip.conf

[kaau@tcacaueslapp003 ~]$ ls -l /home/kaau/.config/pip/pip.conf
-rw-------. 1 kaau kaau 180 Aug  6 12:56 /home/kaau/.config/pip/pip.conf
[kaau@tcacaueslapp003 ~]$ cat /home/kaau/.config/pip/pip.conf
[[blue:[global]]]
[[blue:index-url = https://kianming.aau@bmo.com:cmVmdGtuOjAxOjE3ODgxMDU1NjU6Zk1aakdVQkk2UGs1YkNXbWFGNThwRDljakcw@bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/simple]]

Ansible venv:

[kaau@tcacaueslapp003 ~]$ python3 -m venv ${HOME}/venv
[kaau@tcacaueslapp003 ~]$ ls -ld ${HOME}/venv
drwx------. 5 kaau kaau 74 Aug  6 12:38 /home/kaau/venv
[kaau@tcacaueslapp003 ~]$ ls -l ${HOME}/venv
total 4
drwx------. 2 kaau kaau 166 Aug  6 12:38 bin
drwx------. 2 kaau kaau   6 Aug  6 12:38 include
drwx------. 3 kaau kaau  23 Aug  6 12:38 lib
lrwxrwxrwx. 1 kaau kaau   3 Aug  6 12:38 lib64 -> lib
-rw-------. 1 kaau kaau  70 Aug  6 12:38 pyvenv.cfg
[kaau@tcacaueslapp003 ~]$ source ${HOME}/venv/bin/activate

#
# upgrade pip, setuptools and wheel:
#
(venv) [kaau@tcacaueslapp003 ~]$ python3 -m pip install --upgrade pip setuptools wheel
Looking in indexes: https://kianming.aau%40bmo.com:****@bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/simple
Requirement already satisfied: pip in ./venv/lib/python3.9/site-packages (21.3.1)
Collecting pip
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/de/f0/c81e05b613866b76d2d1066490adf1a3dbc4ee9d9c839961c3fc8a6997af/
  pip-26.0.1-py3-none-any.whl (1.8 MB)
     |████████████████████████████████| 1.8 MB 6.0 MB/s
Requirement already satisfied: setuptools in ./venv/lib/python3.9/site-packages (53.0.0)
Collecting setuptools
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/
  setuptools-82.0.1-py3-none-any.whl (1.0 MB)
     |████████████████████████████████| 1.0 MB 30.3 MB/s
Collecting wheel
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/87/1b/9e33c09813d65e248f7f773119148a612516a4bea93e9c6f545f78455b7c/
  wheel-0.47.0-py3-none-any.whl (32 kB)
Collecting packaging>=24.0
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/
  packaging-26.2-py3-none-any.whl (100 kB)
     |████████████████████████████████| 100 kB 11.1 MB/s
Installing collected packages: packaging, wheel, setuptools, pip
  Attempting uninstall: setuptools
    Found existing installation: setuptools 53.0.0
    Uninstalling setuptools-53.0.0:
      Successfully uninstalled setuptools-53.0.0
  Attempting uninstall: pip
    Found existing installation: pip 21.3.1
    Uninstalling pip-21.3.1:
      Successfully uninstalled pip-21.3.1
Successfully installed packaging-26.2 pip-26.0.1 setuptools-82.0.1 wheel-0.47.0

(venv) [kaau@tcacaueslapp003 ~]$ pip install ansible-core==2.15.* jsonschema
Looking in indexes: https://kianming.aau%40bmo.com:****@bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/simple
Collecting ansible-core==2.15.*
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/9b/2c/19ac50eca9d32a9524329f023a459ebb6ca5a546380eb15af384306c170a/
  ansible_core-2.15.13-py3-none-any.whl (2.3 MB)
     [[green:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB]] [[red:24.3 MB/s]]  [[yellow:0:00:00]]
Collecting jsonschema
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/
  jsonschema-4.25.1-py3-none-any.whl (90 kB)
Collecting jinja2>=3.0.0 (from ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/
  jinja2-3.1.6-py3-none-any.whl (134 kB)
Collecting PyYAML>=5.1 (from ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/73/b9/793686b2d54b531203c160ef12bec60228a0109c79bae6c1277961026770/
  pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (750 kB)
     [[green:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 750.8/750.8 kB]] [[red:13.3 MB/s]]  [[yellow:0:00:00]]
Collecting cryptography (from ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/
  cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl (4.8 MB)
     [[green:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8/4.8 MB]] [[red:47.1 MB/s]]  [[yellow:0:00:00]]
Requirement already satisfied: packaging in ./venv/lib/python3.9/site-packages (from ansible-core==2.15.*) (26.2)
Collecting resolvelib<1.1.0,>=0.5.3 (from ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/d2/fc/e9ccf0521607bcd244aa0b3fbd574f71b65e9ce6a112c83af988bbbe2e23/
  resolvelib-1.0.1-py2.py3-none-any.whl (17 kB)
Collecting importlib-resources<5.1,>=5.0 (from ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/46/10/7cc167fe072037c3cd2a15a92bb963b86f2bab8ac0995fab95fb7a152b80/
  importlib_resources-5.0.7-py3-none-any.whl (24 kB)
Collecting attrs>=22.2.0 (from jsonschema)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/
  attrs-26.1.0-py3-none-any.whl (67 kB)
Collecting jsonschema-specifications>=2023.03.6 (from jsonschema)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/
  jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB)
Collecting referencing>=0.28.4 (from jsonschema)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/
  referencing-0.36.2-py3-none-any.whl (26 kB)
Collecting rpds-py>=0.7.1 (from jsonschema)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/74/e5/5903f92e41e293b07707d5bf00ef39a0eb2af7190aff4beaf581a6591510/
  rpds_py-0.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384 kB)
Collecting MarkupSafe>=2.0 (from jinja2>=3.0.0->ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/6f/bc/4dc914ead3fe6ddaef035341fee0fc956949bbd27335b611829292b89ee2/
  markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (20 kB)
Collecting typing-extensions>=4.4.0 (from referencing>=0.28.4->jsonschema)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/
  typing_extensions-4.16.0-py3-none-any.whl (45 kB)
Collecting cffi>=2.0.0 (from cryptography->ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/1f/74/cc4096ce66f5939042ae094e2e96f53426a979864aa1f96a621ad128be27/
  cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (216 kB)
Collecting pycparser (from cffi>=2.0.0->cryptography->ansible-core==2.15.*)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/
  pycparser-2.23-py3-none-any.whl (118 kB)
Installing collected packages: resolvelib, typing-extensions, rpds-py, PyYAML, pycparser, MarkupSafe, importlib-resources, attrs, referencing, jinja2, cffi, 
jsonschema-specifications, cryptography, jsonschema, ansible-core
Successfully installed MarkupSafe-3.0.3 PyYAML-6.0.3 ansible-core-2.15.13 attrs-26.1.0 cffi-2.0.0 cryptography-50.0.0 importlib-resources-5.0.7 jinja2-3.1.6 
jsonschema-4.25.1 jsonschema-specifications-2025.9.1 pycparser-2.23 referencing-0.36.2 resolvelib-1.0.1 rpds-py-0.27.1 typing-extensions-4.16.0

(venv) [kaau@tcacaueslapp003 ~]$ pip install ansible-lint
Looking in indexes: https://kianming.aau%40bmo.com:****@bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/simple
Collecting ansible-lint
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/3b/e5/c56cac4ad4d7d9907c1be45b8739948f006bd6065cd7b71c88889f69a9d8/
  ansible_lint-6.22.2-py3-none-any.whl (297 kB)
Requirement already satisfied: ansible-core>=2.12.0 in ./venv/lib/python3.9/site-packages (from ansible-lint) (2.15.13)
Collecting ansible-compat>=4.1.11 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/fc/c5/3419d575ebc4b3bf0cadb4a78715476077ce221626a1cf7539fd6faf41f9/
  ansible_compat-24.10.0-py3-none-any.whl (24 kB)
Collecting black>=22.8.0 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/ca/6f/1a3859a7da205f3d50cf3a8bec6bdc551a91c33ae77a045bb24c1f46ab54/
  black-25.11.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.7 MB)
     [[green:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB]] [[red:24.0 MB/s]]  [[yellow:0:00:00]]
Collecting filelock>=3.3.0 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/
  filelock-3.19.1-py3-none-any.whl (15 kB)
Requirement already satisfied: jsonschema>=4.10.0 in ./venv/lib/python3.9/site-packages (from ansible-lint) (4.25.1)
Requirement already satisfied: packaging>=21.3 in ./venv/lib/python3.9/site-packages (from ansible-lint) (26.2)
Collecting pathspec>=0.10.3 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/
  pathspec-1.1.1-py3-none-any.whl (57 kB)
Requirement already satisfied: pyyaml>=5.4.1 in ./venv/lib/python3.9/site-packages (from ansible-lint) (6.0.3)
Collecting rich>=12.0.0 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/
  rich-15.0.0-py3-none-any.whl (310 kB)
Collecting ruamel.yaml>=0.18.5 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/
  ruamel_yaml-0.19.1-py3-none-any.whl (118 kB)
Collecting subprocess-tee>=0.4.1 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/4d/ab/e3a3be062cd544b2803760ff707dee38f0b1cb5685b2446de0ec19be28d9/
  subprocess_tee-0.4.2-py3-none-any.whl (5.2 kB)
Collecting yamllint>=1.30.0 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/dd/b9/be7a4cfdf47e03785f657f94daea8123e838d817be76c684298305bd789f/
  yamllint-1.37.1-py3-none-any.whl (68 kB)
Collecting wcmatch>=8.1.2 (from ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/eb/d8/0d1d2e9d3fabcf5d6840362adcf05f8cf3cd06a73358140c3a97189238ae/
  wcmatch-10.1-py3-none-any.whl (39 kB)
Requirement already satisfied: typing-extensions>=4.5.0 in ./venv/lib/python3.9/site-packages (from ansible-compat>=4.1.11->ansible-lint) (4.16.0)
Requirement already satisfied: jinja2>=3.0.0 in ./venv/lib/python3.9/site-packages (from ansible-core>=2.12.0->ansible-lint) (3.1.6)
Requirement already satisfied: cryptography in ./venv/lib/python3.9/site-packages (from ansible-core>=2.12.0->ansible-lint) (50.0.0)
Requirement already satisfied: resolvelib<1.1.0,>=0.5.3 in ./venv/lib/python3.9/site-packages (from ansible-core>=2.12.0->ansible-lint) (1.0.1)
Requirement already satisfied: importlib-resources<5.1,>=5.0 in ./venv/lib/python3.9/site-packages (from ansible-core>=2.12.0->ansible-lint) (5.0.7)
Collecting click>=8.0.0 (from black>=22.8.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/
  click-8.1.8-py3-none-any.whl (98 kB)
Collecting mypy-extensions>=0.4.3 (from black>=22.8.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/
  mypy_extensions-1.1.0-py3-none-any.whl (5.0 kB)
Collecting platformdirs>=2 (from black>=22.8.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/
  platformdirs-4.4.0-py3-none-any.whl (18 kB)
Collecting pytokens>=0.3.0 (from black>=22.8.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/a5/1c/fd09976a7e04960dabc07ab0e0072c7813d566ec67d5490a4c600683c158/
  pytokens-0.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (259 kB)
Collecting tomli>=1.1.0 (from black>=22.8.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/
  tomli-2.4.1-py3-none-any.whl (14 kB)
Requirement already satisfied: MarkupSafe>=2.0 in ./venv/lib/python3.9/site-packages (from jinja2>=3.0.0->ansible-core>=2.12.0->ansible-lint) (3.0.3)
Requirement already satisfied: attrs>=22.2.0 in ./venv/lib/python3.9/site-packages (from jsonschema>=4.10.0->ansible-lint) (26.1.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in ./venv/lib/python3.9/site-packages (from jsonschema>=4.10.0->ansible-lint) (2025.9.1)
Requirement already satisfied: referencing>=0.28.4 in ./venv/lib/python3.9/site-packages (from jsonschema>=4.10.0->ansible-lint) (0.36.2)
Requirement already satisfied: rpds-py>=0.7.1 in ./venv/lib/python3.9/site-packages (from jsonschema>=4.10.0->ansible-lint) (0.27.1)
Collecting markdown-it-py>=2.2.0 (from rich>=12.0.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/
  markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich>=12.0.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/
  pygments-2.20.0-py3-none-any.whl (1.2 MB)
     [[green:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB]] [[red:24.6 MB/s]]  [[red:0:00:00]]
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich>=12.0.0->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/
  mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Collecting bracex>=2.1.1 (from wcmatch>=8.1.2->ansible-lint)
  Downloading https://bmostaging.pe.jfrog.io/artifactory/api/pypi/pypi-virtual/packages/packages/9d/2a/9186535ce58db529927f6cf5990a849aa9e052eea3e2cfefe20b9e1802da/
  bracex-2.6-py3-none-any.whl (11 kB)
Requirement already satisfied: cffi>=2.0.0 in ./venv/lib/python3.9/site-packages (from cryptography->ansible-core>=2.12.0->ansible-lint) (2.0.0)
Requirement already satisfied: pycparser in ./venv/lib/python3.9/site-packages (from cffi>=2.0.0->cryptography->ansible-core>=2.12.0->ansible-lint) (2.23)
Installing collected packages: tomli, subprocess-tee, ruamel.yaml, pytokens, pygments, platformdirs, pathspec, mypy-extensions, mdurl, filelock, click, 
bracex, yamllint, wcmatch, markdown-it-py, black, rich, ansible-compat, ansible-lint
Successfully installed ansible-compat-24.10.0 ansible-lint-6.22.2 black-25.11.0 bracex-2.6 click-8.1.8 filelock-3.19.1 markdown-it-py-3.0.0 mdurl-0.1.2 
mypy-extensions-1.1.0 pathspec-1.1.1 platformdirs-4.4.0 pygments-2.20.0 pytokens-0.4.1 rich-15.0.0 ruamel.yaml-0.19.1 subprocess-tee-0.4.2 tomli-2.4.1 wcmatch-10.1 yamllint-1.37.1

(venv) [kaau@tcacaueslapp003 ~]$ which ansible-lint yamllint
~/venv/bin/ansible-lint
~/venv/bin/yamllint

(venv) [kaau@tcacaueslapp003 ~]$ deactivate

Git clone:

[kaau@tcacaueslapp003 ~]$ git config --global user.name "Kian Ming Aau"
[kaau@tcacaueslapp003 ~]$ git config --global user.email "kianming.aau@bmo.com"
[kaau@tcacaueslapp003 ~]$ git config --global http.sslVerify false
[kaau@tcacaueslapp003 ~]$ git config --global http.proxy "http://nsawsqsse.bmogc.net:8080"
[kaau@tcacaueslapp003 ~]$ git config --global --unset-all credential.helper
[kaau@tcacaueslapp003 ~]$ git config --global --add credential.helper "/usr/local/bin/git-credential-manager"
[kaau@tcacaueslapp003 ~]$ git config --global credential.credentialStore cache
[kaau@tcacaueslapp003 ~]$ git config --global credential.cacheOptions "--timeout 7200"
[kaau@tcacaueslapp003 ~]$ git config --global credential.guiprompt false
[kaau@tcacaueslapp003 ~]$ git config --global credential.httpTimeout 120

[kaau@tcacaueslapp003 ~]$ cat ${HOME}/.gitconfig
[[blue:[user]]]
[[blue:        name = Kian Ming Aau]]
[[blue:        email = kianming.aau@bmo.com]]
[[blue:[http]]]
[[blue:        sslVerify = false]]
[[blue:        proxy = http://nsawsqsse.bmogc.net:8080]]
[[blue:[credential]]]
[[blue:        helper = /usr/local/bin/git-credential-manager]]
[[blue:        credentialStore = cache]]
[[blue:        cacheOptions = --timeout 7200]]
[[blue:        guiprompt = false]]
[[blue:        httpTimeout = 120]]

[kaau@tcacaueslapp003 ~]$ git clone https://github.com/BMO-Prod/NACBSRE_sre_cac_86039.git
Cloning into 'NACBSRE_sre_cac_86039'...
Select an authentication method for 'https://github.com/':
  1. Device code (default)
  2. Personal access token
option (enter for default): [[yellow:1]]
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more information.
To complete authentication please visit https://github.com/login/device and enter the following code:
AC40-603A
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more information.
remote: Enumerating objects: 15626, done.
remote: Counting objects: 100% (950/950), done.
remote: Compressing objects: 100% (457/457), done.
remote: Total 15626 (delta 673), reused 542 (delta 465), pack-reused 14676 (from 4)
Receiving objects: 100% (15626/15626), 5.12 MiB | 12.91 MiB/s, done.
Resolving deltas: 100% (8884/8884), done.

[kaau@tcacaueslapp003 ~]$ ls -ld ${HOME}/NACBSRE_sre_cac_86039
drwx------. 13 kaau kaau 4096 Aug  6 13:53 /home/kaau/NACBSRE_sre_cac_86039

[kaau@tcacaueslapp003 ~]$ git clone https://github.com/BMO-Prod/NACBSRE_sre_client_app_86039.git
Cloning into 'NACBSRE_sre_client_app_86039'...
remote: Enumerating objects: 2333, done.
remote: Counting objects: 100% (494/494), done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 2333 (delta 389), reused 329 (delta 295), pack-reused 1839 (from 2)
Receiving objects: 100% (2333/2333), 805.12 KiB | 10.73 MiB/s, done.
Resolving deltas: 100% (1233/1233), done.

[kaau@tcacaueslapp003 ~]$ ls -ld ${HOME}/NACBSRE_sre_client_app_86039
drwx------. 14 kaau kaau 4096 Aug  6 13:54 /home/kaau/NACBSRE_sre_client_app_86039

Run ansible-lint in NACBSRE_sre_cac_86039:

[kaau@tcacaueslapp003 ~]$ source ${HOME}/venv/bin/activate

(venv) [kaau@tcacaueslapp003 ~]$ cd ${HOME}/NACBSRE_sre_cac_86039/nacbsre/cac_collection
(venv) [kaau@tcacaueslapp003 cac_collection]$ ls -l
-rw-------.  1 kaau kaau  3128 Aug  6 13:53 CANONICAL_DOCUMENTATION_MAP.md
-rw-------.  1 kaau kaau  3507 Aug  6 13:53 galaxy.yml
drwx------.  2 kaau kaau    25 Aug  6 13:53 meta
drwx------.  3 kaau kaau    22 Aug  6 13:53 playbooks
drwx------.  5 kaau kaau    71 Aug  6 13:53 plugins
-rw-------.  1 kaau kaau 15286 Aug  6 13:53 README.md
-rw-------.  1 kaau kaau  5686 Aug  6 13:53 README_package.md
drwx------. 19 kaau kaau  4096 Aug  6 13:53 roles                                                            ---this

(venv) [kaau@tcacaueslapp003 cac_collection]$ ansible-lint -vv roles/sre_driftdetector
or
(venv) [kaau@tcacaueslapp003 cac_collection]$ ansible-lint -v roles/sre_driftdetector
INFO     Identified /home/kaau/NACBSRE_sre_cac_86039 as project root due config file [[yellow:/home/kaau/NACBSRE_sre_cac_86039/.ansible-lint]].
INFO     Set ANSIBLE_LIBRARY=/home/kaau/.cache/ansible-compat/8a818f/modules:plugins/modules:/home/kaau/.ansible/plugins/modules:/usr/share/ansible/plugins/modules
INFO     Set ANSIBLE_ROLES_PATH=/home/kaau/.cache/ansible-compat/8a818f/roles:roles:/home/kaau/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
INFO     Running from /home/kaau/NACBSRE_sre_cac_86039/nacbsre/cac_collection : ansible-galaxy collection install -vvv --force /home/kaau/NACBSRE_sre_cac_86039/nacbsre/cac_collection
INFO     Set ANSIBLE_LIBRARY=/home/kaau/.cache/ansible-compat/8a818f/modules:plugins/modules:/home/kaau/.ansible/plugins/modules:/usr/share/ansible/plugins/modules
INFO     Set ANSIBLE_ROLES_PATH=/home/kaau/.cache/ansible-compat/8a818f/roles:roles:/home/kaau/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/install/verify.yml (2.09s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/drift_lifecycle/cleanup.yml (2.27s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/drift_lifecycle/converge.yml (2.13s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/drift_baseline/converge.yml (2.29s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/drift_lifecycle/verify.yml (2.36s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/install/converge.yml (2.19s)
INFO     Executing syntax check on role roles/sre_driftdetector (2.27s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/drift_baseline/verify.yml (2.45s)
INFO     Executing syntax check on playbook roles/sre_driftdetector/molecule/drift_baseline/cleanup.yml (1.26s)
WARNING  Unable to load module ansible.utils.validate at roles/sre_data_validation/tasks/config_data_validate.yml:2 for options validation
WARNING  Unable to resolve FQCN for module ansible.utils.validate
WARNING  Unable to load module community.general.archive at roles/sre_driftdetector/tasks/update_managed_file_list.yml:14 for options validation
WARNING  Unable to resolve FQCN for module community.general.archive
WARNING  Listing 22 violation(s) that are fatal
[[yellow:jinja[spacing]: Jinja2 spacing could be improved: {{ lookup('file',  sre_data_validation_config_data.value ) | from_json }} ->]] 
[[yellow:{{ lookup('file', sre_data_validation_config_data.value) | from_json }}]] (warning)
[[blue:roles/sre_data_validation/tasks/config_data_validate.yml]]:4 Jinja2 template rewrite recommendation: `{{ lookup('file', sre_data_validation_config_data.value) | 
from_json }}`.
[[red:key-order[task]: You can improve the task key order to: name, when, delegate_to, block]]
[[blue:roles/sre_data_validation/tasks/main.yml]]:2 Task/Handler: Run config data validation
[[yellow:jinja[spacing]: Jinja2 spacing could be improved: {{ sre_data_validation_validate_results_all | default({}) |]] 
[[yellow:combine( { item:hostvars[item].sre_data_validation_validate_results_per_host|default(omit) } ) }} -> {{ sre_data_validation_validate_results_all | default({}) |]] 
[[yellow:combine({item: hostvars[item].sre_data_validation_validate_results_per_host | default(omit)}) }}]] (warning)
[[blue:roles/sre_data_validation/tasks/main.yml]]:17 Jinja2 template rewrite recommendation: `{{ sre_data_validation_validate_results_all | default({}) | 
combine({item: hostvars[item].sre_data_validation_validate_results_per_host | default(omit)}) }}`.
[[red:no-free-form: Avoid using free-form when calling module actions. (ansible.builtin.debug)]]
[[blue:roles/sre_data_validation/tasks/main.yml]]:22 Task/Handler: Display invalid config data
[[red:yaml[line-length]: Line too long (176 > 160 characters)]]
[[blue:roles/sre_data_validation/tasks/main.yml]]:28
[[red:var-naming[no-role-prefix]: Variables names from within roles should use sre_driftdetector_ as a prefix. (vars: tower_job_id)]]
[[blue:roles/sre_driftdetector/defaults/main.yml]]:2
[[red:var-naming[no-role-prefix]: Variables names from within roles should use sre_driftdetector_ as a prefix. (vars: tower_user_name)]]
[[blue:roles/sre_driftdetector/defaults/main.yml]]:3
[[red:yaml[line-length]: Line too long (172 > 160 characters)]]
[[blue:roles/sre_driftdetector/defaults/main.yml]]:56
[[red:var-naming[no-role-prefix]: Variables names from within roles should use sre_driftdetector_ as a prefix. (vars: drift_state_audit_query_lookback_minutes)]]
[[blue:roles/sre_driftdetector/molecule/_shared/vars/all.yml]]:7
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/drift_baseline/cleanup.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/drift_baseline/converge.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/drift_baseline/verify.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/drift_lifecycle/cleanup.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[red:roles/sre_driftdetector/molecule/drift_lifecycle/converge.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/drift_lifecycle/verify.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/install/converge.yml]]:2
[[red:fqcn[keyword]: Avoid `collections` keyword by using FQCN for all plugins, modules, roles and playbooks.]]
[[blue:roles/sre_driftdetector/molecule/install/verify.yml]]:2
[[red:var-naming[no-role-prefix]: Variables names from within roles should use sre_pkg_deploy_ as a prefix. (vars: package)]]
[[blue:roles/sre_mq_build/tasks/qmgr_deploy_item.yml]]:35 Task/Handler: Deploy MQ queue managers
[[red:var-naming[no-role-prefix]: Variables names from within roles should use sre_service_operation_ as a prefix. (vars: operation)]]
[[blue:roles/sre_pkg_deploy/tasks/post_config_service_operation.yml]]:6 Task/Handler: Bring service to desired state
[[red:yaml[line-length]: Line too long (241 > 160 characters)]]
[[blue:roles/sre_service_operation/tasks/main.yml]]:15
[[yellow::401jinja[spacing]: Jinja2 spacing could be improved: current service state is: {% if sre_service_operation_status_result.stdout | ]]
[[yellow:regex_search(package.service.status.search_regex)%}up{% else %}down{% endif %} -> current service state is: {% if sre_service_operation_status_result.stdout |]]
[[yellow: regex_search(package.service.status.search_regex) %}up{% else %}down{% endif %} (warning)]]
[[blue:roles/sre_service_operation/tasks/status.yml]]:16 Jinja2 template rewrite recommendation: `current service state is: {% if sre_service_operation_status_result.stdout | 
regex_search(package.service.status.search_regex) %}up{% else %}down{% endif %}`.
[[red:yaml[line-length]: Line too long (162 > 160 characters)]]
[[blue:roles/sre_service_operation/tasks/stop.yml]]:51
Read documentation for instructions on how to ignore specific rule violations.
Rule Violation Summary
 count [[yellow:tag]]                        profile    rule associated tags]]
     [[red:1 key-order[task]            basic      formatting]]
     [[yellow:3 jinja[spacing]             basic      formatting (warning)]]
     [[red:1 no-free-form               basic      syntax, risk]]
     [[red:5 var-naming[no-role-prefix] basic      idiom]]
     [[red:4 yaml[line-length]          basic      formatting, yaml]]
     [[red:8 fqcn[keyword]              production formatting]]
[[red:Failed]]: [[blue:19]] [[red:failure(s)]], [[blue:3]] [[red:warning(s)]] on [[blue:105]] files. Last profile that met the validation criteria was [[green:'min']].

(venv) [kaau@tcacaueslapp003 cac_collection]$ deactivate