Bird
Raised Fist0
Jenkinsdevops~10 mins

System configuration management in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - System configuration management
Define desired system state
↓
Write configuration scripts
↓
Apply configuration using Jenkins
↓
Jenkins runs scripts on target nodes
↓
Check system state matches desired
↓
Success
This flow shows how Jenkins manages system configuration by applying scripts to target machines and verifying the desired state.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Configure System') {
      steps {
        sh 'ansible-playbook setup.yml'
      }
    }
  }
}
A Jenkins pipeline runs an Ansible playbook to configure the system on target nodes.
Process Table
StepActionCommand RunResultNext Step
1Start Jenkins pipelineN/APipeline startedRun 'Configure System' stage
2Run Ansible playbookansible-playbook setup.ymlPlaybook executed on target nodesCheck playbook result
3Verify configurationN/AConfiguration matches desired statePipeline success
4End pipelineN/ASystem configured successfullyExit
💡 Pipeline ends after successful configuration verification
Status Tracker
VariableStartAfter Step 2After Step 3Final
Pipeline StatusNot startedRunningSuccessSuccess
Configuration StateUnknownApplyingMatchedMatched
Key Moments - 2 Insights
Why does Jenkins run an external tool like Ansible instead of configuring directly?
Jenkins acts as an orchestrator to run configuration scripts like Ansible playbooks, which handle the actual system changes on target nodes. See execution_table step 2 where Jenkins runs the Ansible command.
What happens if the configuration does not match the desired state after running the playbook?
If the configuration does not match, Jenkins can report errors and retry the process. This is implied in the concept_flow where a 'No' branch leads to error reporting and retry.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the pipeline status after step 2?
ARunning
BSuccess
CFailed
DNot started
💡 Hint
Check the 'Pipeline Status' variable in variable_tracker after Step 2
At which step does Jenkins verify the system configuration matches the desired state?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the 'Action' column in execution_table for verification
If the Ansible playbook fails, what would be the next logical step in the flow?
ASkip configuration and continue
BPipeline ends successfully
CReport errors and retry configuration
DIgnore errors and mark success
💡 Hint
Refer to the 'No' branch in the concept_flow diagram after configuration check
Concept Snapshot
System configuration management with Jenkins:
- Define desired state in scripts (e.g., Ansible playbooks)
- Jenkins runs these scripts on target machines
- Verify system matches desired state
- Retry or report errors if mismatch
- Automates consistent system setup
Full Transcript
System configuration management in Jenkins involves defining the desired system state using configuration scripts like Ansible playbooks. Jenkins pipelines run these scripts on target nodes to apply the configuration. After running the scripts, Jenkins verifies if the system matches the desired state. If it does, the pipeline ends successfully. If not, Jenkins can report errors and retry the configuration process. This approach automates and ensures consistent system setup across machines.

Practice

(1/5)
1. What is the main purpose of system configuration management in Jenkins?
easy
A. To write code for Jenkins plugins
B. To monitor Jenkins server performance
C. To automate setting up and maintaining computer systems
D. To create user accounts in Jenkins

Solution

  1. Step 1: Understand system configuration management

    It automates the setup and maintenance of computer systems to keep them consistent.
  2. Step 2: Relate to Jenkins usage

    Jenkins uses this to run tools like Ansible or Puppet to automate system setup.
  3. Final Answer:

    To automate setting up and maintaining computer systems -> Option C
  4. Quick Check:

    System configuration management = automation of system setup [OK]
Hint: Think automation of system setup and maintenance [OK]
Common Mistakes:
  • Confusing system config with Jenkins plugin development
  • Thinking it monitors Jenkins server only
  • Assuming it manages Jenkins user accounts
2. Which Jenkins pipeline step correctly runs an Ansible playbook named setup.yml?
easy
A. sh 'ansible-playbook setup.yml'
B. ansiblePlaybook 'setup.yml'
C. run ansible setup.yml
D. execute 'ansible-playbook setup.yml'

