wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install packer
variables.pkr.hcl
variable "image_filter" {
type = string
default = "ubuntu/images/*ubuntu-focal-20.04-amd64-server-*"
}
variable "ssh_account" {
type = string
default = "ubuntu"
}
variables.auto.pkvars.hcl
image_filter_name = "ubuntu/images/*ubuntu-focal-20.04-amd64-server-*"
aws-linux.pkr.hcl
packer {
required_plugins {
amazon = {
version = ">= 0.0.2"
source = "github.com/hashicorp/amazon"
}
}
}
source "amazon-ebs" "linux" {
access_key = "AKI******"
secret_key = "1Oo******"
region = "ap-northeast-2"
profile = "default"
ami_name = "jenkins"
instance_type = "t2.medium"
source_ami_filter {
filters = {
name = var.image_filter
root-device-type = "ebs"
virtualization-type = "hvm"
}
most_recent = true
owners = ["099720109477"]
}
ssh_username = var.ssh_account
#force_deregister = true
}
build {
name = "jenkins"
sources = [
"source.amazon-ebs.linux"
]
provisioner "ansible" {
playbook_file = "./jenkins_build.yaml"
extra_arguments = [
"--become",
]
ansible_env_vars = [
"ANSIBLE_HOST_KEY_CHECKING=False",
]
}
}
jenkins_build.yaml
- hosts: default
tasks:
- shell: sudo apt-get update
ignore_errors: yes
- shell: sudo apt install -y openjdk-11-jdk
- shell: curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
- shell: echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- shell: sudo apt-get update
ignore_errors: yes
- command: apt install -y fontconfig jenkins
- command: apt install -y maven
- command: apt install -y ca-certificates curl gnupg lsb-release
- command: apt install -y python3-pip
- shell: curl https://get.docker.com | sh
- shell: usermod -aG docker ubuntu
- pip:
name:
- docker
- docker-compose
- command: apt install -y ansible
- command: apt install -y python3-pip
- shell: sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
- shell: pip install openshift==0.11
- shell: echo 'ubuntu:ubuntu' | chpasswd
- shell: sudo systemctl restart ssh
- shell: mkdir /home/ubuntu/.kube
- shell: curl -LO https://dl.k8s.io/release/v1.22.8/bin/linux/amd64/kubectl
- shell: sudo install kubectl /usr/local/bin/
packer init .
packer fmt .
packer validate .
packer build .