Installation d'AWX sous Debian (sans container :D )

Install AWX Debian

En parcourant les dépôts Salsa (l’instance Gitlab du projet Debian), je suis tombé sur un portage d’AWX (le projet upstream de RedHat Tower) sous Debian. Depuis le temps que je cherchais un version « non containerisée » tournant sous Debian (et pas sous CentOS comme le projet AWX RPM par exemple).

Et voilà qu’un dev Debian nommé Kapouer a exaucé mes voeux ! Je lui ai envoyé un petit message pour savoir s’il pourrait me mettre le pied à l’étrier pour que je puisse faire l’installation à la maison. Il a eu la gentillesse de passer sur le chan IRC #debian-france pour m’expliquer comment faire, et remettre en ligne le paquet #kivabien pour ne pas que j’aie à compiler ce dernier moi-même (je suis un gros noob dans l’utilisation d’outils comme sbuild). Et deux heures plus tard, tadam ! Mon instance AWX est installée.

Afin que d’autres puissent profiter du travail et des explications de Kapouer, voici un howto qui reprend les étapes de l’installation. Enjoy !

Qu’est qu’AWX ?

« Ansible Tower est une API, un service Web et une console Web conçue pour rendre Ansible plus facilement utilisable par les équipes informatiques. C’est une console centrale de gestion des tâches d’automatisation. Tower est un produit commercial pris en charge par Red Hat, Inc.
Il en existe une version gratuite, servant de version bêta pour sa grande sœur Tower, qui s’appelle AWX. Cette version est aussi utilisable par les entreprises, mais n’est pas garantie. »
Source : Wikipedia

Installation paquets

Nous installons les paquets nécessaires

sudo aptitude install postgresql nginx apt-transport-https gnupg2

Dépôt AWX

Nous importons la clé du dépôt

wget -qO - https://people.debian.org/~kapouer/apt/kapouer.asc  |  sudo apt-key add -

Nous ajoutons le dépôt AWX

echo "deb https://people.debian.org/~kapouer/apt/awx/ buster contrib" | sudo tee -a /etc/apt/sources.list.d/awx.list

À titre d’information, les dépendances d’AWX

apt depends awx
awx
  Dépend: libc6 (>= 2.28)
  Dépend: libcap2 (>= 1:2.10)
  Dépend: libgcc1 (>= 1:3.0)
  Dépend: libldap-2.4-2 (>= 2.4.11)
  Dépend: libpcre3
  Dépend: libpq5 (>= 10~~)
  Dépend: libpython3.7 (>= 3.7.0)
  Dépend: libssl1.1 (>= 1.1.0)
  Dépend: libstdc++6 (>= 4.1.1)
  Dépend: libxml2 (>= 2.7.4)
  Dépend: libxmlsec1 (>= 1.2.27)
  Dépend: libxmlsec1-openssl (>= 1.2.27)
  Dépend: libxslt1.1 (>= 1.1.25)
  Dépend: libyaml-0-2
  Dépend: zlib1g (>= 1:1.2.0)
  Dépend: adduser
  Dépend: git
  Dépend: swig
  Dépend: pwgen
  Dépend: python
  Dépend: redis
  Dépend: sudo
    sudo-ldap

Nous rafraîchissons le contenu des dépôts et installons AWX

sudo aptitude update && sudo aptitude install awx

Création base de données

Nous créons l’utilisateur et la base de données Postgresql

sudo -u postgres createuser -S awx
sudo -u postgres createdb -O awx awx

Nous copions les fichiers de base de données et d’ID cluster

sudo cp -v /etc/awx/conf.d/database.py.sample /etc/awx/conf.d/database.py
sudo cp -v /etc/awx/conf.d/cluster_id.py.sample /etc/awx/conf.d/cluster_id.py

Nous créons les schémas de la base de données

sudo -u awx awx-manage migrate

Si vous avez ce message d’erreur

ModuleNotFoundError: No module named 'distutils.dir_util'

