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

**URL:** <https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621>\
**Category:** Trucs et Astuces\
**Created:** [Mai 15, 2021, 3:35 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621 "2021-05-15T15:35:09Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![5t4n7oG](https://www.debian-fr.org/user_avatar/www.debian-fr.org/5t4n7og/32/10979_2.png) [@5t4n7oG](https://www.debian-fr.org/u/5t4n7oG)\
**Post date:** [Mai 15, 2021, 3:35 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/1 "2021-05-15T15:35:10Z")

</div>

# 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 «&nbsp;non containerisée&nbsp;» tournant sous Debian (et pas sous CentOS comme le projet [AWX RPM](https://awx.wiki/) 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 ?

«&nbsp;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.&nbsp;»  
Source : [Wikipedia](https://fr.wikipedia.org/wiki/Ansible_(logiciel))

## Installation paquets

Nous installons les paquets nécessaires

```auto
sudo aptitude install postgresql nginx apt-transport-https gnupg2

```

## Dépôt AWX

Nous importons la clé du dépôt

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

```

Nous ajoutons le dépôt AWX

```auto
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

```auto
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

```auto
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

```auto
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

```auto
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

```auto
sudo -u awx awx-manage migrate

```

Si vous avez ce message d’erreur

```auto
ModuleNotFoundError: No module named 'distutils.dir_util'

```

Il faut installer python3-distutils

```auto
sudo aptitude install python3-distutils

```

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

```auto
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

```auto
sudo -u awx awx-manage createsuperuser

```

Nous répondons aux questions

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

```

Nous provisionnons l’instance

```auto
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

```auto
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

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

```

Nous redémarrons nginx et les services AWX

```auto
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.

---

<div class="post-metadata">

**Author:** ![5t4n7oG](https://www.debian-fr.org/user_avatar/www.debian-fr.org/5t4n7og/32/10979_2.png) [@5t4n7oG](https://www.debian-fr.org/u/5t4n7oG)\
**Post date:** [Mai 15, 2021, 3:36 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/2 "2021-05-15T15:36:36Z")

</div>

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

- [Dépôt GIT sur Salsa](https://salsa.debian.org/kapouer/awx)
- [APT repo AWX](https://people.debian.org/~kapouer/apt/awx/)

---

<div class="post-metadata">

**Author:** ![kapouer](https://www.debian-fr.org/user_avatar/www.debian-fr.org/kapouer/32/10977_2.png) [@kapouer](https://www.debian-fr.org/u/kapouer)\
**Post date:** [Mai 15, 2021, 4:41 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/3 "2021-05-15T16:41:56Z")

</div>

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 «&nbsp;compile&nbsp;» 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.

---

<div class="post-metadata">

**Author:** ![5t4n7oG](https://www.debian-fr.org/user_avatar/www.debian-fr.org/5t4n7og/32/10979_2.png) [@5t4n7oG](https://www.debian-fr.org/u/5t4n7oG)\
**Post date:** [Mai 15, 2021, 5:28 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/4 "2021-05-15T17:28:48Z")

</div>

Merci encore pour ton travail et ton aide 🙂

---

<div class="post-metadata">

**Author:** ![58745](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/5/46a35a/32.png) [@58745](https://www.debian-fr.org/u/58745)\
**Post date:** [Novembre 4, 2021, 2:59 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/5 "2021-11-04T14:59:27Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![kapouer](https://www.debian-fr.org/user_avatar/www.debian-fr.org/kapouer/32/10977_2.png) [@kapouer](https://www.debian-fr.org/u/kapouer)\
**Post date:** [Novembre 4, 2021, 3:48 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/6 "2021-11-04T15:48:12Z")

</div>

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`

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Novembre 4, 2021, 4:44 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/7 "2021-11-04T16:44:12Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![kapouer](https://www.debian-fr.org/user_avatar/www.debian-fr.org/kapouer/32/10977_2.png) [@kapouer](https://www.debian-fr.org/u/kapouer)\
**Post date:** [Novembre 4, 2021, 5:01 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/8 "2021-11-04T17:01:06Z")

</div>

> [@Installation d'AWX sous Debian (sans container :D )](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/2):
>
> Étant donné qu’en tant que «&nbsp;nouveau&nbsp;» sur ce forum, je n’avais droit qu’à deux liens dans mon message, j’ajoute les liens ici : [Dépôt GIT sur Salsa](https://salsa.debian.org/kapouer/awx)[APT repo AWX](https://people.debian.org/~kapouer/apt/awx/)

---

<div class="post-metadata">

**Author:** ![5t4n7oG](https://www.debian-fr.org/user_avatar/www.debian-fr.org/5t4n7og/32/10979_2.png) [@5t4n7oG](https://www.debian-fr.org/u/5t4n7oG)\
**Post date:** [Novembre 6, 2021, 8:59 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/9 "2021-11-06T08:59:19Z")

</div>

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 «&nbsp;mise au propre&nbsp;» 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 😉

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Novembre 6, 2021, 1:35 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/10 "2021-11-06T13:35:26Z")

</div>

> [@5t4n7oG](#):
>
> Étant donné qu’en tant que « nouveau » sur ce forum, je n’avais droit qu’à deux liens dans mon message

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à !

---

<div class="post-metadata">

**Author:** ![5t4n7oG](https://www.debian-fr.org/user_avatar/www.debian-fr.org/5t4n7og/32/10979_2.png) [@5t4n7oG](https://www.debian-fr.org/u/5t4n7oG)\
**Post date:** [Novembre 7, 2021, 2:06 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/11 "2021-11-07T14:06:17Z")

</div>

Bonjour @PengouinPdt merci beaucoup !  
Bon Dimanche.

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Novembre 23, 2021, 3:03 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/12 "2021-11-23T15:03:35Z")

</div>

> [@5t4n7oG](#):
>
> 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 me lance, alors 😃

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`

```shell
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:

```auto
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:

```auto
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:

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

```

---

<div class="post-metadata">

**Author:** ![5t4n7oG](https://www.debian-fr.org/user_avatar/www.debian-fr.org/5t4n7og/32/10979_2.png) [@5t4n7oG](https://www.debian-fr.org/u/5t4n7oG)\
**Post date:** [Novembre 23, 2021, 6:14 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/13 "2021-11-23T18:14:52Z")

</div>

Effectivement, c’est un point que j’ai remonté là : [Git path on Django migrate command (#1) · Issues · Jérémy Lal / Awx · GitLab](https://gitlab.ow2.org/kapouer/awx/-/issues/1)  
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).

---

<div class="post-metadata">

**Author:** ![kapouer](https://www.debian-fr.org/user_avatar/www.debian-fr.org/kapouer/32/10977_2.png) [@kapouer](https://www.debian-fr.org/u/kapouer)\
**Post date:** [Janvier 3, 2023, 11:39 UTC](https://www.debian-fr.org/t/installation-dawx-sous-debian-sans-container-d/84621/14 "2023-01-03T11:39:25Z")

</div>

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](https://people.debian.org/~kapouer/apt/awx/README)  
et bientôt pour bullseye aussi.

Attention il faut lire ça avant:

> **[debian/README.Debian · main · Debian Python Team / packages / Awx · GitLab](https://salsa.debian.org/python-team/packages/awx/-/blob/main/debian/README.Debian)**
>
> Debian Salsa Gitlab

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