Как настроить бродячую коробку, чтобы всегда иметь работу cron?

Как настроить конфигурацию Vagrant так, чтобы при подготовке машины ее crontab был автоматически настроен? (бродяга обеспечен в соответствии с шеф-поваром (?) files)

в качестве примера я хотел бы настроить следующий cron:

5 * * * * curl http://www.google.com

1 ответов


базовая подготовка для таких вещей может быть легко выполнена без Chef / Puppet / Ansible и вместо этого использовать оболочку.

на залетный документы покрыть эту базовую подготовку довольно хорошо для их примера того, чтобы загрузить Apache из коробки boostrap.sh.

аналогично вы можете выполнить те же шаги при редактировании Vagrantfile для вызова bootstrap.sh файл при подготовке:

Vagrant.configure("2") do |config|
  ...
  config.vm.provision :shell, path: "bootstrap.sh"
  ...
end

затем вы можете создать bootstrap.sh напильник в том же каталоге, что файл Vagrantfile, который будет содержать что-то вроде:

#!/bin/bash
# Adds a crontab entry to curl google.com every hour on the 5th minute

# Cron expression
cron="5 * * * * curl http://www.google.com"
    # │ │ │ │ │
    # │ │ │ │ │
    # │ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
    # │ │ │ └────────── month (1 - 12)
    # │ │ └─────────────── day of month (1 - 31)
    # │ └──────────────────── hour (0 - 23)
    # └───────────────────────── min (0 - 59)

# Escape all the asterisks so we can grep for it
cron_escaped=$(echo "$cron" | sed s/\*/\\*/g)

# Check if cron job already in crontab
crontab -l | grep "${cron_escaped}"
if [[ $? -eq 0 ]] ;
  then
    echo "Crontab already exists. Exiting..."
    exit
  else
    # Write out current crontab into temp file
    crontab -l > mycron
    # Append new cron into cron file
    echo "$cron" >> mycron
    # Install new cron file
    crontab mycron
    # Remove temp file
    rm mycron
fi

по умолчанию Vagrant provisioners работают как root, поэтому это добавит задание cron к crontab корневого пользователя, предполагая, что оно еще не существует. Если вы хотите добавить его в crontab пользователя vagrant, вам нужно будет запустить provisioner с privileged флаг установлен в false:

config.vm.provision :shell, path: "bootstrap.sh", privileged: false