diff --git a/README.md b/README.md index d5e1ca4..0098479 100644 --- a/README.md +++ b/README.md @@ -35,24 +35,6 @@ Each of these attributes defaults to vagrant since our resources are developed with the Vagrant paradigm. In other words, the user and password declared here should be an admin user with passwordless super-user rights. -## Recipes - -#### ***All macos-cookbook recipes are deprecated and will be removed in a future release.*** - -### Keep Awake - -Prevent macOS from falling asleep, disable the screensaver, reboot upon power failure, -enable wake on LAN, enable remote login (SSH) and adjust several other settings -to always keep macOS on and available. - -**Usage:** `include_recipe 'macos::keep_awake'` - -| Attributes used | Default value | -|-----------------------------------------|-------------------------| -| `node['macos']['remote_login_enabled']` | `true` | -| `node['macos']['network_time_server']` | `'time.windows.com'` | -| `node['macos']['time_zone']` | `'America/Los_Angeles'` | - ## Resources - [`automatic_software_updates`](https://github.com/Microsoft/macos-cookbook/blob/master/documentation/resource_automatic_software_updates.md) diff --git a/attributes/default.rb b/attributes/default.rb index 02ac261..cea2f71 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -1,7 +1,2 @@ default['macos']['admin_user'] = 'vagrant' default['macos']['admin_password'] = 'vagrant' - -default['macos']['remote_login_enabled'] = true - -default['macos']['network_time_server'] = 'time.windows.com' -default['macos']['time_zone'] = 'America/Los_Angeles' diff --git a/kitchen.yml b/kitchen.yml index 9622944..b9c0897 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -67,17 +67,6 @@ suites: controls: - updates-disabled -- name: power-management - provisioner: - enforce_idempotency: true - run_list: - - recipe[macos::keep_awake] - verifier: - controls: - - screensaver-disabled - - remote-administration - - no-sleep - - name: spotlight provisioner: enforce_idempotency: true diff --git a/metadata.rb b/metadata.rb index de7d20d..fb6eafd 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,7 +4,7 @@ maintainer_email 'chef@microsoft.com' license 'MIT' description 'Resources for configuring and provisioning macOS' chef_version '>= 14.0' -version '3.4.3' +version '4.0.0' source_url 'https://github.com/Microsoft/macos-cookbook' issues_url 'https://github.com/Microsoft/macos-cookbook/issues' diff --git a/recipes/keep_awake.rb b/recipes/keep_awake.rb deleted file mode 100644 index 4959aaa..0000000 --- a/recipes/keep_awake.rb +++ /dev/null @@ -1,74 +0,0 @@ -Chef.deprecated(:generic, 'macos::keep_awake is deprecated and will be removed in a future release') - -form_factor = MacOS::System::FormFactor.new(node['hardware']) -environment = MacOS::System::Environment.new(node['virtualization']['systems']) -screensaver = MacOS::System::ScreenSaver.new(node['macos']['admin_user']) - -system_preference 'disable computer sleep' do - preference :computersleep - setting 'Never' -end - -system_preference 'disable display sleep' do - preference :displaysleep - setting 'Never' -end - -system_preference 'disable hard disk sleep' do - preference :harddisksleep - setting 'Never' -end - -system_preference 'restart if the computer becomes unresponsive' do - preference :restartfreeze - setting 'On' -end - -system_preference 'wake the computer when accessed using a network connection' do - preference :wakeonnetworkaccess - setting 'On' - not_if { environment.vm? } -end - -system_preference 'restart after a power failure' do - preference :restartpowerfailure - setting 'On' - not_if { environment.vm? || form_factor.portable? } -end - -system_preference 'pressing power button does not sleep computer' do - preference :allowpowerbuttontosleepcomputer - setting 'Off' - only_if { form_factor.desktop? } -end - -system_preference 'allow remote apple events' do - preference :remoteappleevents - setting 'On' -end - -system_preference 'set the network time server' do - preference :networktimeserver - setting node['macos']['network_time_server'] -end - -system_preference 'set the time zone' do - preference :timezone - setting node['macos']['time_zone'] -end - -system_preference 'enable remote login' do - preference :remotelogin - if node['macos']['remote_login_enabled'] - setting 'On' - else - setting 'Off' - end -end - -defaults 'com.apple.screensaver' do - option '-currentHost write' - settings 'idleTime' => 0 - not_if { screensaver.disabled? } - user node['macos']['admin_user'] -end diff --git a/spec/unit/recipes/keep_awake_spec.rb b/spec/unit/recipes/keep_awake_spec.rb deleted file mode 100644 index de489dc..0000000 --- a/spec/unit/recipes/keep_awake_spec.rb +++ /dev/null @@ -1,100 +0,0 @@ -require 'spec_helper' - -include MacOS::System - -shared_context 'running on bare metal Mac Mini' do - before(:each) do - chef_run.node.automatic['virtualization']['systems'] = { 'vbox' => 'host', 'Parallels' => 'host' } - chef_run.node.automatic['hardware']['machine_model'] = 'Macmini7,1' - end - - shared_examples 'including metal-specific power preferences' do - it 'sets wake on lan' do - chef_run.converge(described_recipe) - expect(chef_run).to set_system_preference('wake the computer when accessed using a network connection') - end - - it 'disables power button sleep' do - chef_run.converge(described_recipe) - expect(chef_run).to set_system_preference('pressing power button does not sleep computer') - end - - it 'sets restart after a power failure' do - chef_run.converge(described_recipe) - expect(chef_run).to set_system_preference('restart after a power failure') - end - - it 'converges successfully on bare metal' do - expect { chef_run }.to_not raise_error - end - end -end - -shared_context 'when running on bare metal MacBook Pro' do - before(:each) do - chef_run.node.automatic['virtualization']['systems'] = { 'vbox' => 'host', 'Parallels' => 'host' } - chef_run.node.automatic['hardware']['machine_model'] = 'MacBookPro14,3' - end - - shared_examples 'including metal-specific power preferences for portables' do - it 'sets wake on lan' do - chef_run.converge(described_recipe) - expect(chef_run).to set_system_preference('wake the computer when accessed using a network connection') - end - - it 'does not set restart after a power failure' do - chef_run.converge(described_recipe) - expect(chef_run).to_not set_system_preference('restart after a power failure') - end - - it 'converges successfully on bare metal' do - expect { chef_run }.to_not raise_error - end - end -end - -shared_context 'running in a Parallels virtual machine' do - before(:each) do - chef_run.node.automatic['virtualization']['systems'] = { 'Parallels' => 'guest' } - chef_run.node.automatic['hardware']['machine_model'] = 'Parallels13,1' - end - - shared_examples 'ignoring metal-specific power preferences' do - it 'does not set wake on lan' do - chef_run.converge(described_recipe) - expect(chef_run).to_not set_system_preference('wake the computer when accessed using a network connection') - end - - it 'skips disabling power button sleep' do - chef_run.converge(described_recipe) - expect(chef_run).to_not set_system_preference('pressing power button does not sleep computer') - end - - it 'does not set restart after a power failure' do - chef_run.converge(described_recipe) - expect(chef_run).to_not set_system_preference('restart after a power failure') - end - it 'converges successfully in a vm' do - expect { chef_run }.to_not raise_error - end - end -end - -describe 'macos::keep_awake' do - let(:chef_run) { ChefSpec::SoloRunner.new } - - describe 'keep_awake in a Parallels VM' do - include_context 'running in a Parallels virtual machine' - it_behaves_like 'ignoring metal-specific power preferences' - end - - describe 'keep_awake on bare metal' do - include_context 'running on bare metal Mac Mini' - it_behaves_like 'including metal-specific power preferences' - end - - describe 'keep_awake on portable bare metal' do - include_context 'when running on bare metal MacBook Pro' - it_behaves_like 'including metal-specific power preferences for portables' - end -end