-
Notifications
You must be signed in to change notification settings - Fork 0
/
houdini_module.yaml
231 lines (195 loc) · 8.38 KB
/
houdini_module.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# This playbook is self contained with its own default variables, but the default variables (vars.yml) can be overidden at your own /secrets/overrides/ansible/collections/firehawkvfx/houdini/vars/main.yml
# This script will query the latest daily or production build with side fx and install it.
# if the file exists in s3, it will be downloaded and installed. aws cli must be configured with a key that has permission to access s3.
# Do not install the cli on cloud nodes with aws account root permissions! A seperate user / key with the minimum s3 permissions required is recommended.
# If the file doesn't exist in the s3 bucket, it will be downloaded from side fx, and then pushed to the bucket after install.
# Example install on an aws instance
# ansible-playbook -i ansible/inventory ansible/collections/ansible_collections/firehawkvfx/houdini/houdini_module.yaml -v --extra-vars "variable_host=role_workstation_centos hostname=cloud_workstation1.firehawkvfx.com"
# Example local install on a RHEL 7.6 / CENTOS workstation / render node.
# ansible-playbook -i ansible/inventory ansible/collections/ansible_collections/firehawkvfx/houdini/houdini_module.yaml -v --extra-vars "variable_host=workstation1 variable_user=deadlineuser hostname=workstation1 ansible_become_pass=sompass"
- hosts: "{{ variable_host | default('role_node_centos') }}"
remote_user: "{{ variable_connect_as_user | default('deadlineuser') }}"
gather_facts: "{{ variable_gather_facts | default('false') }}"
# become: true
vars:
ansible_become_pass: "{{ user_deadlineuser_pw }}"
secrets_path: "{{ playbook_dir }}" # if not defined, retarget to this path. This allows local installs (not cloud) to inherit user prefs.
vars_files_locs: [ "/{{ secrets_path }}/overrides/ansible/collections/ansible_collections/firehawkvfx/houdini/vars/main.yml", "{{ playbook_dir }}/vars/main.yml" ] # The first file found will be used, allowing the one in your secrets location to override defaults.
# consider abs path with:
# {{role_path}}
# vars_files:
# - /deployuser/ansible/group_vars/all/vars
tasks:
- name: test vars_files_locs
debug:
var: vars_files_locs
tags: always
- name: aquire vars from secrets path before using defaults for softnas hosts 1
include_vars: "{{ item }}"
with_first_found: "{{ vars_files_locs }}"
tags:
- always
- name: test connection
debug:
msg: "connection established"
# sync installers from/to s3 bucket. any new houdini versions will be pushed from firehawkgateway to the bucket.
# - hosts: firehawkgateway
# remote_user: deployuser
# gather_facts: "{{ variable_gather_facts | default('false') }}"
# become: true
# vars:
# vars_files_locs: [ "/{{ secrets_path }}/overrides/ansible/collections/ansible_collections/firehawkvfx/houdini/vars/main.yml", "{{ playbook_dir }}/vars/main.yml" ] # The first file found will be used, allowing the one in your secrets location to override defaults.
# # vars_files:
# # - /deployuser/ansible/group_vars/all/vars
# tasks:
# - name: aquire vars from secrets path before using defaults for softnas hosts 1
# include_vars: "{{ item }}"
# with_first_found: "{{ vars_files_locs }}"
# tags:
# - always
# # store deadline components required for submitter.
# - name: Ensure tmp dir exist - HoudiniSubmitter
# file:
# path: /var/tmp/submission/Houdini/Client/{{ item }}
# state: directory
# mode: u+rwX,g+rwX,o-rwx
# owner: deployuser
# group: deployuser
# become: true
# delegate_to: ansible_control
# with_items:
# - otls
# - soho
# tags: install_deadline_db
# - name: Fetch from the remote recursively and save to local
# synchronize:
# src: /opt/Thinkbox/DeadlineRepository10/submission/Houdini/Client/{{ item }}
# dest: /var/tmp/submission/Houdini/Client/
# mode: pull
# recursive: true
# become: yes
# with_items:
# - otls
# - soho
# - DeadlineHoudiniClient.py
# - MainMenuCommon.xml
# - CallDeadlineCommand.py
# tags: install_deadline_db
# - name: Ansible set permissions for items to be copied - /opt/Thinkbox/DeadlineRepository10/submission/... - should not be necesary since root is covered prior, but may fix issues.
# file:
# path: "/opt/Thinkbox/DeadlineRepository10/submission/{{ item }}"
# state: directory
# mode: u=rX,g=rX,o=r
# owner: deadlineuser
# group: syscontrol
# recurse: yes
# become: yes
# with_items:
# - HServer
# - Houdini
# - Nuke
# tags: install_deadline_db
# - name: Ensure tmp dirs exist - submission
# file:
# path: /tmp/submission/{{ item }}
# state: directory
# mode: u+rwX,g+rwX,o-rwx
# owner: deployuser
# group: deployuser
# become: true
# delegate_to: ansible_control
# with_items:
# - HServer
# - Houdini
# - Nuke
# tags: install_deadline_db
# - name: Fetch submission plugins
# synchronize:
# src: "/opt/Thinkbox/DeadlineRepository10/submission/{{ item }}"
# dest: "/tmp/submission/"
# mode: pull
# become: yes
# with_items:
# - HServer
# - Houdini
# - Nuke
# tags: install_deadline_db
### Houdini Install
- hosts: "{{ variable_host | default('role_node_centos') }}"
remote_user: "{{ variable_connect_as_user | default('deadlineuser') }}"
gather_facts: "{{ variable_gather_facts | default('false') }}"
# become: true
vars:
secrets_path: "{{ playbook_dir }}"
vars_files_locs: [ "/{{ secrets_path }}/overrides/ansible/collections/ansible_collections/firehawkvfx/houdini/vars/main.yml", "{{ playbook_dir }}/vars/main.yml" ] # The first file found will be used, allowing the one in your secrets location to override defaults.
variable_user: "deadlineuser"
houdini_install_type: 'node' # type can be node or server
houdini_major_version_list: "{{ houdini_version_list | map(attribute='houdini_major_version') }}"
# vars_files:
# - /deployuser/ansible/group_vars/all/vars
tasks:
- name: aquire vars from secrets path before using defaults
include_vars: "{{ item }}"
with_first_found: "{{ vars_files_locs }}"
tags:
- always
- name: Install Houdini
include_role:
name: houdini_role
apply:
tags:
- install_houdini
tags: always
- name: Configure Hserver
include_role:
name: set_hserver_role
apply:
tags:
- set_hserver
tags: always
- name: Install Deadline
include_role:
name: configure_deadline_houdini_role
apply:
tags:
- install_deadline_db
tags: always
# ### Houdini Deadline Plugin
# - hosts: firehawkgateway
# remote_user: deployuser
# gather_facts: "{{ variable_gather_facts | default('false') }}"
# become: true
# vars:
# my_password: "{{ user_deadlineuser_pw }}"
# no_extension: "{{ deadline_linux_installers_tar | splitext | first }}"
# basename: "{{ no_extension.split('/')[-1] }}"
# houdini_install_type: 'node'
# vars_files_locs: [ "/{{ secrets_path }}/overrides/ansible/collections/ansible_collections/firehawkvfx/houdini/vars/main.yml", "{{ playbook_dir }}/vars/main.yml" ] # The first file found will be used, allowing the one in your secrets location to override defaults.
# # vars_files:
# # - /deployuser/ansible/group_vars/all/vars
# tasks:
# - name: aquire vars from secrets path before using defaults
# include_vars: "{{ item }}"
# with_first_found: "{{ vars_files_locs }}"
# tags:
# - always
# - name: setup houdini plugin in deadline repository for each major version. This identical role use occurs in 2 locations - after deadline install and with install of Houdini
# include_role:
# name: firehawkvfx.deadline.deadlinedb_houdini_plugins
# apply:
# tags:
# - install_deadline_db
# tags:
# - always
# loop: "{{ houdini_major_version_list }}"
# loop_control:
# loop_var: houdini_major_version
# when: houdini_install_type != "server"
# - name: ensure db is still valid. a corrupted db may fail at this point if entryies have not been modified correctly
# shell: |
# # set -x
# cd /opt/Thinkbox/DeadlineDatabase10/mongo/application/bin/
# ./deadline_mongo --sslPEMKeyPassword "{{ deadline_proxy_certificate_password }}" --eval 'printjson(db.getCollectionNames())'
# no_log: true
# become: true
# tags: install_deadline_db