{{tag>Brouillon Ansible AWX CA}}
= Notes Tower AWX AAP Ansible Automation Platform
Voir :
* [[AAP Ansible Automation Platform - Credentials - exports - decrypt]]
* [[AAP managed hosts Python requirements]]
* [[Notes Ansible ansible-navigator]]
* [[Ansible Docker Execution Environment]]
* [[Ansible AWX - Tower Cli]]
== Install
Voir :
* https://developers.redhat.com/articles/2023/01/01/how-install-red-hat-ansible-automation-platform-rhel-9
== shell_plus
Voir :
* https://django-extensions.readthedocs.io/en/latest/shell_plus.html
* [[AAP Ansible Automation Platform - Credentials - exports - decrypt]]
=== shell_plus avec IPython
Install
Voir aussi :
* ''/var/lib/awx/venv/awx/bin/pip install graphviz''
* https://gist.github.com/AlanCoding/bca128a1b391e28819f4020eb9b6536e
python3.9 -m venv ipython
pip install ipython
cp -a venv/ venv2/
rsync -axv --exclude "*.pyc" --exclude "__pycache__" ipython/ venv2/awx/
rsync -axv --exclude "*.pyc" --exclude "__pycache__" venv/awx/ venv2/awx/
cd venv2/
sed -e 's%/venv/awx/%/venv2/awx/%' -i $(grep -rl 'venv/awx' *)
sed -e 's%/var/lib/awx/ipython/%/var/lib/awx/venv2/awx/%' -i $(grep -rl 'awx/ipython' *)
find . -name "*.pyc" -delete
find . -name "__pycache__" -delete
Utilisation
export PYTHONPATH=/var/lib/awx/venv2/awx/lib/python3.9/site-packages
SHELL_PLUS=ipython
# awx-manage shell_plus --ipython
awx-manage shell_plus
Erreur AttributeError: module 'typing' has no attribute '_ClassVar'
$ ipython
Traceback (most recent call last):
File "/var/lib/awx/ipython/bin/ipython", line 5, in
from IPython import start_ipython
File "/var/lib/awx/ipython/lib/python3.9/site-packages/IPython/__init__.py", line 54, in
from .terminal.embed import embed
File "/var/lib/awx/ipython/lib/python3.9/site-packages/IPython/terminal/embed.py", line 14, in
from IPython.core.magic import Magics, magics_class, line_magic
File "/var/lib/awx/ipython/lib/python3.9/site-packages/IPython/core/magic.py", line 20, in
from . import oinspect
File "/var/lib/awx/ipython/lib/python3.9/site-packages/IPython/core/oinspect.py", line 64, in
class OInfo:
File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/dataclasses.py", line 958, in dataclass
return wrap(_cls)
File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/dataclasses.py", line 950, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen)
File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/dataclasses.py", line 800, in _process_class
cls_fields = [_get_field(cls, name, type)
File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/dataclasses.py", line 800, in
cls_fields = [_get_field(cls, name, type)
File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/dataclasses.py", line 659, in _get_field
if (_is_classvar(a_type, typing)
File "/var/lib/awx/venv/awx/lib/python3.9/site-packages/dataclasses.py", line 550, in _is_classvar
return type(a_type) is typing._ClassVar
AttributeError: module 'typing' has no attribute '_ClassVar'
Solution
mv ./lib/python3.9/site-packages/dataclasses-0.6.dist-info ./lib/python3.9/site-packages/dataclasses-0.6.dist-info.bak
mv ./lib/python3.9/site-packages/dataclasses.py ./lib/python3.9/site-packages/dataclasses.py.bak
=== Gestion d'un job
sudo -u awx -i
awx-manage shell_plus --ipython
==== Analyse d'un job
[[aap_diagnostic_supervision_et_metrologie|Analyse d'un job KO]]
Exemple de changement d'état
su - awx
echo "UnifiedJob.objects.filter(status='running').update(status='canceled')" | awx-manage shell_plus
Exemple
#from awx.main.models import UnifiedJob
for i in UnifiedJob.objects.filter():
print(i)
job_jb = UnifiedJob.objects.filter(id=241021)
job_jb.values_list()[0]
job_jb.update(status='canceled')
start = time.time()
UnifiedJob.objects.filter(id=1096679).update(status='canceled')
end = time.time()
print(end - start)
=== Effacement d'inventaire
awx-manage shell_plus
Inventory.object.filter(pending_deletion=True).update(pending_deletion=False)
Inventory.object.filter(id=inventoryId).delete()
Note : Avant faire une sauvegarde avec ''./setup.sh -b''
== Autres
[awx@aap-crtl-001]$ awx-manage profile_sql --threshold 1 --minutes 5
SQL profiling initiated with a threshold of 1.0 second(s) and a duration of 5.0 minute(s), any queries that meet criteria can be found in /var/log/tower/profile/.
FIXME