Cloud - packer.io

Voir aussi :

Construction d'images via WebUI Cockpit avec osbuild-composer

https://forge.inrae.fr/gaev/packer

Config

Prereq

~/.aws/config

[default] region = us-east-2 output = table

~/.aws/credentials

[default] aws_access_key_id = AKIAR5WS3MDOSPIUHRU7 aws_secret_access_key =

Exécution

packer/example.json

{ "variables": { "aws_access_key": "", "aws_secret_key": "" }, "provisioners": [{ "type": "ansible", "playbook_file": "../ansible/play-test.yml" }], "builders": [{ "type": "amazon-ebs", "access_key": "{{user `aws_access_key`}}", "secret_key": "{{user `aws_secret_key`}}", "region": "us-east-2", "source_ami_filter": { "filters": { "virtualization-type": "hvm", "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", "root-device-type": "ebs" }, "owners": ["099720109477"], "most_recent": true }, "instance_type": "t2.micro", "ssh_username": "ubuntu", "ami_name": "packer-example {{timestamp}}" }] }

ansible/play-test.yml

--- - name: test1 hosts: all become: true vars: ansible_python_interpreter: /usr/bin/python3 tasks: - name: plop shell: echo plop > /plop
packer validate example.json packer build example.json

Debug

packer build --debug example.json

Pour pouvoir se connecter en SSH sur l'instance.

"ssh_keypair_name": "nom_de_la_clef_presente_sur_aws", "ssh_private_key_file": "/home/admin/.ssh/id_rsa",
ssh_keypair_name	Nom de la pair de clefs présente sur AWS. Utilisé par AWS pour créer l'instance
ssh_private_key_file	Chemin de la clef privée pour que Packer puisse se connecter sur l'instance

Normalement seul ssh_username est nécessaire à la création de l'AMI.

Pour se connecter en SSH sur une instance déjà crée

$ ps -ef |grep ssh
ssh -o ControlMaster=auto -o ControlPersist=30m -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=39087 -o IdentityFile="/tmp/ansible-key896233465" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User="admin" -o ConnectTimeout=10 -o ControlPath=/home/admin/.ansible/cp/d7af4b579b 127.0.0.1 /bin/sh

ssh admin@localhost -i /tmp/ansible-key896233465 -p 39087 /bin/bash ansible-playbook --extra-vars packer_build_name=amazon-ebs -e packer_builder_type=amazon-ebs -i /tmp/packer-provisioner-ansible966542596 /home/admin/workspace/Deploy_AMI_SCM_v2/905239-packebuild/ansible/playbook.yml -e ansible_ssh_private_key_file=/tmp/ansible-key896233465