Ansible Masterbook

Prerequisite

Install git and ansible on the control machine:

Via script:

curl -s https://raw.githubusercontent.com/archf/ansible-masterbook/master/ansible-bootstrap.sh | sh

Or manually:

# Debian
apt-get -y install git ansible
# rhel
sudo yum -y install git ansible
# or
sudo dnf install -y git ansible

Alternatively you could install from a unbuntu ppa or from pip to get a most recent version

list of quite stable roles

  • common: meta roles for roles below

    • accounts
    • packages
    • openssh-server
    • ntpd
    • resolv
    • fail2ban
    • ntp
    • disable selinux
  • accounts: create accounts on any machine (requires root)

  • workstation: install package for daily work (this could be splitted eventually) * python * golang * rust * ...

    Currently installs:

    • python3-ipython
    • python3-ipdb
    • python3-devel
    • python-pip
    • inotify-tools-devel
    • pandoc
    • urlview
  • workstation

  • openssh: template sshd-config s samba: configure a simple samba file server

wip:

  • backup
  • collectd
  • ansiblecm: install and configure an ansible control machine
  • network: configure nic on a target
  • openWrt
  • multimedia: install multimedia packages

todo soon:

  • git-install: install from a git repo
  • tar-install: install from a tarball
  • dnsmasq: install and configure dnsmasq

interesting roles from other people

  • gitlab: https://galaxy.ansible.com/list#/roles/516
  • exim: https://galaxy.ansible.com/list#/roles/4842
  • grafana: https://github.com/azavea/ansible-grafana
  • influxdb:

Todo:

roles to find or create

  • remote-desktop
  • ansible: install and configure ansible
  • postgress
  • powerdns-recursor
  • powerdns-authoritative
  • collectd or python-diammond
  • influx-db
  • graphite or graphana
  • kodi
  • wikia
  • shinken or nagios
  • vagrant - install vagrant from website
  • ldap
  • redmine
  • cobbler
    • make a special case to install to openwrt from source
  • multimedia: install music or video package
    • vlc
    • asunder
    • easytag
  • pythondev:
  • golangdev:
  • rustdev:

ad-hoc roles

  • dotfiles: update given repos on all targets
  • accounts-remove: remove given accounts on all targets

other tasks

  • ntp
  • fqdn
  • disk partionning (lvm)
  • backup (script from a git repo + cronjob) – one for the os and the other for
  • the data
  • tmpfs (mount /tmp in a tmpfs when there is enough ram ??? i think this doesn’t allow you to suspend to ram)

Thoughts

Some roles should be executed on all machines by default

ex:

  • common
  • accounts
  • fail2ban
  • shinken or nagios
  • backup: install backup scripts
  • collectd or python-diammond
  • suspend_ram: cronjob to suspend machine to ram