From 70f0de3ac6dea8cb4cc3bd11d2ffb67e0458bd2e Mon Sep 17 00:00:00 2001 From: dspolleke Date: Sun, 11 Apr 2021 19:57:38 +0200 Subject: [PATCH 1/8] fix tags issue 97 --- tasks/extra-packages.yml | 69 +++++++++++++++++++++------------------- tasks/osx.yml | 1 + 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/tasks/extra-packages.yml b/tasks/extra-packages.yml index 643cd41..9d283c2 100644 --- a/tasks/extra-packages.yml +++ b/tasks/extra-packages.yml @@ -1,34 +1,37 @@ --- -- name: Install global Composer packages. - composer: - command: "{{ (item.state | default('present') == 'absent') | ternary('remove', 'require') }}" - arguments: "{{ item.name | default(item) }} {{ item.version | default('@stable') }}" - # Ansible 2.4 supports `global_command` making `working_dir` optional. - working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}" - with_items: "{{ composer_packages }}" - -- name: Install global NPM packages. - npm: - name: "{{ item.name | default(item) }}" - state: "{{ item.state | default('present') }}" - version: "{{ item.version | default(omit) }}" - global: true - executable: "{{ item.executable | default(omit) }}" - with_items: "{{ npm_packages }}" - -- name: Install global Pip packages. - pip: - name: "{{ item.name | default(item) }}" - state: "{{ item.state | default('present') }}" - version: "{{ item.version | default(omit) }}" - executable: "{{ item.executable | default(omit) }}" - with_items: "{{ pip_packages }}" - -- name: Install global Ruby gems. - gem: - name: "{{ item.name | default(item) }}" - state: "{{ item.state | default('present') }}" - version: "{{ item.version | default(omit) }}" - user_install: false - executable: "{{ item.executable | default(omit) }}" - with_items: "{{ gem_packages }}" +- name: Ensure extra packages + block: + - name: Install global Composer packages. + composer: + command: "{{ (item.state | default('present') == 'absent') | ternary('remove', 'require') }}" + arguments: "{{ item.name | default(item) }} {{ item.version | default('@stable') }}" + # Ansible 2.4 supports `global_command` making `working_dir` optional. + working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}" + loop: "{{ composer_packages }}" + + - name: Install global NPM packages. + npm: + name: "{{ item.name | default(item) }}" + state: "{{ item.state | default('present') }}" + version: "{{ item.version | default(omit) }}" + global: true + executable: "{{ item.executable | default(omit) }}" + loop: "{{ npm_packages }}" + + - name: Install global Pip packages. + pip: + name: "{{ item.name | default(item) }}" + state: "{{ item.state | default('present') }}" + version: "{{ item.version | default(omit) }}" + executable: "{{ item.executable | default(omit) }}" + loop: "{{ pip_packages }}" + + - name: Install global Ruby gems. + gem: + name: "{{ item.name | default(item) }}" + state: "{{ item.state | default('present') }}" + version: "{{ item.version | default(omit) }}" + user_install: false + executable: "{{ item.executable | default(omit) }}" + loop: "{{ gem_packages }}" + tags: ['extra-packages'] diff --git a/tasks/osx.yml b/tasks/osx.yml index ec12cd5..c6c5b45 100644 --- a/tasks/osx.yml +++ b/tasks/osx.yml @@ -3,3 +3,4 @@ - name: Run .osx dotfiles. command: "{{ osx_script }}" changed_when: false + tags: ['osx'] From be8b356174ca6d6c200cb408c00acd99e33023a4 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Sun, 11 Apr 2021 20:16:05 +0200 Subject: [PATCH 2/8] trailing spaces --- tasks/extra-packages.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/extra-packages.yml b/tasks/extra-packages.yml index 9d283c2..d55f78a 100644 --- a/tasks/extra-packages.yml +++ b/tasks/extra-packages.yml @@ -8,7 +8,7 @@ # Ansible 2.4 supports `global_command` making `working_dir` optional. working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}" loop: "{{ composer_packages }}" - + - name: Install global NPM packages. npm: name: "{{ item.name | default(item) }}" @@ -17,7 +17,7 @@ global: true executable: "{{ item.executable | default(omit) }}" loop: "{{ npm_packages }}" - + - name: Install global Pip packages. pip: name: "{{ item.name | default(item) }}" @@ -25,7 +25,7 @@ version: "{{ item.version | default(omit) }}" executable: "{{ item.executable | default(omit) }}" loop: "{{ pip_packages }}" - + - name: Install global Ruby gems. gem: name: "{{ item.name | default(item) }}" From 4dc3e75de2268c9e3779e6ab9dc1aca4dbb3ae71 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Sun, 11 Apr 2021 20:44:58 +0200 Subject: [PATCH 3/8] dock util from https://github.com/enlewof \n Fixed default value for variable, \ncreated block (for tags to work), \nFixed some strong language, \N fixed some shell / command preference (ansible-lint) --- default.config.yml | 2 ++ main.yml | 4 ++++ tasks/dock.yml | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 tasks/dock.yml diff --git a/default.config.yml b/default.config.yml index 8293cc7..82effb6 100644 --- a/default.config.yml +++ b/default.config.yml @@ -5,6 +5,8 @@ configure_dotfiles: true configure_terminal: true configure_osx: true +configure_dock: [] + configure_sudoers: false sudoers_custom_config: '' # Example: diff --git a/main.yml b/main.yml index b35b077..75521fc 100644 --- a/main.yml +++ b/main.yml @@ -37,6 +37,10 @@ - include_tasks: tasks/extra-packages.yml tags: ['extra-packages'] + - include_tasks: tasks/dock.yml + when: configure_dock + tags: ['dock'] + - name: Run configured post-provision ansible task files. include_tasks: "{{ outer_item }}" loop_control: diff --git a/tasks/dock.yml b/tasks/dock.yml new file mode 100644 index 0000000..51c3a26 --- /dev/null +++ b/tasks/dock.yml @@ -0,0 +1,23 @@ +--- +- name: ensure dock items + block: + - name: Install dockutil + homebrew: + name: dockutil + state: present + notify: + - Clear homebrew cache + + - name: Ensure unwanted dock items removed. + command: dockutil --remove '{{ item }}' + ignore_errors: true + loop: "{{ dockitems_to_remove }}" + + - name: Ensure required dock items exist. + shell: dockutil --find '{{ item.name }}' || dockutil --add '{{ item.path }}' + loop: "{{ dockitems_to_persist }}" + + - name: Ensure correct dock order + command: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' + loop: "{{ dockitems_to_persist }}" + tags: ['dock'] From 299c9b7b69ee9373dc105ef845f8497e8276bee2 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Mon, 12 Apr 2021 13:29:34 +0200 Subject: [PATCH 4/8] working dockutil --- ansible.cfg | 2 ++ default.config.yml | 25 +++++++++++++++++++++++-- tasks/adddock.yml | 13 +++++++++++++ tasks/dock.yml | 17 ++++++++++------- tasks/remdock.yml | 14 ++++++++++++++ 5 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 tasks/adddock.yml create mode 100644 tasks/remdock.yml diff --git a/ansible.cfg b/ansible.cfg index 1b00cf9..a6e277c 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,3 +1,5 @@ [defaults] nocows = True roles_path = ./roles:/etc/ansible/roles +stdout_callback = yaml + diff --git a/default.config.yml b/default.config.yml index 82effb6..29ca56c 100644 --- a/default.config.yml +++ b/default.config.yml @@ -5,8 +5,29 @@ configure_dotfiles: true configure_terminal: true configure_osx: true -configure_dock: [] - +configure_dock: True +dockitems_to_remove: + - Launchpad + - Safari + - Messages + - Mail + - Maps + - Photos + - FaceTime + - Calendar + - Contacts + - Reminders + - Notes + - TV + - Music + - Podcasts + - 'App Store' +remove_spacers: true +dockitems_to_persist: + - name: iTerm + path: "/Applications/iTerm.app/" + - name: "Google Chrome" + path: "/Applications/Google Chrome.app/" configure_sudoers: false sudoers_custom_config: '' # Example: diff --git a/tasks/adddock.yml b/tasks/adddock.yml new file mode 100644 index 0000000..40568aa --- /dev/null +++ b/tasks/adddock.yml @@ -0,0 +1,13 @@ +--- +- name: find if dock {{ item }} exists + ansible.builtin.command: + cmd: dockutil --find '{{ item.name }}' + register: dockitem_exists + failed_when: '"No such file or directory" in dockitem_exists.stdout' + changed_when: false + tags: ['dock'] +- name: Ensure dock {{ item }} exists + ansible.builtin.command: + cmd: dockutil --add '{{ item.path }}' + when: dockitem_exists.rc >0 + tags: ['dock'] diff --git a/tasks/dock.yml b/tasks/dock.yml index 51c3a26..627738d 100644 --- a/tasks/dock.yml +++ b/tasks/dock.yml @@ -7,17 +7,20 @@ state: present notify: - Clear homebrew cache - - - name: Ensure unwanted dock items removed. - command: dockutil --remove '{{ item }}' - ignore_errors: true + - name: remove dockitems + ansible.builtin.include_tasks: tasks/remdock.yml loop: "{{ dockitems_to_remove }}" - name: Ensure required dock items exist. - shell: dockutil --find '{{ item.name }}' || dockutil --add '{{ item.path }}' - loop: "{{ dockitems_to_persist }}" + ansible.builtin.include_tasks: tasks/adddock.yml + with_items: "{{ dockitems_to_persist }}" - name: Ensure correct dock order - command: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' + ansible.builtin.command: + cmd: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' + when: + - item.pos is defined + - item.pos length >0 loop: "{{ dockitems_to_persist }}" + tags: ['dock'] diff --git a/tasks/remdock.yml b/tasks/remdock.yml new file mode 100644 index 0000000..777a00d --- /dev/null +++ b/tasks/remdock.yml @@ -0,0 +1,14 @@ +--- +- name: find if dock item exists + ansible.builtin.command: + cmd: dockutil --find '{{ item }}' + register: dockitem_exists + changed_when: false + failed_when: '"No such file or directory" in dockitem_exists.stdout' + tags: ['dock'] +- name: Ensure unwanted dock items removed. + ansible.builtin.command: + cmd: dockutil --remove '{{ item }}' + when: dockitem_exists.rc == 0 + tags: ['dock'] + From 82979a7b302dabe903ab4fd83f39a610a172e716 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Mon, 12 Apr 2021 13:49:12 +0200 Subject: [PATCH 5/8] yamllinter --- default.config.yml | 10 +++++----- tasks/dock.yml | 2 +- tasks/remdock.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/default.config.yml b/default.config.yml index 29ca56c..394f00f 100644 --- a/default.config.yml +++ b/default.config.yml @@ -5,7 +5,7 @@ configure_dotfiles: true configure_terminal: true configure_osx: true -configure_dock: True +configure_dock: true dockitems_to_remove: - Launchpad - Safari @@ -24,10 +24,10 @@ dockitems_to_remove: - 'App Store' remove_spacers: true dockitems_to_persist: - - name: iTerm - path: "/Applications/iTerm.app/" - - name: "Google Chrome" - path: "/Applications/Google Chrome.app/" + - name: iTerm + path: "/Applications/iTerm.app/" + - name: "Google Chrome" + path: "/Applications/Google Chrome.app/" configure_sudoers: false sudoers_custom_config: '' # Example: diff --git a/tasks/dock.yml b/tasks/dock.yml index 627738d..20cebd0 100644 --- a/tasks/dock.yml +++ b/tasks/dock.yml @@ -16,7 +16,7 @@ with_items: "{{ dockitems_to_persist }}" - name: Ensure correct dock order - ansible.builtin.command: + ansible.builtin.command: cmd: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' when: - item.pos is defined diff --git a/tasks/remdock.yml b/tasks/remdock.yml index 777a00d..c22bd0d 100644 --- a/tasks/remdock.yml +++ b/tasks/remdock.yml @@ -6,9 +6,9 @@ changed_when: false failed_when: '"No such file or directory" in dockitem_exists.stdout' tags: ['dock'] + - name: Ensure unwanted dock items removed. ansible.builtin.command: cmd: dockutil --remove '{{ item }}' when: dockitem_exists.rc == 0 tags: ['dock'] - From 6549a14014711db8e8554178897dca5028114e77 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Mon, 12 Apr 2021 17:37:55 +0200 Subject: [PATCH 6/8] requested changes --- default.config.yml | 42 ++++++++++++++++++++++-------------------- main.yml | 2 +- tasks/dock.yml | 42 +++++++++++++++++++----------------------- 3 files changed, 42 insertions(+), 44 deletions(-) diff --git a/default.config.yml b/default.config.yml index 394f00f..1d90117 100644 --- a/default.config.yml +++ b/default.config.yml @@ -5,29 +5,31 @@ configure_dotfiles: true configure_terminal: true configure_osx: true -configure_dock: true -dockitems_to_remove: - - Launchpad - - Safari - - Messages - - Mail - - Maps - - Photos - - FaceTime - - Calendar - - Contacts - - Reminders - - Notes - - TV - - Music - - Podcasts - - 'App Store' -remove_spacers: true +configure_dock: false +dockitems_to_remove: [] +# Example: to remove all / some items added by default on Big Sur uncomment use example below +# dockitems_to_remove: +# - Launchpad +# - Safari +# - Messages +# - Mail +# - Maps +# - Photos +# - FaceTime +# - Calendar +# - Contacts +# - Reminders +# - Notes +# - TV +# - Music +# - Podcasts +# - 'App Store' + dockitems_to_persist: - - name: iTerm - path: "/Applications/iTerm.app/" - name: "Google Chrome" path: "/Applications/Google Chrome.app/" + - name: "Sublime Text" + path: "/Applications/Sublime Text.app/" configure_sudoers: false sudoers_custom_config: '' # Example: diff --git a/main.yml b/main.yml index 75521fc..15a253c 100644 --- a/main.yml +++ b/main.yml @@ -37,7 +37,7 @@ - include_tasks: tasks/extra-packages.yml tags: ['extra-packages'] - - include_tasks: tasks/dock.yml + - import_tasks: tasks/dock.yml when: configure_dock tags: ['dock'] diff --git a/tasks/dock.yml b/tasks/dock.yml index 20cebd0..c617e46 100644 --- a/tasks/dock.yml +++ b/tasks/dock.yml @@ -1,26 +1,22 @@ --- -- name: ensure dock items - block: - - name: Install dockutil - homebrew: - name: dockutil - state: present - notify: - - Clear homebrew cache - - name: remove dockitems - ansible.builtin.include_tasks: tasks/remdock.yml - loop: "{{ dockitems_to_remove }}" +- name: Install dockutil + homebrew: + name: dockutil + state: present + notify: + - Clear homebrew cache +- name: remove dockitems + ansible.builtin.include_tasks: tasks/remdock.yml + loop: "{{ dockitems_to_remove }}" - - name: Ensure required dock items exist. - ansible.builtin.include_tasks: tasks/adddock.yml - with_items: "{{ dockitems_to_persist }}" +- name: Ensure required dock items exist. + ansible.builtin.include_tasks: tasks/adddock.yml + with_items: "{{ dockitems_to_persist }}" - - name: Ensure correct dock order - ansible.builtin.command: - cmd: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' - when: - - item.pos is defined - - item.pos length >0 - loop: "{{ dockitems_to_persist }}" - - tags: ['dock'] +- name: Ensure correct dock order + ansible.builtin.command: + cmd: dockutil --move '{{ item.name }}' --position '{{ item.pos }}' + when: + - item.pos is defined + - item.pos length >0 + loop: "{{ dockitems_to_persist }}" From 5ecb26666df736a124efa736c44f6ceaf5e6f473 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Mon, 12 Apr 2021 17:44:54 +0200 Subject: [PATCH 7/8] alien changes ;-) --- tasks/extra-packages.yml | 63 +++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/tasks/extra-packages.yml b/tasks/extra-packages.yml index d55f78a..677148b 100644 --- a/tasks/extra-packages.yml +++ b/tasks/extra-packages.yml @@ -1,37 +1,34 @@ --- -- name: Ensure extra packages - block: - - name: Install global Composer packages. - composer: - command: "{{ (item.state | default('present') == 'absent') | ternary('remove', 'require') }}" - arguments: "{{ item.name | default(item) }} {{ item.version | default('@stable') }}" - # Ansible 2.4 supports `global_command` making `working_dir` optional. - working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}" - loop: "{{ composer_packages }}" +- name: Install global Composer packages. + composer: + command: "{{ (item.state | default('present') == 'absent') | ternary('remove', 'require') }}" + arguments: "{{ item.name | default(item) }} {{ item.version | default('@stable') }}" + # Ansible 2.4 supports `global_command` making `working_dir` optional. + working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}" + loop: "{{ composer_packages }}" - - name: Install global NPM packages. - npm: - name: "{{ item.name | default(item) }}" - state: "{{ item.state | default('present') }}" - version: "{{ item.version | default(omit) }}" - global: true - executable: "{{ item.executable | default(omit) }}" - loop: "{{ npm_packages }}" +- name: Install global NPM packages. + npm: + name: "{{ item.name | default(item) }}" + state: "{{ item.state | default('present') }}" + version: "{{ item.version | default(omit) }}" + global: true + executable: "{{ item.executable | default(omit) }}" + loop: "{{ npm_packages }}" - - name: Install global Pip packages. - pip: - name: "{{ item.name | default(item) }}" - state: "{{ item.state | default('present') }}" - version: "{{ item.version | default(omit) }}" - executable: "{{ item.executable | default(omit) }}" - loop: "{{ pip_packages }}" +- name: Install global Pip packages. + pip: + name: "{{ item.name | default(item) }}" + state: "{{ item.state | default('present') }}" + version: "{{ item.version | default(omit) }}" + executable: "{{ item.executable | default(omit) }}" + loop: "{{ pip_packages }}" - - name: Install global Ruby gems. - gem: - name: "{{ item.name | default(item) }}" - state: "{{ item.state | default('present') }}" - version: "{{ item.version | default(omit) }}" - user_install: false - executable: "{{ item.executable | default(omit) }}" - loop: "{{ gem_packages }}" - tags: ['extra-packages'] +- name: Install global Ruby gems. + gem: + name: "{{ item.name | default(item) }}" + state: "{{ item.state | default('present') }}" + version: "{{ item.version | default(omit) }}" + user_install: false + executable: "{{ item.executable | default(omit) }}" + loop: "{{ gem_packages }}" From 8e9b8de4cfc0dd49c4182c838580acdb31045775 Mon Sep 17 00:00:00 2001 From: dspolleke Date: Mon, 12 Apr 2021 18:56:21 +0200 Subject: [PATCH 8/8] conditionals are hard --- default.config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.config.yml b/default.config.yml index 1d90117..e602917 100644 --- a/default.config.yml +++ b/default.config.yml @@ -5,7 +5,7 @@ configure_dotfiles: true configure_terminal: true configure_osx: true -configure_dock: false +configure_dock: [] dockitems_to_remove: [] # Example: to remove all / some items added by default on Big Sur uncomment use example below # dockitems_to_remove: