https://github.com/sergk/vagrant-fuel-puppet-workshop
Provide vagrant-way cluster deployment for developing fuel-ci puppet manifest
https://github.com/sergk/vagrant-fuel-puppet-workshop
Last synced: over 1 year ago
JSON representation
Provide vagrant-way cluster deployment for developing fuel-ci puppet manifest
- Host: GitHub
- URL: https://github.com/sergk/vagrant-fuel-puppet-workshop
- Owner: SergK
- Created: 2014-10-20T08:21:49.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2016-06-22T11:27:38.000Z (about 10 years ago)
- Last Synced: 2025-02-05T12:46:15.813Z (over 1 year ago)
- Language: Ruby
- Homepage: https://review.fuel-infra.org/
- Size: 30.3 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
vagrant-fuel-puppet-workshop
============================
Description:
* Provides Vagrant cluster deployment (using Virtualbox, LXC, libvirt+KVM/QEMU provisioners);
* Configures environment for working with puppet manifests for Fuel CI environment.
## Tested environment
```
Distributor ID: LinuxMint
Description: Linux Mint 17 Qiana
Release: 17
Codename: qiana
```
```
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
```
## Orchestration
* vagrant ( > 1.6.5);
## Virtualization
You can choose any virtualization approach for deploying cluster:
* virtualbox ( > 4.2)
* lxc ( > 1.0.6) + vagrant-lxc plugin (1.0.1)
* libvirt (1.2.2) + qemu-kvm (2.0.0) + vagrant-libvirt plugin (0.0.24) + NFS server (allows to modify code on puppet master directly)
## HowTo:
1. Clone the environment ``git clone https://github.com/SergK/vagrant-fuel-puppet-workshop``
2. ``cd vagrant-fuel-puppet-workshop`` and put manifests in ``puppet-manifests`` directory
3. create ``./puppet-manifests/hiera/common.yaml`` file, you can use ``./puppet-manifests/hiera/example-common.yaml`` as example
4. Choose the virtualization type: virtualbox, lxc or libvirt
* `cd virtualbox/`
* `cd lxc/`
* `cd libvirt/` [recomended]
Each of the above folders contain Vagrantfile and bootstrap.sh
> For customization, please check documentation for each vagrant plugin (sync folders, vms, network, etc)
5. Start pxetool node ``vagrant up pxetool`` (by default virtualbox), this will install puppet master and pxetool
> use `--provider=lxc` or `--provider=libvirt`, if you are going to start other types of vm
6. You can define "roles" (check hiera/roles) for each node from environment variable ``FACTER_ROLE=jenkins_slave vagrant up NODE_NAME --provider=libvirt``
7. ``vagrant ssh`` (by default you will enter _pxetool.test.local_), or ``vagrant ssh NODE_NAME``
## Limitations/Notes
Please keep in mind, that there might be some limitations while working with virtual machines (technologies):
1. in case on `--provider=libvirt`, rsync method was replaced by NFS server, for now manifests appear inside pxetool.test.local over nfs. If you still want to use rsync method, please check [vagrant-libvirt plugin](https://github.com/pradels/vagrant-libvirt) documentation
2. in case on `--provider=libvirt`, dnsmasq should be correctly configured, at least you need to add the domain `test.local` (`virsh net-edit default`), for example:
```
vagrant-libvirt
3b74c6db-8134-47a0-8d01-c9d56a10d560
```
### Project tree structure
```
.
├── libvirt
│ ├── bootstrap.sh
│ └── Vagrantfile
├── lxc
│ ├── bootstrap.sh
│ └── Vagrantfile
├── puppet-manifests
│ ├── bin
│ │ ├── install_modules.sh
│ │ └── install_puppet_master.sh
│ ├── hiera
│ │ ├── common-example.yaml
│ │ └── common.yaml -> common-example.yaml
│ ├── LICENSE
│ ├── manifests
│ │ └── site.pp
│ ├── modules
│ │ ├── apt
│ │ ├── ...
│ │ ├── ...
│ │ ├── ...
│ │ ├── ...
│ │ ├── ...
│ │ └── zypprepo
│ └── tests
│ ├── helpers
│ ├── rc.local
│ ├── run_tests.py
│ ├── run_tests.sh
│ └── tests
├── README.md
└── virtualbox
├── bootstrap.sh
└── Vagrantfile
```