{"id":25690156,"url":"https://github.com/mweisel/cisco-asav-vagrant-libvirt","last_synced_at":"2026-06-14T08:33:12.554Z","repository":{"id":229240626,"uuid":"231269740","full_name":"mweisel/cisco-asav-vagrant-libvirt","owner":"mweisel","description":"A procedure for creating a Cisco ASAv Vagrant box for the libvirt provider.","archived":false,"fork":false,"pushed_at":"2021-05-28T21:41:30.000Z","size":12,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-18T08:03:59.094Z","etag":null,"topics":["cisco-asa","libvirt-provider","vagrant-box"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mweisel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-01-01T22:15:26.000Z","updated_at":"2022-09-26T17:40:31.000Z","dependencies_parsed_at":"2024-03-22T23:46:52.813Z","dependency_job_id":"329429f6-3285-4dc5-8e8d-9f472cf61859","html_url":"https://github.com/mweisel/cisco-asav-vagrant-libvirt","commit_stats":null,"previous_names":["mweisel/cisco-asav-vagrant-libvirt"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mweisel/cisco-asav-vagrant-libvirt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mweisel%2Fcisco-asav-vagrant-libvirt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mweisel%2Fcisco-asav-vagrant-libvirt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mweisel%2Fcisco-asav-vagrant-libvirt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mweisel%2Fcisco-asav-vagrant-libvirt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mweisel","download_url":"https://codeload.github.com/mweisel/cisco-asav-vagrant-libvirt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mweisel%2Fcisco-asav-vagrant-libvirt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34315072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cisco-asa","libvirt-provider","vagrant-box"],"created_at":"2025-02-24T22:16:34.784Z","updated_at":"2026-06-14T08:33:12.536Z","avatar_url":"https://github.com/mweisel.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"Vagrant\" src=\"https://img.shields.io/badge/vagrant%20-%231563FF.svg?\u0026style=for-the-badge\u0026logo=vagrant\u0026logoColor=white\"/\u003e\n\n# Cisco ASAv Vagrant box\n\nA procedure for creating a Cisco ASAv Vagrant box for the [libvirt](https://libvirt.org) provider.\n\n## Prerequisites\n\n  * [Git](https://git-scm.com)\n  * [Python](https://www.python.org)\n  * [Ansible](https://docs.ansible.com/ansible/latest/index.html)\n  * [libvirt](https://libvirt.org) with client tools\n  * [QEMU](https://www.qemu.org)\n  * [Vagrant](https://www.vagrantup.com) \u003e= 2.2.10\n  * [vagrant-libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt)\n\n\u003e Vagrant version **2.2.16** introduced a bug that *breaks* SSH connectivity - [#12344](https://github.com/hashicorp/vagrant/issues/12344)\n\n## Steps\n\n0\\. Verify the prerequisite tools are installed.\n\n\u003cpre\u003e\n$ \u003cb\u003ewhich git python ansible libvirtd virsh qemu-system-x86_64 vagrant\u003c/b\u003e\n$ \u003cb\u003evagrant plugin list\u003c/b\u003e\nvagrant-libvirt (0.5.1, global)\n\u003c/pre\u003e\n\n1\\. Install the `genisoimage` tool.\n\n\u003e Ubuntu 18.04\n\n\u003cpre\u003e\n$ \u003cb\u003esudo apt install genisoimage\u003c/b\u003e\n\u003c/pre\u003e\n\n\u003e Arch Linux\n\n\u003cpre\u003e\n$ \u003cb\u003esudo pacman -S cdrtools\u003c/b\u003e\n\u003c/pre\u003e\n\n2\\. Log in and download the [Cisco Adaptive Security Virtual Appliance qcow2 package for the Cisco ASAv Virtual Firewall](https://software.cisco.com/download/home/286119613/type) file. Save the file to your `Downloads` directory.\n\n3\\. Copy (and rename) the disk image file to the `/var/lib/libvirt/images` directory.\n\n\u003cpre\u003e\n$ \u003cb\u003esudo cp $HOME/Downloads/asav9-16-1.qcow2 /var/lib/libvirt/images/cisco-asav.qcow2\u003c/b\u003e\n\u003c/pre\u003e\n\n4\\. Modify the file ownership and permissions. Note the owner may differ between Linux distributions.\n\n\u003e Ubuntu 18.04\n\n\u003cpre\u003e\n$ \u003cb\u003esudo chown libvirt-qemu:kvm /var/lib/libvirt/images/cisco-asav.qcow2\u003c/b\u003e\n$ \u003cb\u003esudo chmod u+x /var/lib/libvirt/images/cisco-asav.qcow2\u003c/b\u003e\n\u003c/pre\u003e\n\n\u003e Arch Linux\n\n\u003cpre\u003e\n$ \u003cb\u003esudo chown nobody:kvm /var/lib/libvirt/images/cisco-asav.qcow2\u003c/b\u003e\n$ \u003cb\u003esudo chmod u+x /var/lib/libvirt/images/cisco-asav.qcow2\u003c/b\u003e\n\u003c/pre\u003e\n\n5\\. Clone this GitHub repo and _cd_ into the directory.\n\n\u003cpre\u003e\n$ \u003cb\u003egit clone https://github.com/mweisel/cisco-asav-vagrant-libvirt\u003c/b\u003e\n$ \u003cb\u003ecd cisco-asav-vagrant-libvirt\u003c/b\u003e\n\u003c/pre\u003e\n\n6\\. Create the `day0.iso` file. The file provides the initial configuration for the Cisco ASAv. It will be mounted and read on first boot.\n\n\u003cpre\u003e\n$ \u003cb\u003ecd files\u003c/b\u003e\n$ \u003cb\u003egenisoimage -r -o day0.iso day0-config\u003c/b\u003e\n\u003c/pre\u003e\n\n7\\. Copy the `day0.iso` file to the `/var/lib/libvirt/images` directory.\n\n\u003cpre\u003e\n$ \u003cb\u003esudo cp day0.iso /var/lib/libvirt/images/\u003c/b\u003e\n\u003c/pre\u003e\n\n8\\. Modify the file ownership and permissions.\n\n\u003e Ubuntu 18.04\n\n\u003cpre\u003e\n$ \u003cb\u003esudo chown libvirt-qemu:kvm /var/lib/libvirt/images/day0.iso\u003c/b\u003e\n$ \u003cb\u003esudo chmod u+x /var/lib/libvirt/images/day0.iso\u003c/b\u003e\n\u003c/pre\u003e\n\n\u003e Arch Linux\n\n\u003cpre\u003e\n$ \u003cb\u003esudo chown nobody:kvm /var/lib/libvirt/images/day0.iso\u003c/b\u003e\n$ \u003cb\u003esudo chmod u+x /var/lib/libvirt/images/day0.iso\u003c/b\u003e\n\u003c/pre\u003e\n\n9\\. Create the `boxes` directory.\n\n\u003cpre\u003e\n$ \u003cb\u003emkdir -p $HOME/boxes\u003c/b\u003e\n\u003c/pre\u003e\n\n10\\. Start the `vagrant-libvirt` network (if not already started).\n\n\u003cpre\u003e\n$ \u003cb\u003evirsh -c qemu:///system net-list\u003c/b\u003e\n$ \u003cb\u003evirsh -c qemu:///system net-start vagrant-libvirt\u003c/b\u003e\n\u003c/pre\u003e\n\n11\\. Run the Ansible playbook.\n\n\u003cpre\u003e\n$ \u003cb\u003ecd ..\u003c/b\u003e\n$ \u003cb\u003eansible-playbook main.yml\u003c/b\u003e\n\u003c/pre\u003e\n\n12\\. Copy (and rename) the Vagrant box artifact to the `boxes` directory.\n\n\u003cpre\u003e\n$ \u003cb\u003ecp cisco-asav.box $HOME/boxes/cisco-asav-9.16.1.box\u003c/b\u003e\n\u003c/pre\u003e\n\n13\\. Copy the box metadata file to the `boxes` directory.\n\n\u003cpre\u003e\n$ \u003cb\u003ecp ./files/cisco-asav.json $HOME/boxes/\u003c/b\u003e\n\u003c/pre\u003e\n\n14\\. Change the current working directory to `boxes`.\n\n\u003cpre\u003e\n$ \u003cb\u003ecd $HOME/boxes\u003c/b\u003e\n\u003c/pre\u003e\n\n15\\. Substitute the `HOME` placeholder string in the box metadata file.\n\n\u003cpre\u003e\n$ \u003cb\u003eawk '/url/{gsub(/^ */,\"\");print}' cisco-asav.json\u003c/b\u003e\n\"url\": \"file://\u003cb\u003eHOME\u003c/b\u003e/boxes/cisco-asav-VER.box\"\n\n$ \u003cb\u003esed -i \"s|HOME|${HOME}|\" cisco-asav.json\u003c/b\u003e\n\n$ \u003cb\u003eawk '/url/{gsub(/^ */,\"\");print}' cisco-asav.json\u003c/b\u003e\n\"url\": \"file://\u003cb\u003e/home/marc\u003c/b\u003e/boxes/cisco-asav-VER.box\"\n\u003c/pre\u003e\n\n16\\. Also, substitute the `VER` placeholder string with the Cisco ASA version you're using.\n\n\u003cpre\u003e\n$ \u003cb\u003eawk '/VER/{gsub(/^ */,\"\");print}' cisco-asav.json\u003c/b\u003e\n\"version\": \"\u003cb\u003eVER\u003c/b\u003e\",\n\"url\": \"file:///home/marc/boxes/cisco-asav-\u003cb\u003eVER\u003c/b\u003e.box\"\n\n$ \u003cb\u003esed -i 's/VER/9.16.1/g' cisco-asav.json\u003c/b\u003e\n\n$ \u003cb\u003eawk '/\\\u0026lt;version\\\u0026gt;|url/{gsub(/^ */,\"\");print}' cisco-asav.json\u003c/b\u003e\n\"version\": \"\u003cb\u003e9.16.1\u003c/b\u003e\",\n\"url\": \"file:///home/marc/boxes/cisco-asav-\u003cb\u003e9.16.1\u003c/b\u003e.box\"\n\u003c/pre\u003e\n\n17\\. Add the Vagrant box to the local inventory.\n\n\u003cpre\u003e\n$ \u003cb\u003evagrant box add cisco-asav.json\u003c/b\u003e\n\u003c/pre\u003e\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmweisel%2Fcisco-asav-vagrant-libvirt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmweisel%2Fcisco-asav-vagrant-libvirt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmweisel%2Fcisco-asav-vagrant-libvirt/lists"}