Il faut installer python3-distutils

sudo aptitude install python3-distutils

L’opération de peuplement de la base a cette forme

Operations to perform:
  Apply all migrations: auth, conf, contenttypes, main, oauth2_provider, sessions, sites, social_django, sso, taggit
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying taggit.0001_initial... OK
  Applying taggit.0002_auto_20150616_2121... OK
  Applying auth.0001_initial... OK
  Applying main.0001_initial... OK
  Applying main.0002_squashed_v300_release... OK
  Applying main.0003_squashed_v300_v303_updates... OK
  Applying main.0004_squashed_v310_release... OK
  Applying conf.0001_initial... OK
  Applying conf.0002_v310_copy_tower_settings... OK
  Applying main.0005_squashed_v310_v313_updates... OK
  Applying main.0006_v320_release... OK
  Applying main.0007_v320_data_migrations... OK
  Applying main.0008_v320_drop_v1_credential_fields... OK
  Applying main.0009_v322_add_setting_field_for_activity_stream... OK
  Applying main.0010_v322_add_ovirt4_tower_inventory... OK
  Applying main.0011_v322_encrypt_survey_passwords... OK
  Applying main.0012_v322_update_cred_types... OK
  Applying main.0013_v330_multi_credential... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying conf.0003_v310_JSONField_changes... OK
  Applying conf.0004_v320_reencrypt... OK
  Applying conf.0005_v330_rename_two_session_settings... OK
  Applying conf.0006_v331_ldap_group_type... OK
  Applying conf.0007_v380_rename_more_settings... OK
  Applying sessions.0001_initial... OK
  Applying main.0014_v330_saved_launchtime_configs... OK
  Applying main.0015_v330_blank_start_args... OK
  Applying main.0016_v330_non_blank_workflow... OK
  Applying main.0017_v330_move_deprecated_stdout... OK
  Applying main.0018_v330_add_additional_stdout_events... OK
  Applying main.0019_v330_custom_virtualenv... OK
  Applying main.0020_v330_instancegroup_policies... OK
  Applying main.0021_v330_declare_new_rbac_roles... OK
  Applying main.0022_v330_create_new_rbac_roles... OK
  Applying main.0023_v330_inventory_multicred... OK
  Applying main.0024_v330_create_user_session_membership... OK
  Applying main.0025_v330_add_oauth_activity_stream_registrar... OK
  Applying oauth2_provider.0001_initial... OK
  Applying main.0026_v330_delete_authtoken... OK
  Applying main.0027_v330_emitted_events... OK
  Applying main.0028_v330_add_tower_verify... OK
  Applying main.0030_v330_modify_application... OK
  Applying main.0031_v330_encrypt_oauth2_secret... OK
  Applying main.0032_v330_polymorphic_delete... OK
  Applying main.0033_v330_oauth_help_text... OK
  Applying main.0034_v330_delete_user_role... OK
  Applying main.0035_v330_more_oauth2_help_text... OK
  Applying main.0036_v330_credtype_remove_become_methods... OK
  Applying main.0037_v330_remove_legacy_fact_cleanup... OK
  Applying main.0038_v330_add_deleted_activitystream_actor... OK
  Applying main.0039_v330_custom_venv_help_text... OK
  Applying main.0040_v330_unifiedjob_controller_node... OK
  Applying main.0041_v330_update_oauth_refreshtoken... OK
  Applying main.0042_v330_org_member_role_deparent... OK
  Applying main.0043_v330_oauth2accesstoken_modified... OK
  Applying main.0044_v330_add_inventory_update_inventory... OK
  Applying main.0045_v330_instance_managed_by_policy... OK
  Applying main.0046_v330_remove_client_credentials_grant... OK
  Applying main.0047_v330_activitystream_instance... OK
  Applying main.0048_v330_django_created_modified_by_model_name... OK
  Applying main.0049_v330_validate_instance_capacity_adjustment... OK
  Applying main.0050_v340_drop_celery_tables... OK
  Applying main.0051_v340_job_slicing... OK
  Applying main.0052_v340_remove_project_scm_delete_on_next_update... OK
  Applying main.0053_v340_workflow_inventory... OK
  Applying main.0054_v340_workflow_convergence... OK
  Applying main.0055_v340_add_grafana_notification... OK
  Applying main.0056_v350_custom_venv_history... OK
  Applying main.0057_v350_remove_become_method_type... OK
  Applying main.0058_v350_remove_limit_limit... OK
  Applying main.0059_v350_remove_adhoc_limit... OK
  Applying main.0060_v350_update_schedule_uniqueness_constraint... OK
  Applying main.0061_v350_track_native_credentialtype_source... OK
  Applying main.0062_v350_new_playbook_stats... OK
  Applying main.0063_v350_org_host_limits... OK
  Applying main.0064_v350_analytics_state... OK
  Applying main.0065_v350_index_job_status... OK
  Applying main.0066_v350_inventorysource_custom_virtualenv... OK
  Applying main.0067_v350_credential_plugins... OK
  Applying main.0068_v350_index_event_created... OK
  Applying main.0069_v350_generate_unique_install_uuid... OK
  Applying main.0070_v350_gce_instance_id... OK
  Applying main.0071_v350_remove_system_tracking... OK
  Applying main.0072_v350_deprecate_fields... OK
  Applying main.0073_v360_create_instance_group_m2m... OK
  Applying main.0074_v360_migrate_instance_group_relations... OK
  Applying main.0075_v360_remove_old_instance_group_relations... OK
  Applying main.0076_v360_add_new_instance_group_relations... OK
  Applying main.0077_v360_add_default_orderings... OK
  Applying main.0078_v360_clear_sessions_tokens_jt... OK
  Applying main.0079_v360_rm_implicit_oauth2_apps... OK
  Applying main.0080_v360_replace_job_origin... OK
  Applying main.0081_v360_notify_on_start... OK
  Applying main.0082_v360_webhook_http_method... OK
  Applying main.0083_v360_job_branch_override... OK
  Applying main.0084_v360_token_description... OK
  Applying main.0085_v360_add_notificationtemplate_messages... OK
  Applying main.0086_v360_workflow_approval... OK
  Applying main.0087_v360_update_credential_injector_help_text... OK
  Applying main.0088_v360_dashboard_optimizations... OK
  Applying main.0089_v360_new_job_event_types... OK
  Applying main.0090_v360_WFJT_prompts... OK
  Applying main.0091_v360_approval_node_notifications... OK
  Applying main.0092_v360_webhook_mixin... OK
  Applying main.0093_v360_personal_access_tokens... OK
  Applying main.0094_v360_webhook_mixin2... OK
  Applying main.0095_v360_increase_instance_version_length... OK
  Applying main.0096_v360_container_groups... OK
  Applying main.0097_v360_workflowapproval_approved_or_denied_by... OK
  Applying main.0098_v360_rename_cyberark_aim_credential_type... OK
  Applying main.0099_v361_license_cleanup... OK
  Applying main.0100_v370_projectupdate_job_tags... OK
  Applying main.0101_v370_generate_new_uuids_for_iso_nodes... OK
  Applying main.0102_v370_unifiedjob_canceled... OK
  Applying main.0103_v370_remove_computed_fields... OK
  Applying main.0104_v370_cleanup_old_scan_jts... OK
  Applying main.0105_v370_remove_jobevent_parent_and_hosts... OK
  Applying main.0106_v370_remove_inventory_groups_with_active_failures... OK
  Applying main.0107_v370_workflow_convergence_api_toggle... OK
  Applying main.0108_v370_unifiedjob_dependencies_processed... OK
  Applying main.0109_v370_job_template_organization_field... OK
  Applying main.0110_v370_instance_ip_address... OK
  Applying main.0111_v370_delete_channelgroup... OK
  Applying main.0112_v370_workflow_node_identifier... OK
  Applying main.0113_v370_event_bigint... OK
  Applying main.0114_v370_remove_deprecated_manual_inventory_sources... OK
  Applying main.0115_v370_schedule_set_null... OK
  Applying main.0116_v400_remove_hipchat_notifications... OK
  Applying main.0117_v400_remove_cloudforms_inventory... OK
  Applying main.0118_add_remote_archive_scm_type... OK
  Applying main.0119_inventory_plugins... OK
  Applying main.0120_galaxy_credentials... OK
  Applying main.0121_delete_toweranalyticsstate... OK
  Applying oauth2_provider.0002_08_updates... OK
  Applying oauth2_provider.0003_auto_20160316_1503... OK
  Applying oauth2_provider.0004_auto_20160525_1623... OK
  Applying oauth2_provider.0005_auto_20170514_1141... OK
  Applying oauth2_provider.0006_auto_20171214_2232... OK
  Applying sites.0001_initial... OK
  Applying sites.0002_alter_domain_unique... OK
  Applying social_django.0001_initial... OK
  Applying social_django.0002_add_related_name... OK
  Applying social_django.0003_alter_email_max_length... OK
  Applying social_django.0004_auto_20160423_0400... OK
  Applying social_django.0005_auto_20160727_2333... OK
  Applying social_django.0006_partial... OK
  Applying social_django.0007_code_timestamp... OK
  Applying social_django.0008_partial_timestamp... OK
  Applying sso.0001_initial... OK
  Applying sso.0002_expand_provider_options... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK

