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

#Запросим адрес до rsync, на случай, если puppet будет установлен на другом хосте
read -p "Введите адрес Puppet-сервера, по умолчанию 127.0.0.1:" puppet_ip
if [[ "\$puppet_ip" ]];then
  host=\$puppet_ip
fi;

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,
  insist     = true
}
sync {
  delay = 120,
  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*' }
}
EOF

# удалим старое cron-правило:
# crontab -l -> список задач cron 
# grep -v -> выбор строк, не совпадающих с заданной
# crontab - -> запись результата в crontab
crontab -l | grep -v '/etc/init.d/lsyncd start' | crontab -

# 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"

#Добавим ежедневную ротацию логов lsyncd.
#Будем хранить 10 архивов с логами

cat <<EOF |tee /etc/logrotate.d/lsyncd
/var/log/lsyncd/*log {
    rotate 10
    daily 
    compress 
    missingok
    notifempty
}
EOF

EOFM
bash /tmp/install_lsync.sh