Les nouveautés d'Ansible 3.0
Publié le :
L’annonce de la version 3.0.0 du package communautaire Ansible marque la fin d’un projet amorcé en 2019. Ce projet visait à modifier comment était livré Ansible.
Historiquement Ansible embarquait le runtime ainsi que tous les plugins et modules dans un seul package. Désormais avec la version 3.0 nous aurons droits à 3 types d’artefacts distincts :
- Ansible-base - Le runtime Ansible mimimal
- Les collections Ansible
- Et enfin le Ansible community package qui intégrera l’installation d’Ansible-base mais aussi les collections et qui se nommera ansible.
Leur versionning vont vivre séparément:
- Celui d’
Ansible-base
conservera l’actuelle et donc se nommera ansible-base 2.10 puis 2.11, … - Le package
ansible
de la communauté Ansible (Ansible Core + Community Collections) adopte le contrôle de version sémantique et donc pour la prochaine est la 3.0.0. En conséquence, le numéro de version de l’ensemble du package ne correspond plus à celui d’Ansible-Base, dont le numéro de version actuel est toujours 2.10 et continuera à évoluer ainsi.
Toutes les 3 semaines une version mineure sera livré et sera nommé 3.1.0, 3.2.0, …
La prochaine version majeure d’Ansible, la 4.0 est prévue pour mai et devrait contenir ansible-base 2.11. La 5.0 est elle prévue pour novembre et intégrera ansible-base 2.12.
J’espère que vous avez compris :)
Comment Installer Ansible 3.0.0
Si on recherche ansible sur le gestionnaire de package Pypi on voit bien un ansible 3.0.0. Attention si vous avez déjà installé une version antérieure à la 2.10 installée il faudra la désinstaller en premier.
Comment s’y retrouver. Ouvrons un docker et installons ansible classiquement avec pip :
docker run -it ubuntu:20.04 bashapt update && apt upgrade && apt install python3-pippip3 install ansible==3.0.0Collecting ansible==3.0.0 Downloading ansible-3.0.0.tar.gz (30.8 MB) |████████████████████████████████| 30.8 MB 6.7 MB/sCollecting ansible-base<2.11,>=2.10.5 Downloading ansible-base-2.10.6.tar.gz (5.7 MB) |████████████████████████████████| 5.7 MB 6.2 MB/sCollecting PyYAML Downloading PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl (662 kB) |████████████████████████████████| 662 kB 3.1 MB/sCollecting cryptography Downloading cryptography-3.4.6-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB) |████████████████████████████████| 3.2 MB 3.3 MB/sCollecting jinja2 Downloading Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) |████████████████████████████████| 125 kB 5.7 MB/sCollecting packaging Downloading packaging-20.9-py2.py3-none-any.whl (40 kB) |████████████████████████████████| 40 kB 7.3 MB/sCollecting cffi>=1.12 Downloading cffi-1.14.5-cp38-cp38-manylinux1_x86_64.whl (411 kB) |████████████████████████████████| 411 kB 4.4 MB/sCollecting MarkupSafe>=0.23 Downloading MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl (32 kB)Collecting pyparsing>=2.0.2 Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) |████████████████████████████████| 67 kB 6.4 MB/sCollecting pycparser Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB) |████████████████████████████████| 112 kB 6.0 MB/sBuilding wheels for collected packages: ansible, ansible-base Building wheel for ansible (setup.py) ... -
On voit bien la construction de deux packages: ansible-base et ansible.
Quels sont les modules disponibles ?
Il suffit de lancer la commande ansible-galaxy pour lister les collections installés par défaut :
ansible-galaxy collection list
Collection Version----------------------------- -------amazon.aws 1.3.0ansible.netcommon 1.5.0ansible.posix 1.1.1ansible.utils 2.0.0ansible.windows 1.3.0arista.eos 1.3.0awx.awx 17.0.1azure.azcollection 1.4.0check_point.mgmt 2.0.0chocolatey.chocolatey 1.0.2cisco.aci 2.0.0cisco.asa 1.0.4cisco.intersight 1.0.10cisco.ios 1.3.0cisco.iosxr 1.2.1cisco.meraki 2.2.0cisco.mso 1.1.0cisco.nso 1.0.3cisco.nxos 1.4.0cisco.ucs 1.6.0cloudscale_ch.cloud 2.0.0community.aws 1.3.0community.azure 1.0.0community.crypto 1.4.0community.digitalocean 1.0.0community.docker 1.2.2community.fortios 1.0.0community.general 2.0.1community.google 1.0.0community.grafana 1.1.0community.hashi_vault 1.0.0community.hrobot 1.1.0community.kubernetes 1.1.1community.kubevirt 1.0.0community.libvirt 1.0.0community.mongodb 1.2.0community.mysql 1.2.0community.network 2.0.1community.okd 1.0.1community.postgresql 1.1.1community.proxysql 1.0.0community.rabbitmq 1.0.1community.routeros 1.1.0community.skydive 1.0.0community.sops 1.0.4community.vmware 1.7.0community.windows 1.2.0community.zabbix 1.2.0containers.podman 1.4.1cyberark.conjur 1.1.0cyberark.pas 1.0.5dellemc.openmanage 3.0.0dellemc.os10 1.1.1dellemc.os6 1.0.6dellemc.os9 1.0.3f5networks.f5_modules 1.7.1fortinet.fortimanager 2.0.1fortinet.fortios 1.1.8frr.frr 1.0.3gluster.gluster 1.0.1google.cloud 1.0.2hetzner.hcloud 1.2.1ibm.qradar 1.0.3infinidat.infinibox 1.2.4inspur.sm 1.1.2junipernetworks.junos 1.3.0kubernetes.core 1.1.1mellanox.onyx 1.0.0netapp.aws 20.9.0netapp.elementsw 20.11.0netapp.ontap 21.1.1netapp_eseries.santricity 1.1.0netbox.netbox 2.0.0ngine_io.cloudstack 2.0.0ngine_io.exoscale 1.0.0ngine_io.vultr 1.1.0openstack.cloud 1.2.1openvswitch.openvswitch 1.1.0ovirt.ovirt 1.3.0purestorage.flasharray 1.5.1purestorage.flashblade 1.4.0sensu.sensu_go 1.8.0servicenow.servicenow 1.0.4splunk.es 1.0.2t_systems_mms.icinga_director 1.13.0theforeman.foreman 1.5.1vyos.vyos 1.1.1wti.remote 1.0.1
Nous voila rassuré tous les modules principaux sont présents. Donc on voit que si on installe la package ansible rien ne change. Mais si on souhaite un environnement miminal rien n’interdit d’installer que le package ansible-base et ensuite d’installer que les collections nécessaires avec la commande ansible-galaxy. De quoi construire des images plus petites et de gérer le versionning plus finement, mais attention aux incompatibilités.
root@7c70dbfa902d:/# ansible --versionansible 2.10.6 config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]root@7c70dbfa902d:/# ansible-galaxy collection listroot@7c70dbfa902d:/#root@7c70dbfa902d:/# ansible-galaxy collection install community.generalStarting galaxy collection install processProcess install dependency mapStarting collection install processInstalling 'community.general:2.1.1' to '/root/.ansible/collections/ansible_collections/community/general'Downloading https://galaxy.ansible.com/download/community-general-2.1.1.tar.gz to /root/.ansible/tmp/ansible-local-409687f1qqwz/tmpal2ty6rtcommunity.general (2.1.1) was installed successfully
Si vous voulez plus de tutorials Ansible je vous renvoie sur le billet de l’introduction à ansible