Создать несколько разделов в EBS через HashiCorp Packer
Я пытаюсь получить Amazon AMI и добавить несколько разделов в том EBS, а затем сгенерировать новый AMI, где я должен иметь возможность раскрутить новые экземпляры EC2 с помощью этого вновь созданного AMI. Я пытаюсь сделать это с помощью HashiCorps Packer Tool.
Это вывод, который я ожидаю:
[root@ip-xx-xx-xx-xx ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 200G 0 disk
├─xvda1 202:1 0 30G 0 part /
├─xvda2 202:2 0 165.0G 0 part
│ └─appsvg-lv_root (dm-0) 253:0 0 15G 0 lvm
│ └─appsvg-lv_u001 (dm-1) 253:0 0 50G 0 lvm /u001
│ └─appsvg-lv_u002 (dm-2) 253:0 0 50G 0 lvm /u002
│ └─appsvg-lv_u002 (dm-3) 253:0 0 50G 0 lvm /u003
└─xvda3 202:3 0 5.0G 0 part [SWAP]
Нужно ли использовать chroot_mount или ami_block_device_mappings (массив сопоставлений блочных устройств) или launch_block_device_mappings...
Немного путают с этим... Любая поддержка будет оценена. Спасибо
2 ответа
У меня была точно такая же потребность, и я смог выполнить ее с помощью постпроцессора amazon-import.
Поскольку мне требовалась установка, в которой было меньше пакетов, чем минимальная установка по умолчанию, а также был создан образ, который включал различные разделы для /var, /var/log, /var/log/ Audit, и применил к ним флаги, такие как noexec и nosuid. гораздо проще найти метод, который позволил бы мне использовать файл кикстарта, поскольку он поддерживает все эти параметры во время установки.
Это позволило мне создать образ, как обычно, используя vsphere или virtualbox, и все еще иметь конечный выходной артефакт в качестве AMI. Следующий шаблон упаковщика выполнит это на vsphere. Вы заметите, что в этом шаблоне нет информации о разделе или установке пакета, кроме cloud-init, потому что все это находится в файле кикстарта centos7.cfg, который я написал для этого шаблона.
Одна важная вещь - дать имя своему ami, чтобы в его имени было "centos", и создать учетную запись пользователя в файле кикстарта под названием "centos". Это связано с тем, что EC2 попытается скопировать ключи ssh, выбранные вами при запуске экземпляра, в учетную запись пользователя по умолчанию для вашего типа операционной системы, которая определяется строкой, совпадающей с именем ami, и по умолчанию имеет значение centos для образов операционной системы CentOS.
{
"builders": [{
"type": "vmware-iso",
"name": "centos7",
"guest_os_type": "centos-64",
"iso_checksum_type": "md5",
"iso_checksum": "5848f2fd31c7acf3811ad88eaca6f4aa",
"iso_url": "http://some-server.com/CentOS-7-x86_64-Minimal-1708.iso",
"ssh_username": "root",
"ssh_password": "password",
"floppy_files": [
"centos7.cfg"
],
"boot_command": [
"<wait><esc><esc>",
"linux inst.ks=hd:fd0:/centos7.cfg net.ifnames=0<enter>"
],
"boot_wait": "5s",
"disk_size": 100000,
"vmx_data": {
"cpuid.coresPerSocket": "1",
"ethernet0.present": "true",
"ethernet0.virtualDev": "vmxnet3",
"ethernet0.startConnected": "true",
"ethernet0.addressType": "generated",
"ethernet0.networkName": "VMWARE VLAN",
"virtualhw.version" : "7",
"config.version": "8",
"scsi0.virtualDev": "lsilogic",
"scsi0.present": "TRUE",
"ide1.0.present": "FALSE",
"memsize": "32768",
"numvcpus": "4",
"smc.present": "TRUE",
"hpet0.present": "TRUE",
"ich7m.present": "TRUE"
},
"remote_type": "esx5",
"remote_port": "22",
"remote_host": your.esxi.host.com",
"remote_username": "esxi_username",
"remote_password": "esxi_password",
"remote_datastore": "abcd-efgh-d1234k-sdfkl34",
"headless": false,
"ssh_wait_timeout": "600s",
"ssh_pty": true,
"shutdown_timeout": "60s",
"format": "ova"
}],
"provisioners": [
{
"type": "shell",
"execute_command": "{{ .Vars }} sudo -E bash {{ .Path }}",
"inline": "yum -y install cloud-init",
}
],
"post-processors" : [
[
{
"type": "amazon-import",
"access_key": "...",
"secret_key": "...",
"region": "us-east-1",
"s3_bucket_name": "mys3bucketname",
"license_type": "BYOL",
"ami_name": "something-with-centos-in-it"
}
]
]
}