Deploy akkounts without the application_git cookbook

Use the built-in git resource from Chef instead. poise/application does
not work on modern Chef.
This commit is contained in:
2023-06-28 15:29:03 +02:00
parent 0506b75115
commit b9cf396d42
17 changed files with 1072 additions and 75 deletions
@@ -0,0 +1,77 @@
unified_mode true if respond_to? :unified_mode
provides :homebrew_update
description 'Use the **homebrew_update** resource to manage Homebrew repository updates on MacOS.'
introduced '16.2'
examples <<~DOC
**Update the hombrew repository data at a specified interval**:
```ruby
homebrew_update 'all platforms' do
frequency 86400
action :periodic
end
```
**Update the Homebrew repository at the start of a Chef Infra Client run**:
```ruby
homebrew_update 'update'
```
DOC
# allow bare homebrew_update with no name
property :name, String, default: ''
property :frequency, Integer,
description: 'Determines how frequently (in seconds) Homebrew updates are made. Use this property when the `:periodic` action is specified.',
default: 86_400
default_action :periodic
action_class do
BREW_STAMP_DIR = '/var/lib/homebrew/periodic'.freeze
BREW_STAMP = "#{BREW_STAMP_DIR}/update-success-stamp".freeze
# Determines whether we need to run `homebrew update`
#
# @return [Boolean]
def brew_up_to_date?
::File.exist?(BREW_STAMP) &&
::File.mtime(BREW_STAMP) > Time.now - new_resource.frequency
end
def do_update
directory BREW_STAMP_DIR do
recursive true
end
file BREW_STAMP do
content "BREW::Update::Post-Invoke-Success\n"
action :create_if_missing
end
execute 'brew update' do
command %w(brew update)
default_env true
user Homebrew.owner
notifies :touch, "file[#{BREW_STAMP}]", :immediately
end
end
end
action :periodic do
return unless mac_os_x?
unless brew_up_to_date?
converge_by 'update new lists of packages' do
do_update
end
end
end
action :update do
return unless mac_os_x?
converge_by 'force update new lists of packages' do
do_update
end
end