It is pretty common when starting with Jenkins to have a single server which runs the master and all builds, however Jenkins architecture is fundamentally "Master+Agent". The master is designed to do co-ordination and provide the GUI and API endpoints, and the Agents are designed to perform the work. The reason being that workloads are often best "farmed out" to distributed servers. This may be for scale, or to provide different tools, or build on different target platforms. Another common reason for remote agents is to enact deployments into secured environments (without the master having direct access).
Offical documentation is in the docs
packer is required, see here.
ansible is required, see here.
terraform is required, see here.
make install \
AWS_REGION=ap-northeast-1 \
AWS_AZ=ap-northeast-1c \
VPC_ID=vpc-******** \
AWS_SUBNET=subnet--******** \
KEY_NAME=AWS-VPC-*** \
MASTER_TYPE=t2.small \
WORKERS_TYPE=r4.xlarge \
SOURCE_AMI=ami-************ \
DESIRE_WORKERS=2make clear \
AWS_REGION=ap-northeast-1 \
AWS_AZ=ap-northeast-1c \
VPC_ID=vpc-******** \
AWS_SUBNET=subnet--******** \
KEY_NAME=AWS-VPC-*** \
MASTER_TYPE=t2.small \
WORKERS_TYPE=r4.xlarge \
SOURCE_AMI=ami-************ \
DESIRE_WORKERS=2