Table of Contents ================= * [Ansible for DS Financial demo network](#ansible-for-ds-financial-demo-network) * [Current State](#current-state) * [Getting Started](#getting-started) * [Prerequisites](#prerequisites) * [Installing](#installing) * [Running the tests](#running-the-tests) * [Break down into end to end tests](#break-down-into-end-to-end-tests) * [And coding style tests](#and-coding-style-tests) * [Deployment](#deployment) * [Built With](#built-with) * [Contributing](#contributing) * [Versioning](#versioning) * [Authors](#authors) * [Acknowledgments](#acknowledgments) # Ansible for DS Financial demo network Create and configure hosts (typically a Raspberry PI) for sites on demo network. Create and install tools to generate network traffic. **Note:** The traffic generated is only for portal statistics, testing steering, etc. It is **NOT** for performance testing. The following assumptions are made: * All raspberry pi devices are attached to their associated uCPE's * All raspberry pi devices have the proper IP address configured for their uCPE (link below or instructions) * All raspberry pi devices have Internet access, either centralized or DIA * The SD-WAN VPN provides either full mesh connectivity OR the __ansible-host__ defined below is a HUB site with connectivity to all other sites [DS Financial Demo Network](https://wiki.sys.comcast.net/pages/viewpage.action?spaceKey=ETHERNET&title=Demo+Network+Configuration) - Wiki # Current State Currently, this is just a loose collection of some repeatable tasks. The Goal is to evenually be able to be a turnkey solution to spin up a "real" network, generating real traffic: * Configure host name based on inventory (less manual "pi" setup) * Configure DNS resolution by updating hosts files on each PI from inventory. This is much simpler than bothering to set up DNS services * SMB * Currently working. Ansible to copy scripts and set up cron job * Samba Server * install samba * configure share * enable samba server * generate server files in share * FTP * Currently working. Manual configuration * TBD set up server * TBD set up scripts and cron job on clients * Web * Currently working. Manual configuration * TBD setup server * EBD set up scripts and cron job on clients * SIP/Voice * Currently working for both client and server (currently only one direction audio) * Download sipp source * Configure sipp source * Copy scripts and set up cron jobs * Add test to generate some traffic with various DSCP markings using ping to the sipp server * Web application traffic. Note: Must currently be run on separate machines (ie. cannot have Facebook and Youtube on the same box) * Youtube * Currently working. Ansible install of scripts and cron configuration * Facebook * Currently working. Ansible install of scripts and cron configuration * SalesForce * Currently working. Ansible install of scripts and cron jobs * Active Directory Domain (separate from the SMB traffic generation) * Provision a Samba Active Directory Domain Controller * Provision a Samba Active Directory Domain Controller (secondary) - not tested * Provision Samba memeber servers * Fail2Ban * Add Fail2Ban to block ssh attempts ## Getting Started * Boot NOOBS and select the Raspbian Lite option: * On each Pi * Configure network * The Raspberr Pi is configured for DHCP by default If your uCPE does not provide DHCP addresses, you will need to configure a staitc IP address by following the instructions at this site https://www.raspberrypi.org/documentation/configuration/tcpip/README.md * log in as 'pi' with the password 'raspberry' * execute _**sudo update-rc.d ssh enable**_ * execute _**sudo invoke-rc.d ssh start**_ * execute _**sudo apt update -y**_ * Designate one of the Pi's to be the "main" device and do the following * execute _**sudo apt install -y ansible sshpass git**_ * get a copy of repo (requies github account, comcast VPN access, and configured git credentials) * execute _**cd dsfin-ansible**_ * execute _**cp hosts ..**_ copy hosts file outide of git to prevent it from being overwritten on update * execute _**ansible-galaxy collection install -r requirements.yml**_ * execute _**nano ../hosts**_ and follow the instructions in that file to add all of your Pi devices * execute _**ssh-keygen -t rsa**_ you will need to press enter three times to accept the defaults * execute _**ansible-playbook -i ../hosts main.yaml -k -K**_ it will ask for the password which is still 'raspberry then you can enter a different username/password if needed' * after it completes without errors * execute _**ansible-playbook -i ../hosts reboot.yaml**_ and wait for it to complete * execute _**sudo reboot**_ At this point, the configuration of all of the Raspberry Pi devices will be completed and they will start generating traffic as configured while editing the hosts file. ### Additional tools * dhcptest - tool for testing dhcp responses. useful for testing custom options and dhcp in general * samba4 domain Controller * samba4 domain memeber * filebrowser - web-based file transfer/sharing tool * zabbix - configure zabbix clients - install client, push default configuration * tcgui - web gui for configuring the built in kernel tc module. use to generate packet loss, jitter, latency, shaping, etc. * qos - script to generate traffic with varying dscp markings. useful for validating qos configurations ``` Give examples ``` ### Installing A step by step series of examples that tell you how to get a development env running Say what the step will be ``` Give the example ``` And repeat ``` until finished ``` End with an example of getting some data out of the system or using it for a little demo ## Running the tests Explain how to run the automated tests for this system ### Break down into end to end tests Explain what these tests test and why ``` Give an example ``` ### And coding style tests Explain what these tests test and why ``` Give an example ``` ## Deployment Add additional notes about how to deploy this on a live system ## Built With * [Dropwizard](http://www.dropwizard.io/1.0.2/docs/) - The web framework used * [Maven](https://maven.apache.org/) - Dependency Management * [ROME](https://rometools.github.io/rome/) - Used to generate RSS Feeds ## Contributing Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. ## Versioning We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). ## Authors * **Billie Thompson** - *Initial work* - [PurpleBooth](https://github.com/PurpleBooth) See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project. ## Acknowledgments * Hat tip to anyone whose code was used * Inspiration * etc