#297 docstranslation: use include_role instead of import_role
Merged 3 years ago by kevin. Opened 3 years ago by darknao.
fedora-infra/ darknao/ansible master  into  master

@@ -10,7 +10,8 @@ 

      - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml

  

    tasks:

-   - import_role:

+   - name: Define Project

+     include_role:

        name: openshift/project

      vars:

        description: Documentation translation
@@ -31,23 +32,27 @@ 

        size: 4096

      register: r_ssh_key

  

-   - import_role:

+   - name: Define imagestream

+     include_role:

        name: openshift/imagestream

      vars:

        imagename: builder

  

-   - import_role:

+   - name: Define buildconfig

+     include_role:

        name: openshift/object

      vars:

        objectname: buildconfig.yml

        file: buildconfig.yml

  

-   - import_role:

+   - name: Start build

+     include_role:

        name: openshift/start-build

      vars:

        buildname: docstranslation-build

  

-   - import_role:

+   - name: Define secrets

+     include_role:

        name: openshift/object

      vars:

        objectname: secrets.yml
@@ -55,7 +60,8 @@ 

      tags:

        - deploy-secrets

  

-   - import_role:

+   - name: Define cron job

+     include_role:

        name: openshift/object

      vars:

        file: cron.yml
@@ -67,7 +73,8 @@ 

  # actions to delete the project from OpenShift

  ###############################################

  # to run: sudo rbac-playbook -l os_masters_stg[0] -t delete openshift-apps/docstranslation.yml

-   - import_role:

+   - name: Delete cron jobs

+     include_role:

        name: openshift/object-delete

      vars:

        objecttype: cronjob

So, figured out variables defined in a import_role task are exposed to the entire playbook even before the said import_role task.
The only way to control exposure is by using include_role instead.
I've definitely learned something today.

It is actually documented in the import_role doc, but that's the first time I run into this.

Yeah, I should have noticed that one... include and import do indeed behave very differently. :)

Pull-Request has been merged by kevin

3 years ago

That gives:

TASK [Generate ssh keypair, if none exist] *************************************************************************
Wednesday 28 October 2020  23:44:48 +0000 (0:00:00.033)       0:00:10.563 *****                                    
Wednesday 28 October 2020  23:44:48 +0000 (0:00:00.033)       0:00:10.563 *****                                    
fatal: [os-master01.stg.iad2.fedoraproject.org]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (openssh_keypair) module: regenerate Supported parameters include: attributes, backup, comment, content, delimiter, directory_mode, follow, force, group, mode, owner, path, regexp, remote_src, selevel, serole, setype, seuser, size, src, state, type, unsafe_writes"}

Removing the 'regnerate: never' line, then gets to:

TASK [openshift/object : Copy template {{template}} to temporary file ({{tmpfile.path}})] **************************Wednesday 28 October 2020  23:55:26 +0000 (0:00:00.062)       0:00:15.166 *****                                    
Wednesday 28 October 2020  23:55:26 +0000 (0:00:00.062)       0:00:15.166 *****                                    
[WARNING]: Unable to find '/etc/openshift_apps/docstranslation/id_rsa_docs_trans' in expected paths (use -vvvvv to 
see paths)
fatal: [os-master01.stg.iad2.fedoraproject.org]: FAILED! => {"changed": false, "msg": "AnsibleError: An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>, original message: could not locate file in lookup: /etc/openshift_apps/docstranslation/id_rsa_docs_trans"}     

I can look more tomorrow, have to head away from the computer now...

Damn. Sorry for all the back and forth :/
Sending a new PR.

Metadata