jenkinsci / ansible-plugin

Jenkins Ansible plugin
https://plugins.jenkins.io/ansible/
MIT License
227 stars 117 forks source link

multiple inventory files return duplicate named 'inventory' parameter found #239

Open CedricLevasseur opened 3 months ago

CedricLevasseur commented 3 months ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.426.3 OS: Linux - 5.4.17-2136.331.7.el7uek.x86_64 Java: 11.0.23 - Red Hat, Inc. (OpenJDK 64-Bit Server VM) --- ace-editor:1.1 ansible:307.va_1f3ef06575a_ ant:497.v94e7d9fffa_b_9 antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-208.v438351942757 artifactory:4.0.5 authentication-tokens:1.53.v1c90fd9191a_b_ bootstrap4-api:4.6.0-6 bootstrap5-api:5.3.2-3 bouncycastle-api:2.30.1.77-225.v26ea_c9455fd9 branch-api:2.1148.vce12cfcdf090 build-blocker-plugin:1.7.9 build-timeout:1.32 build-with-parameters:76.v9382db_f78962 caffeine-api:3.1.8-133.v17b_1ff2e0599 categorized-view:1.13 checks-api:2.0.2 cloudbees-folder:6.858.v898218f3609d command-launcher:107.v773860566e2e commons-lang3-api:3.13.0-62.v7d18e55f51e2 commons-text-api:1.11.0-95.v22a_d30ee5d36 config-file-provider:968.ve1ca_eb_913f8c credentials:1319.v7eb_51b_3a_c97b_ credentials-binding:657.v2b_19db_7d6e6d data-tables-api:1.13.8-2 display-url-api:2.200.vb_9327d658781 docker-commons:439.va_3cb_0a_6a_fb_29 docker-workflow:572.v950f58993843 durable-task:550.v0930093c4b_a_6 echarts-api:5.4.3-2 email-ext:2.104 extensible-choice-parameter:1.8.1 external-monitor-job:215.v2e88e894db_f8 file-operations:214.v2e7dc7f25757 font-awesome-api:6.5.1-2 git:5.2.1 git-client:4.6.0 git-server:114.v068a_c7cc2574 gitlab-plugin:1.8.0 gradle:2.10 gson-api:2.10.1-15.v0d99f670e0a_7 handlebars:3.0.8 instance-identity:185.v303dc7c645f9 ionicons-api:56.v1b_1c8c49374e ivy:2.5 jackson2-api:2.16.1-373.ve709c6871598 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javadoc:243.vb_b_503b_b_45537 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.9-1 jdk-tool:73.vddf737284550 jersey2-api:2.41-133.va_03323b_a_1396 jfrog:1.5.0 job-import-plugin:3.6 joda-time-api:2.12.7-29.v5a_b_e3a_82269a_ jquery-detached:1.2.1 jquery3-api:3.7.1-1 jsch:0.2.16-86.v42e010d9484b_ json-path-api:2.9.0-33.v2527142f2e1d junit:1259.v65ffcef24a_88 ldap:711.vb_d1a_491714dc locale:431.v3435fa_8f8445 lockable-resources:1232.v512d6c434eb_d mailer:463.vedf8358e006b_ mapdb-api:1.0.9-28.vf251ce40855d mask-passwords:173.v6a_077a_291eb_5 matrix-auth:3.2.1 matrix-project:822.824.v14451b_c0fd42 maven-plugin:3.23 mina-sshd-api-common:2.12.0-90.v9f7fb_9fa_3d3b_ mina-sshd-api-core:2.12.0-90.v9f7fb_9fa_3d3b_ momentjs:1.1.1 pam-auth:1.10 pipeline-build-step:540.vb_e8849e1a_b_d8 pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:704.vc58b_8890a_384 pipeline-input-step:477.v339683a_8d55e pipeline-maven:1376.v18876d10ce9c pipeline-maven-api:1376.v18876d10ce9c pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2175.v76a_fff0a_2618 pipeline-model-declarative-agent:1.1.1 pipeline-model-definition:2.2175.v76a_fff0a_2618 pipeline-model-extensions:2.2175.v76a_fff0a_2618 pipeline-rest-api:2.34 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2175.v76a_fff0a_2618 pipeline-stage-view:2.34 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.8.0 popper-api:1.16.1-3 popper2-api:2.11.6-4 preSCMbuildstep:71.v1f2990a_37e27 publish-over:0.22 publish-over-cifs:0.16 resource-disposer:0.23 run-condition:1.7 scm-api:683.vb_16722fb_b_80b_ script-security:1326.vdb_c154de8669 simple-theme-plugin:176.v39740c03a_a_f5 skip-certificate-check:1.1 slack:684.v833089650554 snakeyaml-api:2.2-111.vc6598e30cc65 ssh-credentials:308.ve4497b_ccd8f4 ssh-slaves:2.948.vb_8050d697fec sshd:3.322.v159e91f6a_550 structs:337.v1b_04ea_4df7c8 subversion:2.17.3 timestamper:1.26 token-macro:400.v35420b_922dcb_ trilead-api:2.133.vfb_8a_7b_9c5dd1 variant:60.v7290fc0eb_b_cd view-job-filters:369.ve0513a_a_f5524 windows-slaves:1.8.1 workflow-aggregator:596.v8c21c963d92d workflow-api:1291.v51fd2a_625da_7 workflow-basic-steps:1042.ve7b_140c4a_e0c workflow-cps:3853.vb_a_490d892963 workflow-cps-global-lib:612.v55f2f80781ef workflow-durable-task-step:1331.vc8c2fed35334 workflow-job:1385.vb_58b_86ea_fff1 workflow-multibranch:773.vc4fe1378f1d5 workflow-scm-step:415.v434365564324 workflow-step-api:657.v03b_e8115821b_ workflow-support:865.v43e78cc44e0d ws-cleanup:0.45 ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Linux

Reproduction steps

1. Given this stage in jenkinsfile

stage('Run ansible playbook : check size partition ') {
            steps{
                script {
                    withCredentials([string(credentialsId: 'ansibleVaultPassword', variable: 'VAULT_PWD')]) {
                        ansiblePlaybook(
                            playbook: 'security-check-size.yml',
                            inventory: "environments/dev/inventory-dev",
                            inventory: "environments/int/inventory-int",
                            inventory: "environments/qa/inventory-qa",
                            inventory: "environments/prod/inventory-prod",
                            hostKeyChecking: false,
                            vaultCredentialsId: "${VAULT_PWD}",
                        )
                    }
                }
            }
  1. When executing the job, the following error appears
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 15: Duplicate named parameter 'inventory' found. at line: 15 column: 29. File: WorkflowScript @ line 15, column 29.
                               playbook: 'security-check-size.yml',

Expected Results

The ansible-playbook documentation specifies : -i, --inventory, --inventory-file(https://docs.ansible.com/ansible/latest/cli/ansible-playbook.html#cmdoption-ansible-playbook-i) specify inventory host path or comma separated host list. –inventory-file is deprecated. This argument may be specified multiple times.

Actual Results

Duplicate named parameter 'inventory' found.

Anything else?

No response

Are you interested in contributing a fix?

I can help confirm resolution or perform testing if needed.

YujiSoftware commented 1 month ago

Workaround

Use additional parameters extras to work around this.

For example:

extras: "--inventory 'environments/dev/inventory-dev' --inventory 'environments/int/inventory-int'"
CedricLevasseur commented 1 month ago

Nice tip ! Thank you.