community.general.alternatives module
The community.general.alternatives module doesn't support slaves and currently always make the alternative that is updated the selected one.
So, for now, this role probably need to use ansible.builtin.command
plus jc to parse update-alternatives --query
.
Some examples of the update-alternatives --query
format and the JSON version:
update-alternatives --query php
Results in:
Name: php
Link: /usr/bin/php
Slaves:
php.1.gz /usr/share/man/man1/php.1.gz
Status: auto
Best: /usr/bin/php8.1
Value: /usr/bin/php8.1
Alternative: /usr/bin/php7.4
Priority: 74
Slaves:
php.1.gz /usr/share/man/man1/php7.4.1.gz
Alternative: /usr/bin/php8.0
Priority: 80
Slaves:
php.1.gz /usr/share/man/man1/php8.0.1.gz
Alternative: /usr/bin/php8.1
Priority: 81
Slaves:
php.1.gz /usr/share/man/man1/php8.1.1.gz
Running:
jc update-alternatives --query php | jq
Results in:
{
"name": "php",
"link": "/usr/bin/php",
"slaves": [
{
"name": "php.1.gz",
"path": "/usr/share/man/man1/php.1.gz"
}
],
"status": "auto",
"best": "/usr/bin/php8.1",
"value": "/usr/bin/php8.1",
"alternatives": [
{
"name": "/usr/bin/php7.4",
"priority": 74,
"slaves": [
{
"name": "php.1.gz",
"path": "/usr/share/man/man1/php7.4.1.gz"
}
]
},
{
"name": "/usr/bin/php8.0",
"priority": 80,
"slaves": [
{
"name": "php.1.gz",
"path": "/usr/share/man/man1/php8.0.1.gz"
}
]
},
{
"name": "/usr/bin/php8.1",
"priority": 81,
"slaves": [
{
"name": "php.1.gz",
"path": "/usr/share/man/man1/php8.1.1.gz"
}
]
}
]
}