Nous créons le super utilisateur

sudo -u awx awx-manage createsuperuser

Nous répondons aux questions

Username (leave blank to use 'awx'): 
Email address: name@domain.tld
Password: 
Password (again): 
Superuser created successfully.

Nous provisionnons l’instance

sudo -u awx awx-manage provision_instance --hostname=myhost
sudo -u awx awx-manage register_queue --queuename=tower --hostnames=myhost

Configuration du proxy Web

Nous copions l’exemple

sudo cp -v /usr/share/doc/awx/nginx-awx.conf /etc/nginx/sites-available/

Nous adaptons la configuration.

Nous créons un lien symbolique dans sites-enable

cd /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/nginx-awx.conf

Nous redémarrons nginx et les services AWX

sudo systemctl restart nginx.service
sudo systemctl restart awx-cbreceiver.service
sudo systemctl restart awx-daphne.service
sudo systemctl restart awx-dispatcher.service  awx-web.service

Si tout s’est bien passé, vous devez pouvoir vous connecter sur l’instance depuis votre navigateur.

Edit : correction ortographe + manquait un aptitude update avant install paquet awx.

2 J'aime

Étant donné qu’en tant que « nouveau » sur ce forum, je n’avais droit qu’à deux liens dans mon message, j’ajoute les liens ici :

