Using Ansible to Manage install and update Apple OSX DHCP clients
-
Are you running this from
/etc/ansible/
? -
@IRJ yes.
-
Ok let's try this. Is your playbook only one file?
#*********************************************************** # Create or append ansible requirements file #*********************************************************** sudo sh -c "echo '- src: /etc/ansible/apple.yml' >> /etc/ansible/requirements.yml" #*********************************************************** # Install the role #*********************************************************** cd /etc/ansible/ sudo ansible-galaxy install -p roles -r /etc/ansible/requirements.yml #*********************************************************** # Run ansible playbook file #*********************************************************** sudo ansible-playbook /etc/ansible/apple.yml
-
By default it installs to
/root/.ansible/roles/geerlingguy.homebrew/
rather than into/etc/ansible/roles
So I copied the file to
/etc/ansible/roles
When running the playbook I get
ERROR! the playbook: apple.yml could not be found
-
This is the sample playbook I'm testing with.
--- - name: Installing 1Password connection: network_cli gather_facts: false hosts: apple_workstations vars: homebrew_installed_packages: - 1password roles: - geerlineguy.homebrew
This yaml file is located at
/etc/ansible/apple.yml
-
@DustinB3403 said in Using Ansible to Manage install and update Apple OSX DHCP clients:
This is the sample playbook I'm testing with.
--- - name: Installing 1Password connection: network_cli gather_facts: false hosts: apple_workstations vars: homebrew_installed_packages: - 1password roles: - geerlineguy.homebrew
This yaml file is located at
/etc/ansible/apple.yml
Try the commands I posted above
-
sudo sh -c "echo '- src: /etc/ansible/apple.yml' >> /etc/ansible/requirements.yml" [root@rocansible01 ansible]# pwd /etc/ansible [root@rocansible01 ansible]# sudo ansible-galaxy install -p roles -r /etc/ansibl e/requirements.yml [WARNING]: - /etc/ansible/apple.yml was NOT installed successfully: the file downloaded was not a tar.gz ERROR! - you can use --ignore-errors to skip failed roles and finish processing the list. [root@rocansible01 ansible]# sudo ansible-playbook /etc/ansible/apple.yml ERROR! the role 'geerlineguy.homebrew' was not found in /etc/ansible/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ ansible/roles:/etc/ansible The error appears to be in '/etc/ansible/apple.yml': line 11, column 7, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: roles: - geerlineguy.homebrew ^ here [root@rocansible01 ansible]#
-
So even without the role (working or my lack of understanding on how to use it), Ansible is starting to look pretty damn nice. No dealing with VNC tools or ARD, sending ad-hoc commands is pretty damn simple too and would solve a large portion of the issues I forsee.
Monthly updates for example.
It would be nice to be able to run the tertiary software updates as well with brew, and I'm still figuring that part out, but this might be a long term solution.
-
Skip the roles for now just delete that from you
apple.yml
Try just this
--- - name: Installing 1Password connection: network_cli gather_facts: false hosts: apple_workstations vars: homebrew_installed_packages: - 1password
-
[WARNING]: Unable to parse /etc/ansible/x.x.x.143 as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' ERROR! Syntax Error while loading YAML. mapping values are not allowed in this context The error appears to be in '/etc/ansible/apple.yml': line 4, column 15, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: -name: Installing 1Password connection: network_cli ^ here
Have a syntax error, but my yaml file certainly appears correct.
--- -name: Installing 1Password connection: network_cli gather_facts: false hosts: x.x.x.143 vars: homebrew_installed_packages: - 1password
-
@DustinB3403 said in Using Ansible to Manage install and update Apple OSX DHCP clients:
[WARNING]: Unable to parse /etc/ansible/x.x.x.143 as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
ERROR! Syntax Error while loading YAML.
mapping values are not allowed in this contextThe error appears to be in '/etc/ansible/apple.yml': line 4, column 15, but may
be elsewhere in the file depending on the exact syntax problem.The offending line appears to be:
-name: Installing 1Password
connection: network_cli
^ hereHave a syntax error, but my yaml file certainly appears correct.
--- -name: Installing 1Password connection: network_cli gather_facts: false hosts: x.x.x.143 vars: homebrew_installed_packages: - 1password
-name -> - name
-
@black3dynamite didn't fix it.
-
So I know this will likely light a flame for someone, but when in the hell is yaml so annoying?
@IRJ how do I check my yaml configuration using the software you recommended, both VSCode and the extension are installed - just not sure how the heck to use yet.
-
Okay so in using the test.yaml file buried within the geerlingguy folder I was able to at least get some progress.
ansible-playbook -i hosts apple.yml PLAY [x.x.x.143] *********************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************** ok: [x.x.x.143] PLAY RECAP ********************************************************************************************************************************************************************************************************************************** x.x.x.143 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
But doesn't seem to install based on what's in the apple.yml file
--- - hosts: 1x.x.x.143 vars: homebrew_clear_cache: true homebrew_installed_packages: - ssh-copy-id # from homebrew/core - nginx-full # from dengi/nginx homebrew_cask_apps: - 1Password # from hombrew/cask
-
@DustinB3403 said in Using Ansible to Manage install and update Apple OSX DHCP clients:
Okay so in using the test.yaml file buried within the geerlingguy folder I was able to at least get some progress.
ansible-playbook -i hosts apple.yml
PLAY [x.x.x.143] ***********************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************
ok: [x.x.x.143]PLAY RECAP **********************************************************************************************************************************************************************************************************************************
x.x.x.143 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0But doesn't seem to install based on what's in the apple.yml file
- hosts: 1x.x.x.143
vars:
homebrew_clear_cache: true
homebrew_installed_packages:
- ssh-copy-id # from homebrew/core
- nginx-full # from dengi/nginx
homebrew_cask_apps:
- 1Password # from hombrew/cask
Oh! I thought you were only using a single file.
Ok let's back up. can you show the folder structure of geerlingguy folder?
- hosts: 1x.x.x.143
-
@DustinB3403 said in Using Ansible to Manage install and update Apple OSX DHCP clients:
So I know this will likely light a flame for someone, but when in the hell is yaml so annoying?
@IRJ how do I check my yaml configuration using the software you recommended, both VSCode and the extension are installed - just not sure how the heck to use yet.
It shows you when there is a formatting error
No error
Error. File lights up red and gives you a tip on how to fix.
-
@IRJ said in Using Ansible to Manage install and update Apple OSX DHCP clients:
@DustinB3403 said in Using Ansible to Manage install and update Apple OSX DHCP clients:
Okay so in using the test.yaml file buried within the geerlingguy folder I was able to at least get some progress.
ansible-playbook -i hosts apple.yml PLAY [x.x.x.143] *********************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************** ok: [x.x.x.143] PLAY RECAP ********************************************************************************************************************************************************************************************************************************** x.x.x.143 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
But doesn't seem to install based on what's in the apple.yml file
--- - hosts: 1x.x.x.143 vars: homebrew_clear_cache: true homebrew_installed_packages: - ssh-copy-id # from homebrew/core - nginx-full # from dengi/nginx homebrew_cask_apps: - 1Password # from hombrew/cask
Oh! I thought you were only using a single file.
Ok let's back up. can you show the folder structure of geerlingguy folder?
To summarize, everything is installed in the default locations.
tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg ├── apple.yml ├── clients ├── hosts ├── requirements.yml ├── roles │ └── geerlingguy.homebrew │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── LICENSE │ ├── meta │ │ └── main.yml │ ├── README.md │ ├── requirements.yml │ ├── tasks │ │ ├── main.yml │ │ └── playbook.yml │ └── tests │ ├── local-testing │ │ ├── playbook.yml │ │ └── README.md │ └── test.yml └── ssh.sh 8 directories, 17 files
-
The clients file and ssh.sh are for a quick deployment of the ssh key to all of my workstations if this works out :-).
But ignore them for now.
-
This is the updated apply.yml file
--- - hosts: apple_workstations vars: homebrew_repo: https://github.com/Homebrew/brew homebrew_prefix: /usr/local homebrew_install_path: "{{ homebrew_prefix }}/Homebrew" homebrew_bin_path: /usr/local/bin homebrew_clear_cache: true homebrew_installed_packages: - ssh-copy-id # from homebrew/core - nginx-full # from dengi/nginx homebrew_cask_apps: - 1password homebrew_taps: - homebrew/cask - { name: denji/nginx, url: 'https://github.com/denji/homebrew-nginx.git' } homebrew_cask_accept_external_apps: true homebrew_cask_appdir: /Applications
It runs without issue, but doesn't actually install
1password
-
@IRJ said in Using Ansible to Manage install and update Apple OSX DHCP clients:
Ok let's try this. Is your playbook only one file?
#*********************************************************** # Create or append ansible requirements file #*********************************************************** sudo sh -c "echo '- src: /etc/ansible/roles/geerlineguy' >> /etc/ansible/requirements.yml" #*********************************************************** # Install the role #*********************************************************** cd /etc/ansible/ sudo ansible-galaxy install -p roles -r /etc/ansible/requirements.yml #*********************************************************** # Run ansible playbook file #*********************************************************** sudo ansible-playbook /etc/ansible/apple.yml
Updated. try this