Te be honest, I've never seen the tags keyword applied to at the play
level, although
https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html
clearly says it can be. I suspect the functionality it provides is not
what you're after though, as you seem to be using it in a way that would
normally be done with the tags command line parameter. The above
mentioned docs says this about tags on a play:
Tags applied to the task or included tasks, this allows selecting
subsets of tasks from the command line.
The way I read that is, it's as if you had put these tags on each task,
or had used include_tasks with apply tags [...]. You still have to use
the command line tags parameter to do any task selection based on tags.
On 11/25/22 5:22 AM, RG wrote:
Hi,
these are the ansible role config files
ansible/runsetup.yml
---
- hosts:
- cmp
become: true
tags:
- nfs_server
roles:
- nfs
- hosts:
- hardware:!cmp
- vms
become: true
tags:
- nfs_client
roles:
- nfs
ansible/nfs/tasks/main.yml
---
# tasks file for installing nfs
- name: configure nfs server
include_tasks: nfs_server.yml
tags:
- nfs_server
- name: configure nfs client
include_tasks: nfs_client.yml
tags:
- nfs_client
/ansible/nfs/tasks/ nfs_server.yml
---
- name: Create shared nfs directory
...
- name: Configure /etc/exports
...
- name: set symlink /media/nfs-share -> /Data/nfs-share
...
- name: set symlink to ansible hosts.ini
...
/ansible/nfs/tasks/ nfs_clientym
---
- name: Create sharing nfs directory on hosts/guests
...
- name: Mounting /media/nfs-share
...
This is the ansible console output -
all tasks included in nfs_server.yml and nfs_client.yml are exectuted
for cmp (server) and then it starts again with nfs_server.yml for
top1...(clients) and stops because set symlink cannot be exectuted on
clients, which is ok.
in this case tagging in roles doesn't work.
PLAY [cmp]
***************************************************************************************************************************************************************
TASK [Gathering Facts]
***************************************************************************************************************************************************
ok: [cmp1]
TASK [configure nfs server]
**********************************************************************************************************************************************
included: /Data/nfs-share/ansible/nfs/tasks/nfs_server.yml for cmp1
TASK [Create shared nfs directory]
***************************************************************************************************************************************
ok: [cmp1] =>
TASK [nfs : Configure /etc/exports]
**************************************************************************************************************************************
ok: [cmp1] =>
TASK [nfs : Commmand exportfs]
*******************************************************************************************************************************************
skipping: [cmp1] =>
TASK [set symlink /media/nfs-share -> /Data/nfs-share]
*******************************************************************************************************************
ok: [cmp1] =>
TASK [nfs : set symlink to ansible hosts.ini]
****************************************************************************************************************************
changed: [cmp1] =>
TASK [configure nfs client]
**********************************************************************************************************************************************
included: /Data/nfs-share/ansible/nfs/tasks/nfs_client.yml for cmp1
TASK [Create sharing nfs directory on hosts/guests]
**********************************************************************************************************************
ok: [cmp1] =>
TASK [Mounting /media/nfs-share]
*****************************************************************************************************************************************
changed: [cmp1] =>
PLAY [hardware:!cmp,vms]
*************************************************************************************************************************************************
TASK [Gathering Facts]
***************************************************************************************************************************************************
ok: [top1]
...
TASK [configure nfs server]
**********************************************************************************************************************************************
included: /Data/nfs-share/ansible/nfs/tasks/nfs_server.yml for top1,
top2,...
TASK [Create shared nfs directory]
***************************************************************************************************************************************
changed: [top1]
...
TASK [nfs : Configure /etc/exports]
**************************************************************************************************************************************
hanged: [top1] =>
...
TASK [nfs : Commmand exportfs]
*******************************************************************************************************************************************
skipping: [top1]
...
TASK [set symlink /media/nfs-share -> /Data/nfs-share]
*******************************************************************************************************************
fatal: [top1]:
....
PLAY RECAP
***************************************************************************************************************************************************************
Thx,
Robert
[email protected] schrieb am Donnerstag, 24. November 2022 um 21:34:46
UTC+1:
Show us your playbooks, roles, and output, and we can tell you why.
Without any of those, we'd be guessing just like you.
On 11/24/22 3:23 PM, RG wrote:
Hi,
i once again exactly followed your instruction by copying your
published config into the files, because your methon seems
comprehensive to me.
However the problem is that the tags are not used which means
that both tasks are executed completely twice - first for cmp
machine and then for the other machines.
Do you've an idea why this happens.
Thx
[email protected] schrieb am Mittwoch, 23. November 2022 um
14:31:52 UTC+1:
It sounds like you want one NFS role that can do both NFS
server and NFS client tasks. Were I designing such a role I
think I would use a variable or tag to identify which
"persona" you want the role to configure, and use that in the
tasks/main.yml to source two different task files. One task
file would do the work for an NFS server persona. One task
file would do the work for an NFS client persona.
roles/nfs/tasks/main.yml
---
- name: configure nfs server
include_tasks: nfs_server.yml
tags: nfs_server
- name: configure nfs client
include_tasks: nfs_client.yml
tags: nfs_client
...
roles/nfs/tasks/nfs_server.yml
---
- name: tasks to configure nfs servers
some_tasks:
...
roles/nfs/tasks/nfs_client.yml
---
- name: tasks to configure nfs clients
some_tasks:
...
This lets you separate the tasks for server and client
persona. Executing the role with tag nfs_server will
configure the inventory machines as nfs servers. Executing
the role with tag nfs_client will configure the inventory
machines as nfs clients. Execute the role two times with
different inventories and tags as you showed in your original
message.
my_playbook.yml
---
- hosts: cmp
become: true
tags: nfs_server
roles:
- nfs
- hosts:
- hardware:!cmp
- vms
become: true
tags: nfs_client
roles:
- nfs
I am curious to have others also propose ideas to see how
others might address the problem.
Walter
--
Walter Rowe, Division Chief
Infrastructure Services, OISM
Mobile: 202.355.4123 <tel:(202)%20355-4123>
On Nov 23, 2022, at 8:08 AM, Robert Grießner
<[email protected]> wrote:
Hi,
i'd like to migrate my playbooks into a ansible role. I
started but a basic question raises.
E.g.
I sould like to implement nfs in network of linux machines.
on one machine i've to configure the nfs-sharing and on the
other machines I've to implemt the link to the nfs-sourcing
host.
systemA - configure a share for other hosts
systemB,C,D - use the nfs-sharing from system A
I tried to create a role called nfs where i have to
configure a few tasks on systemA and the other tasks on
systemB,C,D
I've splitted the tasks into 2 vaious task files one for
systemA and one for systemB and both will be imported into
main.yml in tasks.
---
# tasks file for installing nfs
- import_tasks: install_cmp.yml
- import_tasks: install_machines.yml
in the run.yml I tried to call the same role twice where I
used tags to call the plays for the cmp machine from
install_cmp.yml and the tags in install_machines for running
the plays for the other machines. however this doesn't work
- hosts: cmp
become: true
tags:
- create_nfs_cmp
- config_exports_cmp
- exportfs_cmp
- symlink_cmp
- symlink_hostsini_cmp
roles:
- nfs
- hosts:
- hardware:!cmp
- vms
become: true
tags:
- create_nfs_machines
- mnt_nfs_machines
roles:
- nfs
is my concept wrong, do I have to configure to roles one for
setting up nfs on cmp and one for implementing nfs on the
machines or is it possible to create just one role for
installing nfs on with vaious tasks on various machines?
Thx
--
You received this message because you are subscribed to the Google Groups "Ansible
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/56bd92d3-e3df-2eaf-383a-fc9a6a6ca02a%40gmail.com.