Skip to content

Instantly share code, notes, and snippets.

@m8rge
Last active December 31, 2015 02:49
Show Gist options
  • Save m8rge/7923382 to your computer and use it in GitHub Desktop.
Save m8rge/7923382 to your computer and use it in GitHub Desktop.
chef, будь он неладен
# Создание шаблона с sql созданием бд и пользователя
template "/var/tmp/getmail_create_tables.mysql" do
source "mysql/getmail.sql.erb"
mode "0600"
# только если пользователя бд нет
not_if "mysql -e \"\" -h localhost -P 3306 getmail"
# запускаем на выполнение
notifies :run, "execute[mysql_create_getmail_tables]", :immediately
end
execute "mysql_create_getmail_tables" do
command "/usr/bin/mysql -h localhost -P 3306 < /var/tmp/getmail_create_tables.mysql"
action :nothing
end
# Однако, в данном коде есть ошибка
# Да, первоначально ресурс template будет проверять условие not_if перед тем, как записать файл на диск
# Однако, после этого, если файл уже существует, chef проверит, не получится ли так, что он хочет записать идентичный файл
# Если хеш файла на диске и нового файла совпадают, то запись файла отменяется и notifies :run не происходит.
# А это не та логика, котоую мы хотим получить.
# Правится добавлением
# file "/var/tmp/getmail_create_tables.mysql" do
# action :delete
# end
# перед ресурсом template
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment