Go to file
YAMASAKI Masahide 5177f4d2ad Update README.md
2013-10-15 21:59:24 +09:00
group_vars introduce pigz 2013-10-12 23:00:24 +09:00
roles rename main yaml and add description 2013-10-15 21:23:13 +09:00
.gitignore add clone murder-repos role 2013-10-11 23:57:05 +09:00
create_torrent.yml rename main yaml and add description 2013-10-15 21:23:13 +09:00
deploy.yml rename main yaml and add description 2013-10-15 21:23:13 +09:00
LICENSE Initial commit 2013-10-10 17:34:03 -07:00
production rename main yaml and add description 2013-10-15 21:23:13 +09:00
README.md Update README.md 2013-10-15 21:59:24 +09:00
rm_tgz.yml introduce pigz 2013-10-12 23:00:24 +09:00
setup.yml introduce pigz 2013-10-12 23:00:24 +09:00
site.yml rename main yaml and add description 2013-10-15 21:23:13 +09:00
start_seeder.yml add start_*.yml 2013-10-14 21:18:50 +09:00
start_tracker.yml introduce pigz 2013-10-12 23:00:24 +09:00
stop_all_peers.yml rename main yaml and add description 2013-10-15 21:23:13 +09:00
stop_seeder_and_tracker.yml rename main yaml and add description 2013-10-15 21:23:13 +09:00

ansible-lssd

Large scale server deploys using BitTorrent and the BitTornado library by Murder.

DESCRIPTION

ansible-lssd is a method of using Bittorrent (Powered by Murder) to distribute files to a large amount of servers within a production environment.

QUICK START

For the impatient, sudo pip install ansible :

# install pip (Python package manager) and ansible
$ sudo easy_install pip
$ sudo pip install ansible

and add these lines to your group_vars/all:

# deploy tag
tag: Deploy1

# path
seeder_files_path:  ~/builds
destination_path:   /directorypath/hoge/

HOW IT WORKS

Same as the "HOW IT WORKS" of Murder.

CONFIGURATION AND USAGE

You define tracker, seeder and peer server to inventory (./production) file.

All involved servers must have python and pizg installed and the related murder support files (BitTornado, etc.). To upload the support files to the tracker, seeder, and peers, run:

$ ansible-playbook -i prodction setup.yml

By default, these will go in /usr/local/murder in your apps deploy directory. Override this by setting the variable remote_murder_path.

Before deploying, you must start the tracker:

$ ansible-playbook -i prodction start_tracker.yml

At this point you should be able to deploy normally:

$ ansible-playbook -i prodction deploy.yml

MANUAL USAGE (ansible-lssd without a deploy strategy)

Modify a ./production and ./group_vars/all, manually define servers:

./production:

# ansible host
[ansible_host]
localhost ansible_connection=local

# tracker node
[tracker]
10.0.0.1

# seeder node
[seeder]
10.0.0.1

# peer nodes
[peer]
10.1.1.1
10.1.1.2
10.1.1.3

group_vars/all:

# deploy tag
tag: Deploy1

# path
seeder_files_path:  ~/builds
destination_path:   /opt/hoge  # or some other directory

To distribute a directory of files, first make sure that murder is set up on all hosts, then manually run the murder cap tasks:

  1. Start the tracker:
$ ansible-playbook -i prodction start_tracker.yml
  1. Create a torrent from a directory of files on the seeder, and start seeding:
# copy to seeder node
$ scp -r ./builds 10.0.0.1:~/builds

# create torrent file
$ ansible-playbook -i prodction create_torrent.yml

# start seeding
$ ansible-playbook -i prodction start_seeder.yml
  1. Distribute the torrent to all peers:
$ ansible-playbook -i prodction deploy.yml
  1. Stop the seeder and tracker:
$ ansible-playbook -i prodction stop_seeder_and_tracker.yml

When this finishes, all peers will have the files in /opt/hoge/Deploy1

main yamls REFERENCE

  • create_torrent.yml:
    • Create torrent file on seeder node.
  • deploy.yml:
    • Deploy files on peer nodes.
  • rm_tgz.yml:
    • Delete the file deployment of targz in all peer node.
  • setup.yml:
    • Install the software required for each node.
  • site.yml:
    • Run all Playbook deploy from the setup.
  • start_seeder.yml:
    • start seeding.
  • start_tracker.yml:
    • start tracker.
  • stop_all_peers.yml:
    • stop all peer client.
  • stop_seeder_and_tracker.yml:
    • stop seeding and tracker.