cat <<EOFM > /tmp/install_lsync.sh
#!/bin/bash

#Для изначального получения root-прав, попробую вывести строчку под root
echo ""
[[ -z \$DEBUG ]] && apt-get update
[[ -z \$DEBUG ]] && apt-get install -y lsyncd

host=127.0.0.1
port=45873

mkdir /etc/lsyncd
mkdir -p /etc/puppetlabs/code
cat <<EOF |tee /etc/lsyncd/lsyncd.conf.lua
settings {
  statusFile = "/var/log/lsyncd/lsyncd.status",
  logfile    = "/var/log/lsyncd/lsyncd.log",
  nodaemon   = false
}
sync {
  default.rsync,
  source="/etc/puppetlabs/code",
  target="rsync://rsync@\$host:\$port/volume/",
  rsync = {
    compress = true,
    password_file = "/etc/lsyncd/secret",
    links = true,
    times = true,
  },
  exclude={ '/environments/production*','/modules*' },
  delay=3
}
EOF

APPEND_CRON="*/5 * * * * /etc/init.d/lsyncd start"
currentCrontabFilePath="/tmp/currentCron_\$RANDOM"
crontab  -l > \$currentCrontabFilePath;
cat \$currentCrontabFilePath | grep "/etc/init.d/lsyncd start"
if ! grep -q "/etc/init.d/lsyncd start" \$currentCrontabFilePath; then
        echo "\$APPEND_CRON" >> \$currentCrontabFilePath &&
        crontab \$currentCrontabFilePath
fi;

# max_queued_events — максимальное число событий в очереди; default = 16384;
# max_user_instances — сколько инстансов inotify может запустить один пользоваетль; default = 128;
# max_user_watches — сколько файлов может отслеживать один пользоваль; default = 8192.

sysctl -w fs.inotify.max_user_watches=524288 >> /etc/sysctl.conf
sysctl -w fs.inotify.max_user_instances=1024 >> /etc/sysctl.conf

echo "password"|tee /etc/lsyncd/secret;chmod 600 /etc/lsyncd/secret;mkdir -p /var/log/lsyncd
echo "Restart lsyncd..."
service lsyncd restart
echo "State of lsyncd: "
service lsyncd status
tail /var/log/lsyncd/lsyncd.log
echo "Installation complete"
EOFM
bash /tmp/install_lsync.sh