2 J'aime

Hello c’est moi kapouer:
j’ai laissé un bug dans debian/postinst de la version 15.0.1 du paquet awx:
py3compile /var/lib/awx
durant l’installation, au lieu de /var/lib/awx/venv.
C’est ennuyeux car cela « compile » tous les fichiers de type python.
Je corrigerai ça dans une version 15.0.1-1 ou bien dès que j’ai une version awx 19 qui fonctionne.

4 J'aime

Merci encore pour ton travail et ton aide :slight_smile:

Merci pour ce guide d’installation.
@kapouer Est-ce qu’une mise à jour du dépôt sur la dernière version AWX va être faite prochainement ?

Pas dans l’immédiat, mais c’est plus ou moins prévu.
Pour la 19 il y a beaucoup plus de travail.
En attendant une mise à jour de la 15 est dispo pour bullseye:
https://people.debian.org/~kapouer/apt/awx/ bullseye contrib

Merci pour le travail accompli !
Est-ce qu’il y a quelque part un endroit où on peut contribuer / bugreporter pour le paquet debian awx et/ou le guide d’install et de configuration ?

1 J'aime
1 J'aime

Bonjour,
Si des personnes sont intéressées pour venir participer au travail de documentation / bug reporting, je vous propose que nous en discutions ensemble. Je vais initier un travail prochainement de « mise au propre » de l’howto ci-dessus, et de documentation des montées de version, sauvegarde, etc… Et vu l’ampleur du boulot, le fait d’être une petite équipe pourrait largement accélérer le processus :wink:

