Ansible role which do similar thing as ansible-pull but
do it with simple git clone and ansible-playbook commands.
Need for this was because ansible-pull doesn't support downloading playbook dependencies from Galaxy before running the playbook.
This playbook might become unnecessary when ansible-pull support it.
Originally based on Stouts.pull. The playbook started to look so much different that decided to split it to own playbook.
The role allows you to setup easily automatic updates for your server with simple-pull.
- Install and configure simple-pull;
- Setup SSH hosts and keys;
- Follow repositories and run ansible playbooks;
- Rotate logs;
pull_enabled: yes # The role is enabled
pull_install_ansible: yes # Should this playbook install Ansible
pull_ansible_ppa: ppa:rquillo/ansible # Ansible ppa repository
pull_user: "{{ansible_ssh_user}}" # Run from user
pull_group: "{{pull_user}}"
pull_user_ssh_home: ~{{pull_user}}/.ssh
pull_prefix: /opt/ansible-pull # Prefix directory
pull_logdir: "{{pull_prefix}}/var/log" # Directory where logs will be stored
pull_workdir: "{{pull_prefix}}/etc/ansible-pull" # Directory where jobs will be runned
pull_fingerprints:
- "bitbucket.org,131.103.20.167 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw=="
- "github.com,204.232.175.90 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="
pull_private_keys: [] # The keys will be copied to server
pull_schedule: '*/15 * * * *' # Schedule crontab
pull_sources: [] # Define your sources to control
# Ex: pull_sources:
# - name: myproject
# repo: git@github.com:Stouts/Django-application.git
# version: develop
# playbook: deploy/playbook.yml
# vars:
# custom_var: value
# Default values
pull_playbook: # Set to related path to main playbook file
pull_extra_vars: {} # Extra variables for pull
# Ex. pull_extra_vars:
# version: 1.2
pull_repo:
pull_version: "HEAD"
pull_only_if_changed: no
pull_inventory: # Inventory hosts (each line will be addded to inventory as is)
- "{{inventory_hostname}} ansible_ssh_host=127.0.0.1"
pull_verbose: v
pull_mail_to: "" # Set to enable notifications about errorsAdd simple-pull to your roles and set vars in your playbook file.
Example:
- hosts: all
roles:
- simple-pull
vars:
pull_user: vagrant
pull_schedule: "* * * * *" # Cron schedule
pull_private_keys: # The key will be copied on server
- "{{inventory_dir}}/keys/deploy"
# Followed repositories
pull_sources:
- name: myproject
repo: git@github.com:Stouts/Django-application.git
version: develop
playbook: deploy/playbook.yml
vars:
custom_var: value
Licensed under the MIT License. See the LICENSE file for details.
Are welcome!