Solution

  1. Step 1: Identify correct Jenkins pipeline syntax for shell commands

    Jenkins uses sh step to run shell commands.
  2. Step 2: Check Ansible command correctness

    The correct command is ansible-playbook setup.yml.
  3. Final Answer:

    sh 'ansible-playbook setup.yml' -> Option A
  4. Quick Check:

    Use sh for shell commands in Jenkins [OK]
Hint: Use 'sh' step for shell commands in Jenkins pipeline [OK]
Common Mistakes:
  • Using non-existent Jenkins steps like ansiblePlaybook
  • Omitting the 'sh' wrapper for shell commands
  • Using incorrect command syntax
3. Given this Jenkins pipeline snippet:
pipeline {
  agent any
  stages {
    stage('Config') {
      steps {
        sh 'ansible-playbook -i inventory setup.yml'
      }
    }
  }
}

What happens when this pipeline runs?
medium
A. Jenkins runs the Ansible playbook setup.yml using the inventory file
B. Jenkins fails because sh cannot run Ansible
C. Jenkins skips the stage because no agent is specified
D. Jenkins runs the playbook but ignores the inventory file

Solution

  1. Step 1: Understand the sh step in Jenkins pipeline

    The sh step runs shell commands on the agent.
  2. Step 2: Analyze the command ansible-playbook -i inventory setup.yml

    This runs the Ansible playbook setup.yml using the specified inventory file.
  3. Final Answer:

    Jenkins runs the Ansible playbook setup.yml using the inventory file -> Option A
  4. Quick Check:

    sh runs shell commands, so Ansible runs as expected [OK]
Hint: Remember sh runs shell commands exactly [OK]
Common Mistakes:
  • Thinking Jenkins cannot run Ansible via shell
  • Assuming agent is missing and stage skips
  • Ignoring the inventory file in command
4. You wrote this Jenkins pipeline step:
sh 'ansible-playbook setup.yml -i inventory'

But the pipeline fails with "command not found" error. What is the likely cause?
medium
A. The playbook setup.yml has syntax errors
B. Ansible is not installed or not in PATH on the Jenkins agent
C. The sh step is incorrect syntax
D. The inventory file is missing

Solution

  1. Step 1: Understand "command not found" error

    This error means the shell cannot find the command ansible-playbook.
  2. Step 2: Check possible causes

    If Ansible is not installed or not in the PATH on the Jenkins agent, this error occurs.
  3. Final Answer:

    Ansible is not installed or not in PATH on the Jenkins agent -> Option B
  4. Quick Check:

    "command not found" means missing executable [OK]
Hint: "command not found" means missing program or PATH issue [OK]
Common Mistakes:
  • Assuming inventory file missing causes command not found
  • Thinking sh syntax is wrong
  • Blaming playbook syntax for command not found
5. You want Jenkins to ensure all your servers have the same configuration using Puppet. Which approach best fits system configuration management in Jenkins?
hard
A. Write Puppet manifests inside Jenkinsfile without running them
B. Manually log into each server and run Puppet commands
C. Use Jenkins only to build software, not for configuration
D. Create a Jenkins pipeline that runs Puppet agent commands on target servers

Solution

  1. Step 1: Understand Jenkins role in system configuration

    Jenkins automates running configuration tools like Puppet on servers.
  2. Step 2: Identify best practice

    Running Puppet agent commands via Jenkins pipeline automates and ensures consistency.
  3. Final Answer:

    Create a Jenkins pipeline that runs Puppet agent commands on target servers -> Option D
  4. Quick Check:

    Automation via Jenkins pipeline is best practice [OK]
Hint: Automate Puppet runs via Jenkins pipeline for consistency [OK]
Common Mistakes:
  • Manually running Puppet defeats automation purpose
  • Ignoring Jenkins for configuration management
  • Writing manifests but not executing them
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard