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 ## 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**_ * execute _**git clone ssh://ansibledemo@96.82.16.164:/srv/git/ansible.git**_ - pw C*******9 * execute _**cd ansible**_ * 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 _**PUBKEY="'$(<~/.ssh/id_rsa.pub)'" && ansible-playbook -i hosts deploy_authorized_keys.yml --ask-pass --extra-vars="pubkey=$PUBKEY"**_ it will prompt for the password which is still 'raspberry * execute _**ansible-playbook -i hosts main.yaml --ask-become-pass**_ it will ask for the password which is still 'raspberry' * 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. ### Prerequisites What things you need to install the software and how to install them ``` 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