{{tag>Brouillon AAP Ansible CA}} = Notes Ansible Tower - Ansible Automation Platform Voir aussi : * event-driven platform for runbook automation / IFTTT (if this, then that) * [[https://en.m.wikipedia.org/wiki/StackStorm|StackStorm]] * https://en.m.wikipedia.org/wiki/Infrastructure_as_code#Tools Vocabulaire / Concepts * https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html * https://docs.ansible.com/automation-controller/latest/pdf/ * https://access.redhat.com/documentation/en-us/reference_architectures/2022/pdf/ansible_automation_platform_1.2_to_2_migration_guide/reference_architectures-2022-ansible_automation_platform_1.2_to_2_migration_guide-en-us.pdf Cycle de vie : * https://access.redhat.com/support/policy/updates/ansible-automation-platform Recherche doc RedHat : * https://access.redhat.com/taxonomy/products/red-hat-ansible-automation-platform * https://access.redhat.com/taxonomy/products/red-hat-ansible-automation-hub Voir : * https://legacy-controller-docs.ansible.com/automation-controller/latest/html/ === Ansible Engine Correspond à Ansible et est installé par : sudo yum install ansible === Control node Control node * control plane * execution plane Dans AAP v1 le "control plane" et l'"execution plane" étaient ensemble sur le "control node" mesh node types : ''node_type=hybrid'' par défaut ou ''node_type=control'' node_type : * control (WebUI & API) * execution (ansible-playbook) * hybrid (Execution + control) * hop (sorte de proxy ssh entre le Controller et les Execution Nodes ; ne peut pas être un Execution Node) === Execution Node (Ansible Automation Engine) The machine that runs Ansible Linux Mac BSD ... Python 3.8 ou + === Hop nodes / Execution nodes mesh node types ''node_type=hop'' ou ''node_type=execution'' === Ansible Mesh / Receptor Voir : * https://github.com/ansible/receptor * https://github.com/ansible/receptor/tree/devel/tools/examples/simple-network * https://www.ansible.com/blog/peeling-back-the-layers-and-understanding-automation-mesh * https://receptor.readthedocs.io/en/latest/index.html [[https://receptor.readthedocs.io/_/downloads/en/latest/pdf/|PDF]] * https://malfunceddie.github.io/article/awx-hop-nodes/hopnodes/ * https://access.redhat.com/documentation/en-us/red_hat_ansible_automation_platform/2.1/html-single/red_hat_ansible_automation_platform_automation_mesh_guide/index * https://www.ansible.com/blog/peeling-back-the-layers-and-understanding-automation-mesh * https://www.ansible.com/blog/whats-new-in-ansible-automation-platform-2.1-automation-mesh receptor_listener_port 27199/tcp | Automation Controller | Execution Node | | ESTABLISHED 27199 | LISTEN 27199 | work-signing keys Control node receptor - work-signing: privatekey: /etc/receptor/work_private_key.pem tokenexpiration: 1m - work-verification: publickey: /etc/receptor/work_public_key.pem Execution Node - work-verification: publickey: /etc/receptor/work_public_key.pem To create the keys, just do openssl commands, you can see them evokes in the plays here https://github.com/ansible/awx/blob/a86740c3c9eaf9a551e850341d8adec5a3962dd5/tools/docker-compose/ansible/roles/sources/tasks/main.yml#L84 === Ansible Execution Environment Sorte de pyenv contenant Ansible, les collections et plugins === Managed host Les cibles ansible myhost --become -m raw -a "yum install -y python2" Prereq Python 2 (version 2.6 or later) or Python 3 (version 3.5 or later) Automation Hub / Galaxy jfrog-artifactory : * https://jfrog.com/help/r/jfrog-artifactory-documentation/ansible-repositories * https://jfrog.com/blog/manage-ansible-collections-with-jfrog-artifactory/ === Hop node Anciennement "Isolated Nodes" Voir : * https://developers.redhat.com/blog/2017/12/20/understanding-ansible-tower-isolated-nodes# Alternative à ssh-proxy\\ The only prerequisite is that there is SSH connectivity from the Tower Cluster to the Isolated Node Exemple de conf : [isolated_group_restrictedzone:vars] controller=tower [isolated_group_nc] cary.remote.office controller=tower Isolated instances are not supported in conjunction with running Ansible Tower in OpenShift. === Ansible Automation Hub Voir [[https://github.com/ansible/galaxy_ng|Galaxy NG]] (Private) Automation Hub == Config tower-cli setting modify ALLOW_JINJA_IN_EXTRA_VARS always == Logs Voir : https://github.com/ansible/awx/issues/11330 extra_vars des jobs dans les logs (à tester) - hosts: localhost gather_facts: false tasks: - shell: "echo {{ inventory_hostname }}" ou The first idea was to add extra_vars to every job events, but it would work just as well to be able to add a short string label (prompt on launch) when launching a job template. This should not cause a performance issue. Add extra_vars to every job event sent over job_events #11330 === Rechercher par date / heures GT env TZ=Europe/Paris date --rfc-3339=second -d '2023-08-23 21:50' 2023-08-23 21:50:00+02:00 LT env TZ=Europe/Paris date --rfc-3339=second -d '2023-08-24 00:20' 2023-08-24 00:20:00+02:00 == Développement / Intégration === Ansible Navigator * TUI or CLI to execute playbook * Supports Execution Environments === Ansible Builder * creates Execution Environment * takes in input text/yaml files describing the EE to produce Voir : * https://thedatabaseme.de/2022/09/09/self-build-awx-execution-environment/ === Autres GPG Signing * https://www.youtube.com/watch?v=O1me0dBr9_w * https://www.youtube.com/watch?v=sXHSUsw5yEQ Connaitre la version cat /etc/ansible-automation-platform/VERSION La config de la connexion à la DB est ici : \\ ''/etc/tower/conf.d/postgres.py'' == Autres #ansible-config init --disabled -t all > ansible.cfg ansible-navigator config init --disabled -t all > ansible.cfg Voir la configuration ansible-config dump --only-changed -t all #ansible-config view | grep -B 2 -A 2 'inventory plugins' ansible-navigator config view | grep -B 2 -A 2 'inventory plugins' [root@ansible-1 ~]# awx-manage list_instances [tower capacity=51] ansible-1 capacity=17 version=3.7.1 heartbeat="2020-08-27 09:06:21" ansible-2 capacity=17 version=3.7.1 heartbeat="2020-08-27 09:05:58" ansible-3 capacity=17 version=3.7.1 heartbeat="2020-08-27 09:06:00" https://goetzrieger.github.io/ansible-tower-advanced/2-clustering/ #!/bin/bash awx -f human inventory create --name "Example Inventory" --organization "Default" awx -f human host create --name "node1" \ --inventory "Example Inventory" awx -f human host create --name "node2" \ --inventory "Example Inventory" awx -f human credential create --name "Example Credentials" \ --organization "Default" \ --credential_type "Machine" \ --inputs '{"username": "ec2-user", "ssh_key_data": "@~/.ssh/aws-private.pem"}' awx -f human project create --name="Apache" \ --scm_type=git \ --scm_url="https://github.com/goetzrieger/ansible-labs-playbooks.git" \ --organization "Default" \ --scm_clean=true --scm_delete_on_update=true --scm_update_on_launch=true \ --wait awx -f human job_templates create \ --name="Install Apache" \ --inventory="Example Inventory" \ --project=Apache \ --playbook=apache_install.yml \ --become_enabled="yes" awx -f human job_template associate --name "Install Apache" \ --credential "Example Credentials" Source : https://goetzrieger.github.io/ansible-tower-advanced/4-awx-cli-exercises/ == Autres === Credentials sudo awx-python -m pip install safeguardcredentialtype sudo awx-manage setup_managed_credential_types sudo automation-controller-service restart Source : https://pypi.org/project/safeguardcredentialtype/ Voir aussi : ''M(awx.awx.credential_input_source)''