geerlingguy.packer-debian
Ansible 角色:Vagrant VirtualBox 的 Packer Debian/Ubuntu 配置
此角色配置 Debian/Ubuntu(无论是最小安装还是完整安装),以准备将其打包为 Vagrant/VirtualBox 或 Vagrant/Vmware_desktop 部署的 .box 文件,使用 Packer 工具。
需求
在通过 Packer 运行此角色之前,您需要确保通过 shell 提供者安装了 Ansible,并完成初步的虚拟机配置(例如,添加 vagrant 用户到适当的组和 sudoers 文件),通常可以通过使用 Kickstart 安装文件(例如 ks.cfg
)或与 Packer 结合的 预置安装 来实现。您 Packer .json 模板的提供者示例数组如下所示:
"provisioners": [
{
"type": "shell",
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E bash '{{.Path}}'",
"script": "scripts/ansible.sh"
},
{
"type": "ansible-local",
"playbook_file": "ansible/main.yml",
"role_paths": [
"/Users/jgeerling/Dropbox/VMs/roles/geerlingguy.packer-debian",
]
}
],
文件至少应包含以下内容:
scripts/ansible.sh:
Ubuntu 16.04 的示例
#!/bin/bash -eux
# 安装 Ansible 存储库和 Ansible。
apt -y install software-properties-common
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible
Debian 8.8 的示例
#!/bin/bash -eux
# 安装 Ansible 存储库和 Ansible。
apt -y install software-properties-common
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
apt -y update
apt -y install ansible
ansible/main.yml:
---
- hosts: all
sudo: yes
gather_facts: yes
roles:
- geerlingguy.packer-debian
您还可以添加另一个 shell 提供者来运行清理,使用 dd
清除空闲空间,但这不是必需的(这只是可以节省 Packer 生成的 .box 文件中的一些磁盘空间)。
如果您想添加其他角色,请确保将其添加到模板 .json 文件中的 role_paths
数组中,然后可以像往常一样在 main.yml
中包含它们。Ansible 配置将在 Linux 环境内通过本地连接运行,因此所有相关文件需要复制到虚拟机中;这部分的配置在模板 .json 文件中。阅读更多内容: Ansible 本地提供者。
角色变量
可用的变量如下列出,并附有默认值(见 defaults/main.yml):
vmware_install_open_vm_tools: false
(仅限 VMware)使用 vmware_install_open_vm_tools
变量,您可以选择将安装何种集成功能组件到 VMware box 中。默认值 (false
) 安装 VMware Tools,而不是 open-vm-tools
。
阅读更多:
依赖关系
无。
示例剧本
---
- hosts: all
roles:
- geerlingguy.packer-debian
许可证
MIT / BSD
作者信息
该角色由 Jeff Geerling 于 2014 年创建,他是 Ansible for DevOps 的作者。
ansible-galaxy install geerlingguy.packer-debian