1 J'aime

Bonjour,
j’ai édité les droits sur ton premier post, afin de le basculer en mode wiki ; donc, maintenant, tu peux le rééditer facilement pour inclure toutes nouvelles informations. (et idem, pour qui souhaiterais collaborer).

Voilà !

Bonjour @PengouinPdt merci beaucoup !
Bon Dimanche.

Je me lance, alors :smiley:

j’ai suivi le howto sur un conteneur LXC debian 11:
installation des dépendances OK
création de la bdd et du compte bdd OK
installation de awx OK

Mais je rencontre une erreur lors de la commande awx-manage migrate

root@nx-ansible-dev01:~# sudo -u awx awx-manage migrate
Traceback (most recent call last):
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/git/__init__.py", line 83, in <module>
    refresh()
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/git/__init__.py", line 73, in refresh
    if not Git.refresh(path=path):
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/git/cmd.py", line 278, in refresh
    raise ImportError(err)
ImportError: Bad git executable.
The git executable must be specified in one of the following ways:
    - be included in your $PATH
    - be set via $GIT_PYTHON_GIT_EXECUTABLE
    - explicitly set via git.refresh()

All git commands will error until this is rectified.

This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:
    - quiet|q|silence|s|none|n|0: for no warning or exception
    - warn|w|warning|1: for a printed warning
    - error|e|raise|r|2: for a raised exception

Example:
    export GIT_PYTHON_REFRESH=quiet


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/awx-manage", line 10, in <module>
    load_entry_point('awx', 'console_scripts', 'awx-manage')()
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/__init__.py", line 154, in manage
    execute_from_command_line(sys.argv)
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/django/core/management/__init__.py", line 357, in execute
    django.setup()
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/django/apps/registry.py", line 114, in populate
    app_config.import_models()
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/conf/models.py", line 11, in <module>
    from awx.main.models.base import CreatedModifiedModel, prevent_search
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/main/models/__init__.py", line 206, in <module>
    activity_stream_registrar.connect(Organization)
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/main/registrar.py", line 14, in connect
    from awx.main.signals import activity_stream_create, activity_stream_update, activity_stream_delete, activity_stream_associate
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/main/signals.py", line 42, in <module>
    from awx.main.tasks import update_inventory_computed_fields
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/awx/main/tasks.py", line 45, in <module>
    import git
  File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/git/__init__.py", line 85, in <module>
    raise ImportError('Failed to initialize: {0}'.format(exc)) from exc
ImportError: Failed to initialize: Bad git executable.
The git executable must be specified in one of the following ways:
    - be included in your $PATH
    - be set via $GIT_PYTHON_GIT_EXECUTABLE
    - explicitly set via git.refresh()

All git commands will error until this is rectified.

This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:
    - quiet|q|silence|s|none|n|0: for no warning or exception
    - warn|w|warning|1: for a printed warning
    - error|e|raise|r|2: for a raised exception

Example:
    export GIT_PYTHON_REFRESH=quiet

Je crois que python me dit qu’il manque un exécutable git.
Pourtant, il y a bien un exécutable git (installé précédemment via apt) dans le PATH de awx:

root@nx-ansible-dev01:~# usermod -s /bin/bash awx
root@nx-ansible-dev01:~# su - awx
awx@nx-ansible-dev01:~$ which git
/usr/bin/git
awx@nx-ansible-dev01:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
awx@nx-ansible-dev01:~$

