Skip to content

Commit

Permalink
unixPB: adds roles xcode_offline and brew to Unix_Playbook
Browse files Browse the repository at this point in the history
The new Xcode_offline role will install xcode from an offline copy in /files dire. The brew role also will install brew on macos. Both rely on installing python on mac machine in advance.
  • Loading branch information
mahdipub committed Mar 12, 2024
1 parent c57a1a2 commit d6921dd
Show file tree
Hide file tree
Showing 6 changed files with 160 additions and 0 deletions.
@@ -0,0 +1,4 @@
download and copy (soft link) xcode offline files heare:
Xcode_12.4.xip
Xcode_13.1.xip
etc.
@@ -0,0 +1,13 @@
---
#########################
# Xcdde offline install #
#########################

# Install Xcode withou need to login with appleID
# Path /Applications/Xcode.app/
# Requires the following variable:
# xcode_version: 12.4 | 13.1 | 13.2.1 | 13.4 | 14.3.1 | 15.0.1

- name: Xcode offline
include_tasks: xcode_offline.yml
tags: xcode_offline
@@ -0,0 +1,48 @@
---
- name: Check xcode version
shell: xcodebuild -version
register: xcodebuild_version
failed_when: false
tags: xcode_offline

- name: Install and configure xcode if not installed
when: "'Xcode ' + xcode_version not in xcodebuild_version.stdout"
tags: xcode_offline
block:

- name: Display xcode version
debug:
var: xcodebuild_version

- name: Copy xcode file to remote host
copy:
src: Xcode_{{ xcode_version }}.xip
dest: '~'
force: false

- name: Install xcode {{ xcode_version }}
shell: |
xip -x ~/Xcode_{{ xcode_version }}.xip
args:
chdir: /Applications
become: true
become_user: "{{ ansible_user }}"

- name: Configure xcode {{ xcode_version }}
become: true
shell: |
xcode-select -s /Applications/Xcode.app/Contents/Developer
xcodebuild -license accept
- name: Clean up after install Xcode
shell: |
rm ~/Xcode_{{ xcode_version }}.xip
- name: Check xcode version
shell: xcodebuild -version
register: output
ignore_errors: true

- name: Check if xcode version is correct
debug:
var: output
@@ -0,0 +1,85 @@
---

- name: Check if Homebrew is already installed
stat:
path: /usr/local/bin/brew
register: b
when: ansible_architecture == "x86_64"
tags: brew

- name: Check if Homebrew is already installed
stat:
path: /opt/homebrew/bin/brew
register: b
when: ansible_architecture == "arm64"
tags: brew

- name: set brew_is_installed
set_fact: brew_is_installed="{{ b.stat.exists }}"
when: b.stat.exists is defined
tags: brew

- name: Install home brew
when: not brew_is_installed
tags: brew
block:
- name: add user j9admin to sudoers
template:
src: sudoers
dest: /etc/sudoers.d/{{ ansible_user }}
become: true

- name: Install home brew
shell: |
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- name: Check brew installation
shell: /usr/local/bin/brew --version
register: check_brew
ignore_errors: true
when: ansible_architecture == "x86_64"

- name: Set brew_is_installed x86_64
set_fact: brew_is_installed="{{ check_brew.rc == 0 }}"
when: check_brew.rc is defined

- name: Check brew installation
shell: /opt/homebrew/bin/brew --version
register: check_brew
ignore_errors: true
when: ansible_architecture == "arm64"

- name: Set brew_is_installed arm64
set_fact: brew_is_installed="{{ check_brew.rc == 0 }}"
when: check_brew.rc is defined

- name: Fail brew installation
fail:
msg: 'brew is not installed! exiting...'
when: not brew_is_installed

- name: Configure brew x86_64
blockinfile:
state: present
insertafter: EOF
dest: ~/.zprofile
marker: "<!-- added by Ansible -->"
content: |
eval $(/usr/local/bin/brew shellenv)
when: ansible_architecture == "x86_64"

- name: Configure brew arm64
blockinfile:
state: present
insertafter: EOF
dest: ~/.zprofile
marker: "<!-- added by Ansible -->"
content: |
eval $(/opt/homebrew/bin/brew shellenv)
when: ansible_architecture == "arm64"

- name: Remove user j9admin from sudoers
file:
path: /etc/sudoers.d/{{ ansible_user }}
state: absent
become: true
@@ -0,0 +1,9 @@
---
########
# brew #
########

- name: Install homebrew
include_tasks: brew.yml
when: ansible_distribution == "MacOSX"
tags: brew
@@ -0,0 +1 @@
{{ ansible_user }} ALL=(ALL) NOPASSWD: ALL

0 comments on commit d6921dd

Please sign in to comment.