'How to pass extra variables to ansible playbook running in a Jenkins pipeline

Here is the pipeline code that I want to execute from Jenkins

pipeline{
    agent { label 'ansible' }
    stages{
        stage('SCM Checkout'){
            steps{
                git branch: 'karthick-test', credentialsId: '9153d6ae-fc0c-4242-a83a-cdc932bd23b4', url: 'https://itstash.xyz.com/scm/myansible/myansible-ansible.git'
            }
        }

        stage('Playbook Execution'){
            steps{
                ansiblePlaybook colorized: true, credentialsId: 'gcs_ssh_key', disableHostKeyChecking: true, extras: '–-extra-vars \'\"targets=${targets}\"\'', installation: 'Ansible', playbook: 'playbooks/check_cpu_usage.yml' }
        }
    }
}

After executing the code from Jenkins, "SCM Checkout" is functioning properly but "Playbook execution" is failing with below error:

[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Playbook Execution)
[Pipeline] ansiblePlaybook
[Ansible-pipeline-reboot] $ ansible-playbook playbooks/check_cpu_usage.yml --private-key /home/jenkins/workspace/Ansible-pipeline-reboot/ssh2990875150802686599.key -u ansibleuser –-extra-vars "targets=myfirstserver"
usage: ansible-playbook [-h] [--version] [-v] [-k]
                        [--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER]
                        [-c CONNECTION] [-T TIMEOUT]
                        [--ssh-common-args SSH_COMMON_ARGS]
                        [--sftp-extra-args SFTP_EXTRA_ARGS]
                        [--scp-extra-args SCP_EXTRA_ARGS]
                        [--ssh-extra-args SSH_EXTRA_ARGS] [--force-handlers]
                        [--flush-cache] [-b] [--become-method BECOME_METHOD]
                        [--become-user BECOME_USER] [-K] [-t TAGS]
                        [--skip-tags SKIP_TAGS] [-C] [--syntax-check] [-D]
                        [-i INVENTORY] [--list-hosts] [-l SUBSET]
                        [-e EXTRA_VARS] [--vault-id VAULT_IDS]
                        [--ask-vault-pass | --vault-password-file VAULT_PASSWORD_FILES]
                        [-f FORKS] [-M MODULE_PATH] [--list-tasks]
                        [--list-tags] [--step] [--start-at-task START_AT_TASK]
                        playbook [playbook ...]
ansible-playbook: error: unrecognized arguments: –-extra-vars "targets=myfirstserver"
FATAL: command execution failed
hudson.AbortException: Ansible playbook execution failed
    at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:262)
    at org.jenkinsci.plugins.ansible.workflow.AnsiblePlaybookStep$AnsiblePlaybookExecution.run(AnsiblePlaybookStep.java:430)
    at org.jenkinsci.plugins.ansible.workflow.AnsiblePlaybookStep$AnsiblePlaybookExecution.run(AnsiblePlaybookStep.java:351)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
    at hudson.security.ACL.impersonate2(ACL.java:449)
    at hudson.security.ACL.impersonate(ACL.java:461)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: Ansible playbook execution failed
Finished: FAILURE

Request you to provide some inputs on how to solve this error



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source