J’ai aussi installé python-git via pip, pour la forme, mais le résultat est identique.

Est-ce que j’ai raté quelque chose ?

Pour les versions des paquets qui m’ont semblé pertinents:

root@nx-ansible-dev01:~# dpkg -l | egrep "python|awx"
ii  awx                            15.0.1-2~deb11u1                 amd64        web-based task engine built on top of ansible
ii  libpython2-stdlib:amd64        2.7.18-3                         amd64        interactive high-level object-oriented language (Python2)
ii  libpython2.7-minimal:amd64     2.7.18-8                         amd64        Minimal subset of the Python language (version 2.7)
ii  libpython2.7-stdlib:amd64      2.7.18-8                         amd64        Interactive high-level object-oriented language (standard library, version 2.7)
ii  libpython3-dev:amd64           3.9.2-3                          amd64        header files and a static library for Python (default)
ii  libpython3-stdlib:amd64        3.9.2-3                          amd64        interactive high-level object-oriented language (default python3 version)
ii  libpython3.9:amd64             3.9.2-1                          amd64        Shared Python runtime library (version 3.9)
ii  libpython3.9-dev:amd64         3.9.2-1                          amd64        Header files and a static library for Python (v3.9)
ii  libpython3.9-minimal:amd64     3.9.2-1                          amd64        Minimal subset of the Python language (version 3.9)
ii  libpython3.9-stdlib:amd64      3.9.2-1                          amd64        Interactive high-level object-oriented language (standard library, version 3.9)
ii  python-apt-common              2.2.1                            all          Python interface to libapt-pkg (locales)
ii  python-is-python2              2.7.18-9                         all          symlinks /usr/bin/python to the DEPRECATED python2
ii  python-pip-whl                 20.3.4-4                         all          Python package installer (pip wheels)
ii  python2                        2.7.18-3                         amd64        interactive high-level object-oriented language (Python2 version)
ii  python2-minimal                2.7.18-3                         amd64        minimal subset of the Python2 language
ii  python2.7                      2.7.18-8                         amd64        Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal              2.7.18-8                         amd64        Minimal subset of the Python language (version 2.7)
ii  python3                        3.9.2-3                          amd64        interactive high-level object-oriented language (default python3 version)
ii  python3-apt                    2.2.1                            amd64        Python 3 interface to libapt-pkg
ii  python3-argcomplete            1.8.1-1.5                        all          bash tab completion for argparse (for Python 3)
ii  python3-certifi                2020.6.20-1                      all          root certificates for validating SSL certs and verifying TLS hosts (python3)
ii  python3-cffi-backend:amd64     1.14.5-1                         amd64        Foreign Function Interface for Python 3 calling C code - runtime
ii  python3-chardet                4.0.0-1                          all          universal character encoding detector for Python3
ii  python3-cryptography           3.3.2-1                          amd64        Python library exposing cryptographic recipes and primitives (Python 3)
ii  python3-dbus                   1.2.16-5                         amd64        simple interprocess messaging system (Python 3 interface)
ii  python3-debconf                1.5.77                           all          interact with debconf from Python 3
ii  python3-debian                 0.1.39                           all          Python 3 modules to work with Debian-related data formats
ii  python3-debianbts              3.1.0                            all          Python interface to Debian's Bug Tracking System
ii  python3-dev                    3.9.2-3                          amd64        header files and a static library for Python (default)
ii  python3-distro-info            1.0                              all          information about distributions' releases (Python 3 module)
ii  python3-distutils              3.9.2-1                          all          distutils package for Python 3.x
ii  python3-dnspython              2.0.0-1                          all          DNS toolkit for Python 3
ii  python3-gi                     3.38.0-2                         amd64        Python 3 bindings for gobject-introspection libraries
ii  python3-httplib2               0.18.1-3                         all          comprehensive HTTP client library written for Python3
ii  python3-idna                   2.10-1                           all          Python IDNA2008 (RFC 5891) handling (Python 3)
ii  python3-jinja2                 2.11.3-1                         all          small but fast and easy to use stand-alone template engine
ii  python3-jmespath               0.10.0-1                         all          JSON Matching Expressions (Python 3)
ii  python3-kerberos               1.1.14-3.1+b3                    amd64        GSSAPI interface module - Python 3.x
ii  python3-lib2to3                3.9.2-1                          all          Interactive high-level object-oriented language (lib2to3)
ii  python3-libcloud               3.2.0-2                          all          unified Python interface into the cloud (Python3 version)
ii  python3-lockfile               1:0.12.2-2.2                     all          file locking library for Python — Python 3 library
ii  python3-markupsafe             1.1.1-1+b3                       amd64        HTML/XHTML/XML string library for Python 3
ii  python3-minimal                3.9.2-3                          amd64        minimal subset of the Python language (default python3 version)
ii  python3-netaddr                0.7.19-5                         all          manipulation of various common network address notations (Python 3)
ii  python3-ntlm-auth              1.4.0-1                          all          NTLM low-level Python library
ii  python3-packaging              20.9-2                           all          core utilities for python3 packages
ii  python3-pip                    20.3.4-4                         all          Python package installer
ii  python3-pkg-resources          52.0.0-4                         all          Package Discovery and Resource Access using pkg_resources
ii  python3-pycurl                 7.43.0.6-5                       amd64        Python bindings to libcurl (Python 3)
ii  python3-pyparsing              2.4.7-1                          all          alternative to creating and executing simple grammars - Python 3.x
ii  python3-pysimplesoap           1.16.2-3                         all          simple and lightweight SOAP Library (Python 3)
ii  python3-reportbug              7.10.3+deb11u1                   all          Python modules for interacting with bug tracking systems
ii  python3-requests               2.25.1+dfsg-2                    all          elegant and simple HTTP library for Python3, built for human beings
ii  python3-requests-toolbelt      0.9.1-1                          all          Utility belt for advanced users of python3-requests
ii  python3-setuptools             52.0.0-4                         all          Python3 Distutils Enhancements
ii  python3-simplejson             3.17.2-1                         amd64        simple, fast, extensible JSON encoder/decoder for Python 3.x
ii  python3-six                    1.16.0-2                         all          Python 2 and 3 compatibility library (Python 3 interface)
ii  python3-urllib3                1.26.5-1~exp1                    all          HTTP library with thread-safe connection pooling for Python3
ii  python3-wheel                  0.34.2-1                         all          built-package format for Python
ii  python3-yaml                   5.3.1-5                          amd64        YAML parser and emitter for Python3
ii  python3.9                      3.9.2-1                          amd64        Interactive high-level object-oriented language (version 3.9)
ii  python3.9-dev                  3.9.2-1                          amd64        Header files and a static library for Python (v3.9)
ii  python3.9-minimal              3.9.2-1                          amd64        Minimal subset of the Python language (version 3.9)

Et celle de l’OS:

root@nx-ansible-dev01:~# cat /etc/debian_version
11.1

Effectivement, c’est un point que j’ai remonté là : Git path on Django migrate command (#1) · Issues · Jérémy Lal / Awx · GitLab
Par contre, j’ai installé une nouvelle instance il y a quelques jours, et je n’ai pas réussi à répéter le problème. Le workaround que j’avais trouvé quand j’avais eu le message avait été, de mémoire, de créer une variable d’environnement contenant le chemin vers le module python git dans le bashrc de l’utilisateur awx (à confirmer, je vais véirifier sur l’instance, et je vous dirai).

J’ai bien bossé pour cette nouvelle année: awx 21.10.2 est dispo pour bookworm ici:
https://people.debian.org/~kapouer/apt/awx/README
et bientôt pour bullseye aussi.

Attention il faut lire ça avant:

Avant d’aller dans l’archive principale de debian, il y a encore pas mal à faire.
Donc ça sera plutôt pour debian/13.

3 J'aime