Install and Configure Jenkins Master and Jenkins Agent via SSH (Part-02)
Part -01 is here :
5. SSH access Master to Agent
5.1 Generate ssh key pair and copy public key to Jenkins agent
part 1 áážáŹ Jenkins Master Setup ááŻááşááźáŽá¸áá˝áŹá¸ááźáŽáááŻááąáŹáˇ Agent áá˛áˇ SSH connection á ááźáŽá¸ááťáááşááźááˇáşááŤáááşá áĄáááşááźáąáᏠhost áážáŹ Generate ááŻááşáááŻááşááŤáááşá ssh-keygen áá˛áˇ ssh key pair áá áşáᯠgenerate ááŻááşáááŻááşááŤáááşá
ssh-keygen -C agent-via-ssh -f agent-via
Private key áá˛áˇ Public key áááŹááŤááááˇáşáááşá Public key áááŻááąáŹáˇ agent áá˛áážáŹááŹá¸ááážáŹááźá áşááźáŽá¸ Private Key áááŻááąáŹáˇ Jenkins master áážáŹ Security Credential áá áşááŻáĄááąáá˛áˇ Create ááŻááşááąá¸ááážáŹááŤá áĄáááşááŻáśá¸ private key ááᯠJenkins agent node áá˛áˇ agent áĄááąáá˛áˇ run áááşáˇ User áá˛áˇ home directory áĄáąáŹááşáážáŹáážááá˛áˇ .ssh/authorized_keys áá˛áážáŹ áááˇáşááąá¸áááŻááşáááşáááŤááźáŽá
sudo vi ~/.ssh/authorized_keys
đPublic Key ááᯠááŽáá˛áážáŹ paste ááťáááŻááşáááşáááŤááźáŽ
notes: ssh-copy-id áááŻáá˛áˇ Commands áááŻáááşá¸ááŻáśá¸áááŻáˇáááŤáááşá
Public key ááᯠJenkins Agent áá˛ááᯠáááˇáşááźáŽá¸ááźáŽáááŻáááşááąáŹáˇ private key áá˛áˇ test ááŻááşááźááˇáşáááŻáˇááááŻááşááŤáááşá
ssh -i <ssh-key-name> <agent-ssh-user>@<agent-host-address>
5.2 Create Jenkins Credentials with SSH private key
Private key áááŻááąáŹáˇ Jenkins Master áá˛áˇ Management console áá˛áážáŹ Security Credential áá áşáᯠáĄááąáá˛áˇ Create ááŻááşááąá¸ááážáŹááŤá jenkins_master_ip:8080 áá˛áˇ ááąáŤáşáááŻááşááźáŽá¸ Login áááşááźáŽá¸ááźáŽáááŻááŹáá˛áˇ áá˝áąáˇáá˝áąáˇááťááşá¸áážáŹáᲠManage Jenkins áá˛áááŻáá˝áŹá¸áááŻááşááŤá
Jenkins Dashboard > Manage Jenkins
ááźáŽá¸áááşááąáŹáˇ Security session áá˛áˇáĄáąáŹááşáážáŹ Credentials áááŻááźáŽá¸áá˝áąááŤááááˇáşáááşá
Go to Security > Credentials
Credentials áá˛áááŻááąáŹááşááźáŽáááŻááŹáá˛áˇ Global áá˛áážáŹáᲠCreate ááŻááşáážáŹ ááááŻáˇ global áááŻáá˛áážáááşááźáŽá¸áááşáááŻááşááŤá
Click on global (create in global domain)
ááźáŽá¸áááşááąáŹáˇ Add Credentials
Add Credentials
SSH Private áááŻááŻáśá¸áážáŹááźá áşáááŻáˇ
Credentials kind ááᯠSSH Username with private key
áááŻáˇáá˝áąá¸ááąá¸áááŻááşááŤá
Credentials kind > Select SSH Username with private key
Credentials Scope áááąáŹáˇ System (Jenkins and nodes only)
Credentials Scope > Select System (Jenkins and nodes only)
ááŽáážáŹáááąáŹáˇ Credential ID áá˛áˇ Jenkins agent áá˛áˇ SSH username áááŻáááˇáşááąá¸ááážáŹááŤá ááŽááąááŹáážáŹ ááťá˝ááşááąáŹáşáááąáŹáˇ Agent áá˛áážáŹ Jenkins áááŻáá˛áˇ username áá˛áˇ create ááŻááşááźáŽá¸ááŹá¸áááŻáˇ jenkins áááŻáˇáᲠáááˇáşááąá¸áááŻááşááŤáááşá Credential ID áááŻááŹáááąáŹáˇ Jenkins Console áá˛áˇ áááźáŹá¸ááąááŹáááą ááąáŤáşááŻáśá¸ááááşáˇ id or name áá áşáᯠáááŻáˇ áážááşáá°áááŻáˇáááŤáááşá áĽááᏠpipeline áá˛áážáŹ credential áá áşááŻááᯠáá°ááŻáśá¸ááťááşáááşáááŻáááş áááşáážááşáá˛áˇáá˛áˇ Credential ID áááŻáá°ááŻáśá¸ááážáŹááŤá
Add Credential id and ssh username
ááźáŽá¸áááşááąáŹáˇ Private Key ááąááŹáážáŹ áĄááŻá Generate ááŻááşáá˛áˇáá˛áˇ SSH Private key ááᯠáááˇáşááąá¸ááážáŹááŤá Add ááᯠáážáááşááźáŽ paste ááťáááŻááşááŤá
Import SSH Private Key
SSH generate ááŻááşáá˛áˇáĄááŤáážáŹ passphrase ááŻáśá¸áá˛áˇáááş passphrase á፠áááˇáşááąá¸ááážáŹááŤá ááźáŽá¸áááşááąáŹáˇ Create ááŻááşáááŻááşáááŻáˇ áááŤááźáŽá
áĄááŻáááŻáááşááąáŹáˇ ááťá˝ááşááąáŹáşáááŻáˇ Create ááŻááşáááŻááşáá˛áˇ Jenkins Credential ááᯠáá˝áąááážáŹááŤá
6. Connect Master to agent
SSH Key pair setup ááŻááşááźáŽá¸ áá˝áŹá¸ááźáŽáááŻáááşááąáŹáˇ Master áááą agent ááᯠSSH connection áááŻááŻáśá¸ááźáŽá¸ Connect ááŻááşááźááˇáşááŤáááşá Manage Jenkins áá˛ááᯠááźááşáá˝áŹá¸áááŻááşá፠System Configuration áá˛áˇ áĄáąáŹááşáážáŹ Nodes áááŻááźáŽá¸ áá˝áąáˇááŤááááˇáşáááş áĄá˛áˇáá˛ááᯠáááşáááŻááşááŤá
Go to Mange Jenkins > System Configuration > Nodes
Add New Node áááŻááźáŽá¸ áĄáá áş Add ááŤáááşá
Add New Node
Node Name áá áşáᯠááąá¸ááŤáááşááážá áşáááşááŹáá áşááŻááąá¸áááŻááşááŤáááşá Permanent Agent ááᯠSelect ááŻááşááźáŽá¸ Create áááŻááźáŽá¸áááşáá˝áŹá¸áááŻááşááŤá
ááŽááąááŹáážáŹ áĄáááşááŻáśá¸ áááááŹá¸ááááˇáşááąááŹáá˝áąáááąáŹáˇ
Remote root directory Labels Launch method
ááŽááŻáśá¸ááŻááŤ
Remote root directory
áááąáŹáˇ Jenkins áá˛áˇ áááşáááşáá˛áˇ process áá˝áą áá˝áąáááŻáááşáá˛áážáŹ run ááᲠáá
áşáááşá¸áĄáŹá¸ááźááˇáş Workspace áá˝áą Configuration áá˝áą pipeline áá˝áą á
áááźááˇáş ááąáŤáşáᎠprocess áá˝áąááᯠáááşááąááŹáážáŹ run ááᲠáááŻááŹáááŻáááşáážááşááąá¸ááážáŹááŤá
Labels
áááąáŹáˇ Pipeline áá
áşááŻááᯠáááş agent ááąáŤáşáážáŹ run ááá˛áááŻááŹááᯠáááşáážááşáá˛áˇááąááŹáážáŹááŻáśá¸ááŤáááşá Jenkinsfile áážáŹ Agent áá˛áˇ Labels ááᯠáá°ááŻáśá¸áááŻááşááŹáá˛áˇ áĄá˛áˇáᎠpipeline áá
áşááŻááŻáśá¸á áá°ááŻáśá¸áááŻááşáá˛áˇ Labels áá˛áˇ áżááşáááŻááşáᏠAgent áážáŹ Run áá˝áŹá¸ááŤáááşá
Launch method
áááąáŹáˇ áážááşá¸ááŤáááşááŽááąááŹáážáŹ SSH Method áááŻáá˛ááŻáśá¸áážáŹááŤ
ááąá¸ááŹá¸á ? ááąá¸áá˝áąáááŻáážáááşááźáŽ Configuration áá áşááŻá áŽáá˛áˇ ááŹáá˝áąáááŻáááŻáááşá¸áááŻááŹáááşá¸ááźááˇáşááźááˇáşáááŻááşááŤáááşá
Remote root directory
áááąáŹáˇ ááťá˝ááşááąáŹáş á Jenkins User áĄáąáŹááşáážáŹ jenkins_agent áááŻáá˛áˇ Directory áá
áşáᯠááąáŹááşááźáŽá¸ áĄá˛áˇ Directory áááŻáá˛áá˝ááşá¸ááąá¸áááŻááşááŤáááşá
Labels
áááąáŹáˇ áážá
áşáááşááŹáá
áşááŻááŻááąá¸áááŻááşááŤá
Launch method
áááąáŹáˇ Lunch agent via SSH
áá˝áąá¸ááąá¸áááŻááşááŤáááşá
Lunch method SSH áááŻáá˝áąá¸áááŻááşááźáŽáááŻáááşááąáŹáˇáá°áá˛áˇáááşáááşáá˛áˇ Configuration áá˝áąá ááŤáááşá
Host ááąááŹáážáŹ Jenkins agent áá˛áˇ address áá áşáᯠáááˇáşáááŤáááşáMaster áá˛áˇ connecton ááááąáá˛áˇ Private IP Address áááŻáááşá¸áááŤáááşá
ááźáŽá¸áááşááąáŹáˇ áĄááąáŤáşáážáŹ Create ááŻááşáá˛áˇáá˛áˇ Credential áá˛áˇ Credential ID ááᯠáá˝áąáˇáááŤááááˇáşáááşá áá˝áąá¸áááŻááşááŤá áĄáąáŹááşááŻáśá¸áážáŹáááąáŹáˇ SSH Host Key Verification ááᯠnon verifying
áá˝áąá¸ááŹá¸áááŻááşááŤáááş Production áĄáá˝ááşáááŻáááşááąáŹáˇ Recommend áááąá¸ááŤáá°á¸ áááźáŹá¸áááşá¸áááşá¸ááŻáśá¸áááŻáˇáááŤáááşá
notes: host key non verifying: not recommend for prod
ááŤáá˝áąááźáŽá¸áá˝áŹá¸ááźáŽáááŻáááşááąáŹáˇáááŤááźáŽ áááźáŹá¸ setting áá˝áą áááşááŻááşááťááşáááşá¸ááŻááşáááŻááşááŤáááşá
áĄáŹá¸ááŻáśá¸ááźáŽá¸áááŻáˇ Save ááźáŽá¸ááŹáá˛áˇ Nodes ááŽááᯠááźááşáá˝áŹá¸áááŻááşá፠ááźáŽá¸áááş Add áááŻááşáá˛áˇ Node áá˛ááᯠáááşááźááˇáşááŤ
áĄáááşá Agent á running áááźá áşááąáá°á¸áááŻáááşááąáŹáˇ Lunch agent áážáááşááąá¸áááŻááşááŤá
ááźáŽá¸áááşááąáŹáˇ Agent connection logs áá˝áąááᯠConsole logs áááą ááźááˇáşáááŻááşááŤáááşá
Agent running ááźá áşááąáááşááąáŹáˇ ááŽááŻáśá áśáĄáááŻááşá¸áá˝áąáˇááážáŹá፠áááŤáááŻáááşááąáŹáˇ Agent ááąáŤáş áážáŹ pipeline job áá˝áą á run áááŻáˇáááŤááźáŽá
áĄááŻáááŻáááşááąáŹáˇ Jenkins Master áá˛áˇ Agent áᏠpipeline job áá˝áą run áááŻáˇáĄáá˝ááş ready ááźá áşáá˝áŹá¸ááŤááźáŽá áĄáŹá¸ááŻáśá¸áᲠáĄáááş Lab áááŻááşá ááşá¸áááşá¸ áĄáááşááźáąááźáááşáááŻáˇááťáąáŹáşáááˇáşááŤáááşá
Thank you for taking the time to read this article! Feel free to connect and share your thoughts or questions. I will also share more on the topic of Jenkins.
Subscribe to my newsletter
Read articles from Wai Yan Soe directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by